Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e83aece3 authored by Jan Blunck's avatar Jan Blunck Committed by Linus Torvalds
Browse files

Use struct path in struct svc_expkey



I'm embedding struct path into struct svc_expkey.

Signed-off-by: default avatarJan Blunck <jblunck@suse.de>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Acked-by: default avatar"J. Bruce Fields" <bfields@fieldses.org>
Cc: Neil Brown <neilb@suse.de>
Cc: Christoph Hellwig <hch@lst.de>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 54775491
Loading
Loading
Loading
Loading
+13 −17
Original line number Original line Diff line number Diff line
@@ -63,10 +63,8 @@ static void expkey_put(struct kref *ref)
	struct svc_expkey *key = container_of(ref, struct svc_expkey, h.ref);
	struct svc_expkey *key = container_of(ref, struct svc_expkey, h.ref);


	if (test_bit(CACHE_VALID, &key->h.flags) &&
	if (test_bit(CACHE_VALID, &key->h.flags) &&
	    !test_bit(CACHE_NEGATIVE, &key->h.flags)) {
	    !test_bit(CACHE_NEGATIVE, &key->h.flags))
		dput(key->ek_dentry);
		path_put(&key->ek_path);
		mntput(key->ek_mnt);
	}
	auth_domain_put(key->ek_client);
	auth_domain_put(key->ek_client);
	kfree(key);
	kfree(key);
}
}
@@ -169,8 +167,7 @@ static int expkey_parse(struct cache_detail *cd, char *mesg, int mlen)
			goto out;
			goto out;


		dprintk("Found the path %s\n", buf);
		dprintk("Found the path %s\n", buf);
		key.ek_mnt = nd.path.mnt;
		key.ek_path = nd.path;
		key.ek_dentry = nd.path.dentry;


		ek = svc_expkey_update(&key, ek);
		ek = svc_expkey_update(&key, ek);
		if (ek)
		if (ek)
@@ -206,7 +203,7 @@ static int expkey_show(struct seq_file *m,
	if (test_bit(CACHE_VALID, &h->flags) && 
	if (test_bit(CACHE_VALID, &h->flags) && 
	    !test_bit(CACHE_NEGATIVE, &h->flags)) {
	    !test_bit(CACHE_NEGATIVE, &h->flags)) {
		seq_printf(m, " ");
		seq_printf(m, " ");
		seq_path(m, ek->ek_mnt, ek->ek_dentry, "\\ \t\n");
		seq_path(m, ek->ek_path.mnt, ek->ek_path.dentry, "\\ \t\n");
	}
	}
	seq_printf(m, "\n");
	seq_printf(m, "\n");
	return 0;
	return 0;
@@ -243,8 +240,8 @@ static inline void expkey_update(struct cache_head *cnew,
	struct svc_expkey *new = container_of(cnew, struct svc_expkey, h);
	struct svc_expkey *new = container_of(cnew, struct svc_expkey, h);
	struct svc_expkey *item = container_of(citem, struct svc_expkey, h);
	struct svc_expkey *item = container_of(citem, struct svc_expkey, h);


	new->ek_mnt = mntget(item->ek_mnt);
	new->ek_path = item->ek_path;
	new->ek_dentry = dget(item->ek_dentry);
	path_get(&item->ek_path);
}
}


static struct cache_head *expkey_alloc(void)
static struct cache_head *expkey_alloc(void)
@@ -814,8 +811,7 @@ static int exp_set_key(svc_client *clp, int fsid_type, u32 *fsidv,
	key.ek_client = clp;
	key.ek_client = clp;
	key.ek_fsidtype = fsid_type;
	key.ek_fsidtype = fsid_type;
	memcpy(key.ek_fsid, fsidv, key_len(fsid_type));
	memcpy(key.ek_fsid, fsidv, key_len(fsid_type));
	key.ek_mnt = exp->ex_path.mnt;
	key.ek_path = exp->ex_path;
	key.ek_dentry = exp->ex_path.dentry;
	key.h.expiry_time = NEVER;
	key.h.expiry_time = NEVER;
	key.h.flags = 0;
	key.h.flags = 0;


@@ -1036,9 +1032,9 @@ exp_export(struct nfsctl_export *nxp)
	/* must make sure there won't be an ex_fsid clash */
	/* must make sure there won't be an ex_fsid clash */
	if ((nxp->ex_flags & NFSEXP_FSID) &&
	if ((nxp->ex_flags & NFSEXP_FSID) &&
	    (!IS_ERR(fsid_key = exp_get_fsid_key(clp, nxp->ex_dev))) &&
	    (!IS_ERR(fsid_key = exp_get_fsid_key(clp, nxp->ex_dev))) &&
	    fsid_key->ek_mnt &&
	    fsid_key->ek_path.mnt &&
	    (fsid_key->ek_mnt != nd.path.mnt ||
	    (fsid_key->ek_path.mnt != nd.path.mnt ||
	     fsid_key->ek_dentry != nd.path.dentry))
	     fsid_key->ek_path.dentry != nd.path.dentry))
		goto finish;
		goto finish;


	if (!IS_ERR(exp)) {
	if (!IS_ERR(exp)) {
@@ -1218,7 +1214,7 @@ static struct svc_export *exp_find(struct auth_domain *clp, int fsid_type,
	if (IS_ERR(ek))
	if (IS_ERR(ek))
		return ERR_CAST(ek);
		return ERR_CAST(ek);


	exp = exp_get_by_name(clp, ek->ek_mnt, ek->ek_dentry, reqp);
	exp = exp_get_by_name(clp, ek->ek_path.mnt, ek->ek_path.dentry, reqp);
	cache_put(&ek->h, &svc_expkey_cache);
	cache_put(&ek->h, &svc_expkey_cache);


	if (IS_ERR(exp))
	if (IS_ERR(exp))
+1 −2
Original line number Original line Diff line number Diff line
@@ -106,8 +106,7 @@ struct svc_expkey {
	int			ek_fsidtype;
	int			ek_fsidtype;
	u32			ek_fsid[6];
	u32			ek_fsid[6];


	struct vfsmount *	ek_mnt;
	struct path		ek_path;
	struct dentry *		ek_dentry;
};
};


#define EX_SECURE(exp)		(!((exp)->ex_flags & NFSEXP_INSECURE_PORT))
#define EX_SECURE(exp)		(!((exp)->ex_flags & NFSEXP_INSECURE_PORT))