diff options
author | Mi Jinlong <mijinlong@cn.fujitsu.com> | 2011-11-22 21:48:40 -0500 |
---|---|---|
committer | J. Bruce Fields <bfields@redhat.com> | 2011-12-06 16:19:04 -0500 |
commit | 0cf99b91c669510b785b459c211772091a94efd5 (patch) | |
tree | 2e6a7b05e993b0f34a74244fbc2490a7f773fe29 /fs | |
parent | b4f36f88b3ee7cf26bf0be84e6c7fc15f84dcb71 (diff) |
nfsd41: allow non-reclaim open-by-fh's in 4.1
With NFSv4.0 it was safe to assume that open-by-filehandles were always
reclaims.
With NFSv4.1 there are non-reclaim open-by-filehandle operations, so we
should ensure we're only insisting on reclaims in the
OPEN_CLAIM_PREVIOUS case.
Signed-off-by: Mi Jinlong <mijinlong@cn.fujitsu.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/nfsd/nfs4proc.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c index fa383361bc61..9415bc415ce8 100644 --- a/fs/nfsd/nfs4proc.c +++ b/fs/nfsd/nfs4proc.c | |||
@@ -266,10 +266,6 @@ do_open_fhandle(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfsd4_ | |||
266 | { | 266 | { |
267 | __be32 status; | 267 | __be32 status; |
268 | 268 | ||
269 | /* Only reclaims from previously confirmed clients are valid */ | ||
270 | if ((status = nfs4_check_open_reclaim(&open->op_clientid))) | ||
271 | return status; | ||
272 | |||
273 | /* We don't know the target directory, and therefore can not | 269 | /* We don't know the target directory, and therefore can not |
274 | * set the change info | 270 | * set the change info |
275 | */ | 271 | */ |
@@ -373,6 +369,9 @@ nfsd4_open(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, | |||
373 | break; | 369 | break; |
374 | case NFS4_OPEN_CLAIM_PREVIOUS: | 370 | case NFS4_OPEN_CLAIM_PREVIOUS: |
375 | open->op_openowner->oo_flags |= NFS4_OO_CONFIRMED; | 371 | open->op_openowner->oo_flags |= NFS4_OO_CONFIRMED; |
372 | status = nfs4_check_open_reclaim(&open->op_clientid); | ||
373 | if (status) | ||
374 | goto out; | ||
376 | case NFS4_OPEN_CLAIM_FH: | 375 | case NFS4_OPEN_CLAIM_FH: |
377 | case NFS4_OPEN_CLAIM_DELEG_CUR_FH: | 376 | case NFS4_OPEN_CLAIM_DELEG_CUR_FH: |
378 | status = do_open_fhandle(rqstp, &cstate->current_fh, | 377 | status = do_open_fhandle(rqstp, &cstate->current_fh, |