diff options
author | Trond Myklebust <trond.myklebust@primarydata.com> | 2014-02-10 18:20:47 -0500 |
---|---|---|
committer | Trond Myklebust <trond.myklebust@primarydata.com> | 2014-02-19 21:21:05 -0500 |
commit | e999e80ee9fc47f1febbec6823deda3537dbbd22 (patch) | |
tree | e76d471f251cb27d93912ca6192c8dae413f1407 /fs/nfs/nfs4_fs.h | |
parent | 2c64c57dfc4b7946f7abd8af653f55af581bc2c3 (diff) |
NFSv4: Don't update the open stateid unless it is newer than the old one
This patch is in preparation for the NFSv4.1 parallel open capability.
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Diffstat (limited to 'fs/nfs/nfs4_fs.h')
-rw-r--r-- | fs/nfs/nfs4_fs.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/fs/nfs/nfs4_fs.h b/fs/nfs/nfs4_fs.h index a5b27c2d9689..df81fcc138a7 100644 --- a/fs/nfs/nfs4_fs.h +++ b/fs/nfs/nfs4_fs.h | |||
@@ -500,6 +500,16 @@ static inline bool nfs4_stateid_match(const nfs4_stateid *dst, const nfs4_statei | |||
500 | return memcmp(dst, src, sizeof(*dst)) == 0; | 500 | return memcmp(dst, src, sizeof(*dst)) == 0; |
501 | } | 501 | } |
502 | 502 | ||
503 | static inline bool nfs4_stateid_match_other(const nfs4_stateid *dst, const nfs4_stateid *src) | ||
504 | { | ||
505 | return memcmp(dst->other, src->other, NFS4_STATEID_OTHER_SIZE) == 0; | ||
506 | } | ||
507 | |||
508 | static inline bool nfs4_stateid_is_newer(const nfs4_stateid *s1, const nfs4_stateid *s2) | ||
509 | { | ||
510 | return (s32)(be32_to_cpu(s1->seqid) - be32_to_cpu(s2->seqid)) > 0; | ||
511 | } | ||
512 | |||
503 | static inline bool nfs4_valid_open_stateid(const struct nfs4_state *state) | 513 | static inline bool nfs4_valid_open_stateid(const struct nfs4_state *state) |
504 | { | 514 | { |
505 | return test_bit(NFS_STATE_RECOVERY_FAILED, &state->flags) == 0; | 515 | return test_bit(NFS_STATE_RECOVERY_FAILED, &state->flags) == 0; |