diff options
author | Jeff Layton <jlayton@primarydata.com> | 2014-07-29 21:34:27 -0400 |
---|---|---|
committer | J. Bruce Fields <bfields@redhat.com> | 2014-07-31 14:20:19 -0400 |
commit | 58fb12e6a42f30adf209f8f41385a3bbb2c82420 (patch) | |
tree | 5ca75f92bd5aa9629f30c21d6e0e8df8f0984235 /fs/nfsd/state.h | |
parent | 6b180f0b57af0295e8dc2602a7a4781241766340 (diff) | |
download | linux-stable-58fb12e6a42f30adf209f8f41385a3bbb2c82420.tar.gz linux-stable-58fb12e6a42f30adf209f8f41385a3bbb2c82420.tar.bz2 linux-stable-58fb12e6a42f30adf209f8f41385a3bbb2c82420.zip |
nfsd: Add a mutex to protect the NFSv4.0 open owner replay cache
We don't want to rely on the client_mutex for protection in the case of
NFSv4 open owners. Instead, we add a mutex that will only be taken for
NFSv4.0 state mutating operations, and that will be released once the
entire compound is done.
Also, ensure that nfsd4_cstate_assign_replay/nfsd4_cstate_clear_replay
take a reference to the stateowner when they are using it for NFSv4.0
open and lock replay caching.
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Signed-off-by: Jeff Layton <jlayton@primarydata.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'fs/nfsd/state.h')
-rw-r--r-- | fs/nfsd/state.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/nfsd/state.h b/fs/nfsd/state.h index dc725deb4aa8..9cba295812f6 100644 --- a/fs/nfsd/state.h +++ b/fs/nfsd/state.h @@ -328,6 +328,7 @@ struct nfs4_replay { unsigned int rp_buflen; char *rp_buf; struct knfsd_fh rp_openfh; + struct mutex rp_mutex; char rp_ibuf[NFSD4_REPLAY_ISIZE]; }; |