Merge tag 'nfsd-6.11-3' of git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux
Pull nfsd fix from Chuck Lever: - One more write delegation fix * tag 'nfsd-6.11-3' of git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux: nfsd: fix nfsd4_deleg_getattr_conflict in presence of third party lease
This commit is contained in:
@@ -8859,7 +8859,15 @@ nfsd4_deleg_getattr_conflict(struct svc_rqst *rqstp, struct dentry *dentry,
|
||||
*/
|
||||
if (type == F_RDLCK)
|
||||
break;
|
||||
goto break_lease;
|
||||
|
||||
nfsd_stats_wdeleg_getattr_inc(nn);
|
||||
spin_unlock(&ctx->flc_lock);
|
||||
|
||||
status = nfserrno(nfsd_open_break_lease(inode, NFSD_MAY_READ));
|
||||
if (status != nfserr_jukebox ||
|
||||
!nfsd_wait_for_delegreturn(rqstp, inode))
|
||||
return status;
|
||||
return 0;
|
||||
}
|
||||
if (type == F_WRLCK) {
|
||||
struct nfs4_delegation *dp = fl->c.flc_owner;
|
||||
@@ -8868,7 +8876,6 @@ nfsd4_deleg_getattr_conflict(struct svc_rqst *rqstp, struct dentry *dentry,
|
||||
spin_unlock(&ctx->flc_lock);
|
||||
return 0;
|
||||
}
|
||||
break_lease:
|
||||
nfsd_stats_wdeleg_getattr_inc(nn);
|
||||
dp = fl->c.flc_owner;
|
||||
refcount_inc(&dp->dl_stid.sc_count);
|
||||
|
||||
Reference in New Issue
Block a user