All of lore.kernel.org
 help / color / mirror / Atom feed
From: NeilBrown <neilb@suse.de>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: nfs@lists.sourceforge.net, linux-kernel@vger.kernel.org
Cc: "J. Bruce Fields" <bfields@citi.umich.edu>
Cc: J "." Bruce Fields <bfields@citi.umich.edu>
Cc: Neil Brown <neilb@suse.de>
Subject: [PATCH 007 of 20] knfsd: nfsd: provide export lookup wrappers which take a svc_rqst
Date: Tue, 10 Jul 2007 12:24:39 +1000	[thread overview]
Message-ID: <1070710022439.13155@suse.de> (raw)
In-Reply-To: 20070710121949.12548.patches@notabene


From: J. Bruce Fields <bfields@citi.umich.edu>

Split the callers of exp_get_by_name(), exp_find(), and exp_parent()
into those that are processing requests and those that are doing other
stuff (like looking up filehandles for mountd).

No change in behavior, just a (fairly pointless, on its own) cleanup.

(Note this has the effect of making nfsd_cross_mnt() pass
rqstp->rq_client instead of exp->ex_client into exp_find_by_name().
However, the two should have the same value at this point.)

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
Signed-off-by: Neil Brown <neilb@suse.de>

### Diffstat output
 ./fs/nfsd/export.c            |   28 +++++++++++++++++++++++++++-
 ./fs/nfsd/nfsfh.c             |    5 ++---
 ./fs/nfsd/vfs.c               |    5 ++---
 ./include/linux/nfsd/export.h |    7 +++++++
 4 files changed, 38 insertions(+), 7 deletions(-)

diff .prev/fs/nfsd/export.c ./fs/nfsd/export.c
--- .prev/fs/nfsd/export.c	2007-07-10 11:33:32.000000000 +1000
+++ ./fs/nfsd/export.c	2007-07-10 11:34:22.000000000 +1000
@@ -1228,6 +1228,32 @@ exp_find(struct auth_domain *clp, int fs
 	return exp;
 }
 
+/*
+ * Called from functions that handle requests; functions that do work on
+ * behalf of mountd are passed a single client name to use, and should
+ * use exp_get_by_name() or exp_find().
+ */
+struct svc_export *
+rqst_exp_get_by_name(struct svc_rqst *rqstp, struct vfsmount *mnt,
+		struct dentry *dentry)
+{
+	return exp_get_by_name(rqstp->rq_client, mnt, dentry,
+						&rqstp->rq_chandle);
+}
+
+struct svc_export *
+rqst_exp_find(struct svc_rqst *rqstp, int fsid_type, u32 *fsidv)
+{
+	return exp_find(rqstp->rq_client, fsid_type, fsidv,
+						&rqstp->rq_chandle);
+}
+
+struct svc_export *
+rqst_exp_parent(struct svc_rqst *rqstp, struct vfsmount *mnt,
+		struct dentry *dentry)
+{
+	return exp_parent(rqstp->rq_client, mnt, dentry, &rqstp->rq_chandle);
+}
 
 /*
  * Called when we need the filehandle for the root of the pseudofs,
@@ -1243,7 +1269,7 @@ exp_pseudoroot(struct svc_rqst *rqstp, s
 
 	mk_fsid(FSID_NUM, fsidv, 0, 0, 0, NULL);
 
-	exp = exp_find(rqstp->rq_client, FSID_NUM, fsidv, rqstp->rq_chandle);
+	exp = rqst_exp_find(rqstp, FSID_NUM, fsidv);
 	if (PTR_ERR(exp) == -ENOENT)
 		return nfserr_perm;
 	if (IS_ERR(exp))

diff .prev/fs/nfsd/nfsfh.c ./fs/nfsd/nfsfh.c
--- .prev/fs/nfsd/nfsfh.c	2007-07-10 11:20:09.000000000 +1000
+++ ./fs/nfsd/nfsfh.c	2007-07-10 11:34:22.000000000 +1000
@@ -145,7 +145,7 @@ fh_verify(struct svc_rqst *rqstp, struct
 				fh->fh_fsid[1] = fh->fh_fsid[2];
 			}
 			if ((data_left -= len)<0) goto out;
-			exp = exp_find(rqstp->rq_client, fh->fh_fsid_type, datap, &rqstp->rq_chandle);
+			exp = rqst_exp_find(rqstp, fh->fh_fsid_type, datap);
 			datap += len;
 		} else {
 			dev_t xdev;
@@ -156,8 +156,7 @@ fh_verify(struct svc_rqst *rqstp, struct
 			xdev = old_decode_dev(fh->ofh_xdev);
 			xino = u32_to_ino_t(fh->ofh_xino);
 			mk_fsid(FSID_DEV, tfh, xdev, xino, 0, NULL);
-			exp = exp_find(rqstp->rq_client, FSID_DEV, tfh,
-				       &rqstp->rq_chandle);
+			exp = rqst_exp_find(rqstp, FSID_DEV, tfh);
 		}
 
 		error = nfserr_stale;

diff .prev/fs/nfsd/vfs.c ./fs/nfsd/vfs.c
--- .prev/fs/nfsd/vfs.c	2007-07-10 11:34:00.000000000 +1000
+++ ./fs/nfsd/vfs.c	2007-07-10 11:34:22.000000000 +1000
@@ -113,7 +113,7 @@ nfsd_cross_mnt(struct svc_rqst *rqstp, s
 
 	while (follow_down(&mnt,&mounts)&&d_mountpoint(mounts));
 
-	exp2 = exp_get_by_name(exp->ex_client, mnt, mounts, &rqstp->rq_chandle);
+	exp2 = rqst_exp_get_by_name(rqstp, mnt, mounts);
 	if (IS_ERR(exp2)) {
 		err = PTR_ERR(exp2);
 		dput(mounts);
@@ -188,8 +188,7 @@ nfsd_lookup(struct svc_rqst *rqstp, stru
 			dput(dentry);
 			dentry = dp;
 
-			exp2 = exp_parent(exp->ex_client, mnt, dentry,
-					  &rqstp->rq_chandle);
+			exp2 = rqst_exp_parent(rqstp, mnt, dentry);
 			if (PTR_ERR(exp2) == -ENOENT) {
 				dput(dentry);
 				dentry = dget(dparent);

diff .prev/include/linux/nfsd/export.h ./include/linux/nfsd/export.h
--- .prev/include/linux/nfsd/export.h	2007-07-10 11:33:32.000000000 +1000
+++ ./include/linux/nfsd/export.h	2007-07-10 11:34:22.000000000 +1000
@@ -129,10 +129,16 @@ struct svc_export *	exp_get_by_name(stru
 					struct vfsmount *mnt,
 					struct dentry *dentry,
 					struct cache_req *reqp);
+struct svc_export *	rqst_exp_get_by_name(struct svc_rqst *,
+					     struct vfsmount *,
+					     struct dentry *);
 struct svc_export *	exp_parent(struct auth_domain *clp,
 				   struct vfsmount *mnt,
 				   struct dentry *dentry,
 				   struct cache_req *reqp);
+struct svc_export *	rqst_exp_parent(struct svc_rqst *,
+					struct vfsmount *mnt,
+					struct dentry *dentry);
 int			exp_rootfh(struct auth_domain *, 
 					char *path, struct knfsd_fh *, int maxsize);
 __be32			exp_pseudoroot(struct svc_rqst *, struct svc_fh *);
@@ -152,6 +158,7 @@ static inline void exp_get(struct svc_ex
 extern struct svc_export *
 exp_find(struct auth_domain *clp, int fsid_type, u32 *fsidv,
 	 struct cache_req *reqp);
+struct svc_export * rqst_exp_find(struct svc_rqst *, int, u32 *);
 
 #endif /* __KERNEL__ */
 

  parent reply	other threads:[~2007-07-10  2:24 UTC|newest]

Thread overview: 83+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-07-10  2:22 [PATCH 000 of 20] knfsd: Support 'secinfo' exports with related cleanups NeilBrown
2007-07-10  2:22 ` [PATCH 001 of 20] knfsd: nfsd: make all exp_finding functions return -errno's on err NeilBrown
2007-07-10  2:22   ` NeilBrown
2007-07-10  2:23 ` [PATCH 002 of 20] knfsd: nfsd4: build rpcsec_gss whenever nfsd4 is built NeilBrown
2007-07-10  2:23   ` NeilBrown
2007-07-10  2:23 ` [PATCH 003 of 20] knfsd: nfsd4: store pseudoflavor in request NeilBrown
2007-07-10  2:23   ` NeilBrown
2007-07-10  2:23 ` [PATCH 004 of 20] knfsd: nfsd4: parse secinfo information in exports downcall NeilBrown
2007-07-10  2:24 ` [PATCH 005 of 20] knfsd: nfsd4: simplify exp_pseudoroot arguments NeilBrown
2007-07-10  2:24 ` [PATCH 006 of 20] knfsd: nfsd: remove superfluous assignment from nfsd_lookup NeilBrown
2007-07-10  2:24 ` NeilBrown [this message]
2007-07-10  2:24 ` [PATCH 008 of 20] knfsd: nfsd: set rq_client to ip-address-determined-domain NeilBrown
2007-07-10  2:24   ` NeilBrown
2007-07-10  2:25 ` [PATCH 009 of 20] knfsd: nfsd: use ip-address-based domain in secinfo case NeilBrown
2007-07-10  2:25   ` NeilBrown
2007-07-10 16:06   ` J. Bruce Fields
2007-07-10 16:06     ` J. Bruce Fields
2007-07-10  2:25 ` [PATCH 010 of 20] knfsd: nfsd: factor nfsd_lookup into 2 pieces NeilBrown
2007-07-10  2:25   ` NeilBrown
2007-07-10  2:25 ` [PATCH 011 of 20] knfsd: nfsd4: return nfserr_wrongsec NeilBrown
2007-07-10  2:25   ` NeilBrown
2007-07-10  2:26 ` [PATCH 012 of 20] knfsd: nfsd4: make readonly access depend on pseudoflavor NeilBrown
2007-07-10  2:26   ` NeilBrown
2007-07-13  7:27   ` Andrew Morton
2007-07-13  7:27     ` Andrew Morton
2007-07-13  9:54     ` Christoph Hellwig
2007-07-13  9:54       ` Christoph Hellwig
2007-07-10  2:27 ` [PATCH 013 of 20] knfsd: nfsd: factor out code from show_expflags NeilBrown
2007-07-10  2:27   ` NeilBrown
2007-07-13  7:29   ` Andrew Morton
2007-07-13  7:29     ` Andrew Morton
2007-07-18 23:05     ` J. Bruce Fields
2007-07-18 23:05       ` [NFS] " J. Bruce Fields
2007-07-19  0:16       ` Neil Brown
2007-07-19  0:16         ` [NFS] " Neil Brown
2007-07-19 15:35         ` J. Bruce Fields
2007-07-20  2:21           ` Neil Brown
2007-07-20  2:21             ` [NFS] " Neil Brown
2007-07-20  4:22             ` Satyam Sharma
2007-07-20  4:22               ` [NFS] " Satyam Sharma
2007-07-20 22:18             ` [PATCH] knfsd: Fix typo in export display, print uid and gid as unsigned J. Bruce Fields
2007-07-19  0:18       ` [PATCH 013 of 20] knfsd: nfsd: factor out code from show_expflags Andrew Morton
2007-07-19  0:18         ` [NFS] " Andrew Morton
2007-07-10  2:27 ` [PATCH 014 of 20] knfsd: nfsd: display export secinfo information NeilBrown
2007-07-10  2:27   ` NeilBrown
2007-07-10  2:27 ` [PATCH 015 of 20] knfsd: nfsd4: make readonly access depend on pseudoflavor NeilBrown
2007-07-10  2:27   ` NeilBrown
2007-07-13  7:12   ` Andrew Morton
2007-07-13  7:12     ` Andrew Morton
2007-07-13  8:47     ` Andrew Morton
2007-07-10  2:27 ` [PATCH 016 of 20] knfsd: rpc: add gss krb5 and spkm3 oid values NeilBrown
2007-07-10  2:27   ` NeilBrown
2007-07-10  2:28 ` [PATCH 017 of 20] knfsd: nfsd4: implement secinfo NeilBrown
2007-07-10  2:28   ` NeilBrown
2007-07-10  2:28 ` [PATCH 018 of 20] knfsd: nfsd4: secinfo handling without secinfo= option NeilBrown
2007-07-10  2:28   ` NeilBrown
2007-07-10  2:28 ` [PATCH 019 of 20] knfsd: nfsd: allow auth_sys nlm on rpcsec_gss exports NeilBrown
2007-07-10  2:28   ` NeilBrown
2007-07-10  2:28 ` [PATCH 020 of 20] knfsd: nfsd: enforce per-flavor id squashing NeilBrown
2007-07-10  2:28   ` NeilBrown
2007-07-13  7:33 ` [PATCH 000 of 20] knfsd: Support 'secinfo' exports with related cleanups Andrew Morton
2007-07-13  7:33   ` Andrew Morton
2007-07-13 18:10   ` J. Bruce Fields
2007-07-13 18:10     ` J. Bruce Fields
2007-07-13 18:42     ` Andrew Morton
2007-07-13 18:42       ` Andrew Morton
2007-07-18 22:57       ` J. Bruce Fields
2007-07-18 22:57         ` J. Bruce Fields
2007-07-18 22:57         ` [PATCH 1/5] nfsd: fix possible read-ahead cache and export table corruption J. Bruce Fields
2007-07-18 22:57           ` J. Bruce Fields
2007-07-18 22:57           ` J. Bruce Fields
2007-07-18 22:57           ` [PATCH 2/5] nfsd: return errors, not NULL, from export functions J. Bruce Fields
2007-07-18 22:57             ` J. Bruce Fields
2007-07-18 22:57             ` J. Bruce Fields
2007-07-18 22:57           ` [PATCH 3/5] nfsd: remove unnecessary NULL checks from nfsd_cross_mnt J. Bruce Fields
2007-07-18 22:57             ` J. Bruce Fields
2007-07-18 22:57             ` J. Bruce Fields
2007-07-18 22:57           ` [PATCH 4/5] knfsd: move EX_RDONLY out of header J. Bruce Fields
2007-07-18 22:57             ` J. Bruce Fields
2007-07-18 22:57             ` J. Bruce Fields
2007-07-19  8:28             ` Christoph Hellwig
2007-07-19  8:28               ` [NFS] " Christoph Hellwig
2007-07-19  8:36               ` Andrew Morton
2007-07-18 22:57           ` [PATCH 5/5] knfsd: clean up EX_RDONLY J. Bruce Fields
2007-07-18 22:57             ` J. Bruce Fields
2007-07-18 22:57             ` J. Bruce Fields
2007-07-19  8:29             ` Christoph Hellwig
2007-07-19  8:29               ` [NFS] " Christoph Hellwig

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1070710022439.13155@suse.de \
    --to=neilb@suse.de \
    --cc=akpm@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nfs@lists.sourceforge.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.