diff options
author | J. Bruce Fields <bfields@redhat.com> | 2012-03-06 14:43:36 -0500 |
---|---|---|
committer | J. Bruce Fields <bfields@redhat.com> | 2012-03-06 18:13:24 -0500 |
commit | 393d8ed80f0e9b7edad737053a5fb375f0bf4849 (patch) | |
tree | 91069f3a1fa60811638341b46a8d87b715899758 /fs/nfsd | |
parent | 1255a8f36cb16a02540bdad91c0bc0971b9fb429 (diff) | |
download | linux-393d8ed80f0e9b7edad737053a5fb375f0bf4849.tar.gz linux-393d8ed80f0e9b7edad737053a5fb375f0bf4849.tar.bz2 linux-393d8ed80f0e9b7edad737053a5fb375f0bf4849.zip |
nfsd4: purge stable client records with insufficient state
To escape having your stable storage record purged at the end of the
grace period, it's not sufficient to simply have performed a
setclientid_confirm; you also need to meet the same requirements as
someone creating a new record: either you should have done an open or
open reclaim (in the 4.0 case) or a reclaim_complete (in the 4.1 case).
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'fs/nfsd')
-rw-r--r-- | fs/nfsd/nfs4state.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index 207c3bd266aa..c9c446d682ae 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -4415,7 +4415,9 @@ nfs4_has_reclaimed_state(const char *name, bool use_exchange_id) struct nfs4_client *clp; clp = find_confirmed_client_by_str(name, strhashval); - return clp ? 1 : 0; + if (!clp) + return 0; + return clp->cl_firststate; } /* |