nfsd4: fix seqid_mutating_error
authorJ. Bruce Fields <bfields@redhat.com>
Wed, 10 Aug 2011 23:16:22 +0000 (19:16 -0400)
committerJ. Bruce Fields <bfields@redhat.com>
Fri, 19 Aug 2011 17:25:31 +0000 (13:25 -0400)
The set of errors here does *not* agree with the set of errors specified
in the rfc!

While we're there, turn this macros into a function, for the usual
reasons, and move it to the one place where it's actually used.

Cc: stable@kernel.org
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
fs/nfsd/nfs4xdr.c
fs/nfsd/state.h

index c8bf405d19de53dcf521a5cac313b4fbc3da6f24..f81099605256fdac4b3249a4d10cb93eaf507b46 100644 (file)
@@ -1623,6 +1623,18 @@ static void write_cinfo(__be32 **p, struct nfsd4_change_info *c)
                                                                \
        save = resp->p;
 
+static bool seqid_mutating_err(__be32 err)
+{
+       /* rfc 3530 section 8.1.5: */
+       return  err != nfserr_stale_clientid &&
+               err != nfserr_stale_stateid &&
+               err != nfserr_bad_stateid &&
+               err != nfserr_bad_seqid &&
+               err != nfserr_bad_xdr &&
+               err != nfserr_resource &&
+               err != nfserr_nofilehandle;
+}
+
 /*
  * Routine for encoding the result of a "seqid-mutating" NFSv4 operation.  This
  * is where sequence id's are incremented, and the replay cache is filled.
index 4eefaf1b42e885e97b85bbf01f2081ec82c0db97..5cfebe504056c62a65e8c826c8b99252e2688a30 100644 (file)
@@ -447,12 +447,6 @@ struct nfs4_stateid {
 #define WR_STATE               0x00000020
 #define CLOSE_STATE             0x00000040
 
-#define seqid_mutating_err(err)                       \
-       (((err) != nfserr_stale_clientid) &&    \
-       ((err) != nfserr_bad_seqid) &&          \
-       ((err) != nfserr_stale_stateid) &&      \
-       ((err) != nfserr_bad_stateid))
-
 struct nfsd4_compound_state;
 
 extern __be32 nfs4_preprocess_stateid_op(struct nfsd4_compound_state *cstate,