All of lore.kernel.org
 help / color / mirror / Atom feed
From: "J. Bruce Fields" <bfields@redhat.com>
To: linux-nfs@vger.kernel.org
Cc: "J. Bruce Fields" <bfields@redhat.com>
Subject: [PATCH 13/50] nfsd4: move nfsd4_operation to xdr4.h
Date: Sat, 22 Mar 2014 21:11:44 -0400	[thread overview]
Message-ID: <1395537141-10389-14-git-send-email-bfields@redhat.com> (raw)
In-Reply-To: <1395537141-10389-1-git-send-email-bfields@redhat.com>

From: "J. Bruce Fields" <bfields@redhat.com>

We want to share some of these definitions.

Signed-off-by: J. Bruce Fields <bfields@redhat.com>
---
 fs/nfsd/nfs4proc.c | 58 ++++--------------------------------------------------
 fs/nfsd/xdr4.h     | 53 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 57 insertions(+), 54 deletions(-)

diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
index 849b0eb..afa7ff7 100644
--- a/fs/nfsd/nfs4proc.c
+++ b/fs/nfsd/nfs4proc.c
@@ -1134,58 +1134,8 @@ static inline void nfsd4_increment_op_stats(u32 opnum)
 		nfsdstats.nfs4_opcount[opnum]++;
 }
 
-typedef __be32(*nfsd4op_func)(struct svc_rqst *, struct nfsd4_compound_state *,
-			      void *);
-typedef u32(*nfsd4op_rsize)(struct svc_rqst *, struct nfsd4_op *op);
-typedef void(*stateid_setter)(struct nfsd4_compound_state *, void *);
-typedef void(*stateid_getter)(struct nfsd4_compound_state *, void *);
-
-enum nfsd4_op_flags {
-	ALLOWED_WITHOUT_FH = 1 << 0,	/* No current filehandle required */
-	ALLOWED_ON_ABSENT_FS = 1 << 1,	/* ops processed on absent fs */
-	ALLOWED_AS_FIRST_OP = 1 << 2,	/* ops reqired first in compound */
-	/* For rfc 5661 section 2.6.3.1.1: */
-	OP_HANDLES_WRONGSEC = 1 << 3,
-	OP_IS_PUTFH_LIKE = 1 << 4,
-	/*
-	 * These are the ops whose result size we estimate before
-	 * encoding, to avoid performing an op then not being able to
-	 * respond or cache a response.  This includes writes and setattrs
-	 * as well as the operations usually called "nonidempotent":
-	 */
-	OP_MODIFIES_SOMETHING = 1 << 5,
-	/*
-	 * Cache compounds containing these ops in the xid-based drc:
-	 * We use the DRC for compounds containing non-idempotent
-	 * operations, *except* those that are 4.1-specific (since
-	 * sessions provide their own EOS), and except for stateful
-	 * operations other than setclientid and setclientid_confirm
-	 * (since sequence numbers provide EOS for open, lock, etc in
-	 * the v4.0 case).
-	 */
-	OP_CACHEME = 1 << 6,
-	/*
-	 * These are ops which clear current state id.
-	 */
-	OP_CLEAR_STATEID = 1 << 7,
-};
-
-struct nfsd4_operation {
-	nfsd4op_func op_func;
-	u32 op_flags;
-	char *op_name;
-	/* Try to get response size before operation */
-	nfsd4op_rsize op_rsize_bop;
-	stateid_getter op_get_currentstateid;
-	stateid_setter op_set_currentstateid;
-};
-
 static struct nfsd4_operation nfsd4_ops[];
 
-#ifdef NFSD_DEBUG
-static const char *nfsd4_op_name(unsigned opnum);
-#endif
-
 /*
  * Enforce NFSv4.1 COMPOUND ordering rules:
  *
@@ -1219,7 +1169,7 @@ static __be32 nfs41_check_op_ordering(struct nfsd4_compoundargs *args)
 	return nfs_ok;
 }
 
-static inline struct nfsd4_operation *OPDESC(struct nfsd4_op *op)
+struct nfsd4_operation *OPDESC(struct nfsd4_op *op)
 {
 	return &nfsd4_ops[op->opnum];
 }
@@ -1868,14 +1818,14 @@ static struct nfsd4_operation nfsd4_ops[] = {
 	},
 };
 
-#ifdef NFSD_DEBUG
-static const char *nfsd4_op_name(unsigned opnum)
+const char *nfsd4_op_name(unsigned opnum)
 {
+#ifdef NFSD_DEBUG
 	if (opnum < ARRAY_SIZE(nfsd4_ops))
 		return nfsd4_ops[opnum].op_name;
+#endif
 	return "unknown_operation";
 }
-#endif
 
 #define nfsd4_voidres			nfsd4_voidargs
 struct nfsd4_voidargs { int dummy; };
diff --git a/fs/nfsd/xdr4.h b/fs/nfsd/xdr4.h
index f62a055..fa3a589 100644
--- a/fs/nfsd/xdr4.h
+++ b/fs/nfsd/xdr4.h
@@ -536,6 +536,59 @@ static inline bool nfsd4_last_compound_op(struct svc_rqst *rqstp)
 	return argp->opcnt == resp->opcnt;
 }
 
+
+
+typedef __be32(*nfsd4op_func)(struct svc_rqst *, struct nfsd4_compound_state *,
+			      void *);
+typedef u32(*nfsd4op_rsize)(struct svc_rqst *, struct nfsd4_op *op);
+typedef void(*stateid_setter)(struct nfsd4_compound_state *, void *);
+typedef void(*stateid_getter)(struct nfsd4_compound_state *, void *);
+
+enum nfsd4_op_flags {
+	ALLOWED_WITHOUT_FH = 1 << 0,	/* No current filehandle required */
+	ALLOWED_ON_ABSENT_FS = 1 << 1,	/* ops processed on absent fs */
+	ALLOWED_AS_FIRST_OP = 1 << 2,	/* ops reqired first in compound */
+	/* For rfc 5661 section 2.6.3.1.1: */
+	OP_HANDLES_WRONGSEC = 1 << 3,
+	OP_IS_PUTFH_LIKE = 1 << 4,
+	/*
+	 * These are the ops whose result size we estimate before
+	 * encoding, to avoid performing an op then not being able to
+	 * respond or cache a response.  This includes writes and setattrs
+	 * as well as the operations usually called "nonidempotent":
+	 */
+	OP_MODIFIES_SOMETHING = 1 << 5,
+	/*
+	 * Cache compounds containing these ops in the xid-based drc:
+	 * We use the DRC for compounds containing non-idempotent
+	 * operations, *except* those that are 4.1-specific (since
+	 * sessions provide their own EOS), and except for stateful
+	 * operations other than setclientid and setclientid_confirm
+	 * (since sequence numbers provide EOS for open, lock, etc in
+	 * the v4.0 case).
+	 */
+	OP_CACHEME = 1 << 6,
+	/*
+	 * These are ops which clear current state id.
+	 */
+	OP_CLEAR_STATEID = 1 << 7,
+};
+
+struct nfsd4_operation {
+	nfsd4op_func op_func;
+	u32 op_flags;
+	char *op_name;
+	/* Try to get response size before
+	 * operation */
+	nfsd4op_rsize op_rsize_bop;
+	stateid_getter op_get_currentstateid;
+	stateid_setter op_set_currentstateid;
+};
+
+struct nfsd4_operation *OPDESC(struct nfsd4_op *op);
+
+const char *nfsd4_op_name(unsigned opnum);
+
 #define NFS4_SVC_XDRSIZE		sizeof(struct nfsd4_compoundargs)
 
 static inline void
-- 
1.8.5.3


  parent reply	other threads:[~2014-03-23  1:12 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-23  1:11 nfsd4 xdr encoding fixes J. Bruce Fields
2014-03-23  1:11 ` [PATCH 01/50] rpc: Allow xdr_buf_subsegment to operate in-place J. Bruce Fields
2014-03-23  1:11 ` [PATCH 02/50] nfsd4: update comments with obsolete function name J. Bruce Fields
2014-03-23  1:11 ` [PATCH 03/50] nfsd4: nfsd4_replay_cache_entry should be static J. Bruce Fields
2014-03-23  1:11 ` [PATCH 04/50] nfsd4: minor nfsd4_replay_cache_entry cleanup J. Bruce Fields
2014-03-23  1:11 ` [PATCH 05/50] nfsd4: use more generous NFS4_ACL_MAX J. Bruce Fields
2014-03-23  1:11 ` [PATCH 06/50] nfsd4: remove redundant check from nfsd4_check_resp_size J. Bruce Fields
2014-03-23  1:11 ` [PATCH 07/50] nfsd4: fix setclientid encode size J. Bruce Fields
2014-03-23  1:11 ` [PATCH 08/50] nfsd4: fix nfs4err_resource in 4.1 case J. Bruce Fields
2014-03-29 19:18   ` J. Bruce Fields
2014-03-23  1:11 ` [PATCH 09/50] nfsd4: embed xdr_stream in nfsd4_compoundres J. Bruce Fields
2014-03-23  1:11 ` [PATCH 10/50] nfsd4: tweak nfsd4_encode_getattr to take xdr_stream J. Bruce Fields
2014-03-23  1:11 ` [PATCH 11/50] nfsd4: move proc_compound xdr encode init to helper J. Bruce Fields
2014-03-23  1:11 ` [PATCH 12/50] nfsd4: reserve head space for krb5 integ/priv info J. Bruce Fields
2014-03-23  1:11 ` J. Bruce Fields [this message]
2014-03-23  1:11 ` [PATCH 14/50] nfsd4: fix encoding of out-of-space replies J. Bruce Fields
2014-03-23  1:11 ` [PATCH 15/50] nfsd4: allow space for final error return J. Bruce Fields
2014-03-23  1:11 ` [PATCH 16/50] nfsd4: READ, READDIR, etc., are idempotent J. Bruce Fields
2014-03-23  1:11 ` [PATCH 17/50] nfsd4: use xdr_reserve_space in attribute encoding J. Bruce Fields
2014-03-23  1:11 ` [PATCH 18/50] nfsd4: use xdr_stream throughout compound encoding J. Bruce Fields
2014-03-23  6:43   ` Christoph Hellwig
2014-03-23 15:11     ` J. Bruce Fields
2014-03-25 15:38       ` Christoph Hellwig
2014-03-23  1:11 ` [PATCH 19/50] nfsd4: no need for encode_compoundres to adjust lengths J. Bruce Fields
2014-03-23  1:11 ` [PATCH 20/50] nfsd4: keep xdr buf length updated J. Bruce Fields
2014-03-23  6:47   ` Christoph Hellwig
2014-03-23  1:11 ` [PATCH 21/50] rpc: xdr_truncate_encode J. Bruce Fields
2014-03-23  1:11 ` [PATCH 22/50] nfsd4: use xdr_truncate_encode J. Bruce Fields
2014-03-23  6:50   ` Christoph Hellwig
2014-03-23 15:07     ` J. Bruce Fields
2014-03-25 15:36       ` Christoph Hellwig
2014-04-05  0:20         ` J. Bruce Fields
2014-03-23  1:11 ` [PATCH 23/50] nfsd4: "backfill" using write_bytes_to_xdr_buf J. Bruce Fields
2014-03-23  6:51   ` Christoph Hellwig
2014-03-23 14:43     ` J. Bruce Fields
2014-03-23 14:52       ` Christoph Hellwig
2014-03-23  1:11 ` [PATCH 24/50] nfsd4: remove ADJUST_ARGS J. Bruce Fields
2014-03-23  1:11 ` [PATCH 25/50] nfsd4: teach encoders to handle reserve_space failures J. Bruce Fields
2014-03-23  1:11 ` [PATCH 26/50] nfsd4: reserve space before inlining 0-copy pages J. Bruce Fields
2014-03-23  1:11 ` [PATCH 27/50] nfsd4: nfsd4_check_resp_size needn't recalculate length J. Bruce Fields
2014-03-23  1:11 ` [PATCH 28/50] nfsd4: remove redundant encode buffer size checking J. Bruce Fields
2014-03-23  1:12 ` [PATCH 29/50] nfsd4: size-checking cleanup J. Bruce Fields
2014-03-23  1:12 ` [PATCH 30/50] nfsd4: allow encoding across page boundaries J. Bruce Fields
2014-03-23  1:12 ` [PATCH 31/50] nfsd4: convert 4.1 replay encoding J. Bruce Fields
2014-03-23  1:12 ` [PATCH 32/50] nfsd4: don't try to encode conflicting owner if low on space J. Bruce Fields
2014-03-23  1:12 ` [PATCH 33/50] nfsd4: more precise nfsd4_max_reply J. Bruce Fields
2014-03-23  1:12 ` [PATCH 34/50] nfsd4: minor encode_read cleanup J. Bruce Fields
2014-03-23  1:12 ` [PATCH 35/50] nfsd4: nfsd4_check_resp_size should check against whole buffer J. Bruce Fields
2014-03-23  1:12 ` [PATCH 36/50] nfsd4: allow larger 4.1 session drc slots J. Bruce Fields
2014-03-23  1:12 ` [PATCH 37/50] rpc: define xdr_restrict_buflen J. Bruce Fields
2014-03-23  1:12 ` [PATCH 38/50] nfsd4: adjust buflen to session channel limit J. Bruce Fields
2014-03-23  1:12 ` [PATCH 39/50] nfsd4: use session limits to release send buffer reservation J. Bruce Fields
2014-03-23  1:12 ` [PATCH 40/50] nfsd4: allow large readdirs J. Bruce Fields
2014-03-23  1:12 ` [PATCH 41/50] nfsd4: enforce rd_dircount J. Bruce Fields
2014-03-23  1:12 ` [PATCH 42/50] nfsd4: don't treat readlink like a zero-copy operation J. Bruce Fields
2014-03-23  1:12 ` [PATCH 43/50] nfsd4: turn off zero-copy-read in exotic cases J. Bruce Fields
2014-03-23  1:12 ` [PATCH 44/50] nfsd4: nfsd_vfs_read doesn't use file handle parameter J. Bruce Fields
2014-03-23  1:12 ` [PATCH 45/50] nfsd4: separate splice and readv cases J. Bruce Fields
2014-03-23  1:12 ` [PATCH 46/50] nfsd4: allow exotic read compounds J. Bruce Fields
2014-03-23  1:12 ` [PATCH 47/50] nfsd4: kill WRITE32 J. Bruce Fields
2014-03-23  1:12 ` [PATCH 48/50] nfsd4: kill WRITE64 J. Bruce Fields
2014-03-23  1:12 ` [PATCH 49/50] nfsd4: kill WRITEMEM J. Bruce Fields
2014-03-23  1:12 ` [PATCH 50/50] nfsd4: kill write32, write64 J. Bruce Fields

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=1395537141-10389-14-git-send-email-bfields@redhat.com \
    --to=bfields@redhat.com \
    --cc=linux-nfs@vger.kernel.org \
    /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.