mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 06:01:57 +00:00
nfsd-6.11 fixes:
- One more write delegation fix -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEKLLlsBKG3yQ88j7+M2qzM29mf5cFAmbTO2QACgkQM2qzM29m f5d6Jg/+L8ltg5iGzdgwZYoOrlhS7sz4Y/BcOViNZ25we0J+kFaauycCyMCG9wS1 o1NXAZ8d1lvDTZI8Bw7rzWl1IS2mjfg1NX8t5MhVUxrkus40jjwip9VPYRegQhBT WZ/ggaudZinc/+i2toR7eY3wJe/PqOWeML4XWbx//tinfLnlC62UKMudOvaXk3B8 8y0nGWQaJEuaZuFuA9FFOs7MHgR50rSevOdk90avBqFYBVvq2wA6ZvKw0TbH47Q6 BbELVbIqlFOSfui/w+DQXqGm7SYMOUkaLsPLspXXlDBR0myjORlQ8Ch6alaWp9pd 2yAGlYNalTJVlJt/2Uqu4USPZuUK9Ijd+2TNg1ObCdRFzpRVmQDU/wzv8A0DWNdI MbiwX2ckwUt3u2nh+DHWagSKcuxcRR908YwEHs3/rAmcZDSWiZdJtDZ3NiBKNZrD KHYdEOl5rl5P7bi6VcaR8gYREbKiq6BISo7ru3Ix7ImIQD87a/x393/tkOutw8bM VfIEYcnsbqlTs07KVUZ2jcIziFrttPmh5rs8qfDHsk899bzR1CBkQedwZAUD0Ghu dmvKebXSoLc2sWli5CcrfkWxkjRuIuSQMOPnY9RrRFFaNXBYC3JA7EUWsvbXsX0x WSuZPlS9Jv6bCdgvBMAIjTA/uxShLeEf33GIcKK9iI0mASKwXHY= =uoNK -----END PGP SIGNATURE----- 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:
commit
6a2fcc51a7
@ -8859,7 +8859,15 @@ nfsd4_deleg_getattr_conflict(struct svc_rqst *rqstp, struct dentry *dentry,
|
|||||||
*/
|
*/
|
||||||
if (type == F_RDLCK)
|
if (type == F_RDLCK)
|
||||||
break;
|
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) {
|
if (type == F_WRLCK) {
|
||||||
struct nfs4_delegation *dp = fl->c.flc_owner;
|
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);
|
spin_unlock(&ctx->flc_lock);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
break_lease:
|
|
||||||
nfsd_stats_wdeleg_getattr_inc(nn);
|
nfsd_stats_wdeleg_getattr_inc(nn);
|
||||||
dp = fl->c.flc_owner;
|
dp = fl->c.flc_owner;
|
||||||
refcount_inc(&dp->dl_stid.sc_count);
|
refcount_inc(&dp->dl_stid.sc_count);
|
||||||
|
Loading…
Reference in New Issue
Block a user