diff options
author | Benny Halevy <bhalevy@panasas.com> | 2009-04-01 09:22:52 -0400 |
---|---|---|
committer | Benny Halevy <bhalevy@panasas.com> | 2009-06-17 15:43:45 -0400 |
commit | 34dc1ad752ad3f55b2a6e6cd8cfcf3504682fec7 (patch) | |
tree | 8816d7038c09eae46e2da51561f2e80cc91063e0 /fs/nfs/nfs4state.c | |
parent | 78722e9c9208a312695178f5331511badd190598 (diff) |
nfs41: increment_{open,lock}_seqid
Unlike minorversion0, in nfsv4.1 the open and lock seqids need
not be incremented by the client and should always be set to zero.
This is implemented using a new nfs_rpc_ops methods -
increment_open_seqid and increment_lock_seqid
Signed-off-by: Rahul Iyer <iyer@netapp.com>
Signed-off-by: Benny Halevy <bhalevy@panasas.com>
[nfs41: check for session not minorversion]
Signed-off-by: Andy Adamson <andros@netapp.com>
Signed-off-by: Benny Halevy <bhalevy@panasas.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/nfs4state.c')
-rw-r--r-- | fs/nfs/nfs4state.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c index 2cc0aca96eb2..2cfca9929c9a 100644 --- a/fs/nfs/nfs4state.c +++ b/fs/nfs/nfs4state.c | |||
@@ -742,12 +742,14 @@ static void nfs_increment_seqid(int status, struct nfs_seqid *seqid) | |||
742 | 742 | ||
743 | void nfs_increment_open_seqid(int status, struct nfs_seqid *seqid) | 743 | void nfs_increment_open_seqid(int status, struct nfs_seqid *seqid) |
744 | { | 744 | { |
745 | if (status == -NFS4ERR_BAD_SEQID) { | 745 | struct nfs4_state_owner *sp = container_of(seqid->sequence, |
746 | struct nfs4_state_owner *sp = container_of(seqid->sequence, | 746 | struct nfs4_state_owner, so_seqid); |
747 | struct nfs4_state_owner, so_seqid); | 747 | struct nfs_server *server = sp->so_server; |
748 | |||
749 | if (status == -NFS4ERR_BAD_SEQID) | ||
748 | nfs4_drop_state_owner(sp); | 750 | nfs4_drop_state_owner(sp); |
749 | } | 751 | if (!nfs4_has_session(server->nfs_client)) |
750 | nfs_increment_seqid(status, seqid); | 752 | nfs_increment_seqid(status, seqid); |
751 | } | 753 | } |
752 | 754 | ||
753 | /* | 755 | /* |