diff options
Diffstat (limited to 'fs/nfsd/nfs4state.c')
| -rw-r--r-- | fs/nfsd/nfs4state.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index f19ed866c95f..c97fddbd17db 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c | |||
| @@ -1998,7 +1998,9 @@ nfs4_file_downgrade(struct file *filp, unsigned int share_access) | |||
| 1998 | { | 1998 | { |
| 1999 | if (share_access & NFS4_SHARE_ACCESS_WRITE) { | 1999 | if (share_access & NFS4_SHARE_ACCESS_WRITE) { |
| 2000 | drop_file_write_access(filp); | 2000 | drop_file_write_access(filp); |
| 2001 | spin_lock(&filp->f_lock); | ||
| 2001 | filp->f_mode = (filp->f_mode | FMODE_READ) & ~FMODE_WRITE; | 2002 | filp->f_mode = (filp->f_mode | FMODE_READ) & ~FMODE_WRITE; |
| 2003 | spin_unlock(&filp->f_lock); | ||
| 2002 | } | 2004 | } |
| 2003 | } | 2005 | } |
| 2004 | 2006 | ||
| @@ -2480,8 +2482,10 @@ nfsd4_process_open2(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nf | |||
| 2480 | } | 2482 | } |
| 2481 | memcpy(&open->op_stateid, &stp->st_stateid, sizeof(stateid_t)); | 2483 | memcpy(&open->op_stateid, &stp->st_stateid, sizeof(stateid_t)); |
| 2482 | 2484 | ||
| 2483 | if (nfsd4_has_session(&resp->cstate)) | 2485 | if (nfsd4_has_session(&resp->cstate)) { |
| 2484 | open->op_stateowner->so_confirmed = 1; | 2486 | open->op_stateowner->so_confirmed = 1; |
| 2487 | nfsd4_create_clid_dir(open->op_stateowner->so_client); | ||
| 2488 | } | ||
| 2485 | 2489 | ||
| 2486 | /* | 2490 | /* |
| 2487 | * Attempt to hand out a delegation. No error return, because the | 2491 | * Attempt to hand out a delegation. No error return, because the |
