The new NFSv4 client handled NFSERR_GRACE as a fatal error
for the remove and rename operations. Some NFSv4 servers will report NFSERR_GRACE for these operations. This patch changes the behaviour of the client so that it handles NFSERR_GRACE like NFSERR_DELAY for non-state related operations like remove and rename. It also exempts the delegreturn operation from handling within newnfs_request() for NFSERR_DELAY/NFSERR_GRACE so that it can handle NFSERR_GRACE in the same manner as before. This problem was resolved thanks to discussion with bfields at fieldses.org. The problem was identified at the recent NFSv4 ineroperability bakeathon. MFC after: 2 weeks
This commit is contained in:
parent
08f72ab5dc
commit
6a536ceea5
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=224117
@ -715,8 +715,10 @@ newnfs_request(struct nfsrv_descript *nd, struct nfsmount *nmp,
|
||||
NFSM_DISSECT(tl, u_int32_t *, NFSX_UNSIGNED);
|
||||
nd->nd_repstat = fxdr_unsigned(u_int32_t, *tl);
|
||||
if (nd->nd_repstat != 0) {
|
||||
if ((nd->nd_repstat == NFSERR_DELAY &&
|
||||
if (((nd->nd_repstat == NFSERR_DELAY ||
|
||||
nd->nd_repstat == NFSERR_GRACE) &&
|
||||
(nd->nd_flag & ND_NFSV4) &&
|
||||
nd->nd_procnum != NFSPROC_DELEGRETURN &&
|
||||
nd->nd_procnum != NFSPROC_SETATTR &&
|
||||
nd->nd_procnum != NFSPROC_READ &&
|
||||
nd->nd_procnum != NFSPROC_WRITE &&
|
||||
|
Loading…
Reference in New Issue
Block a user