Fix parsing failure for NFSv4 Setattr operation for failed case.
If an operation that preceeds a Setattr in an NFSv4 compound fails, there is no bitmap of attributes to parse. Without this patch, the parsing would fail and return EBADRPC instead of the correct failure error. This could break recovery from a server crash/reboot. Tested by: cperciva PR: 215883 MFC after: 2 weeks
This commit is contained in:
parent
6a4fb6c26a
commit
4510ed1590
@ -1190,7 +1190,7 @@ nfsrpc_setattrrpc(vnode_t vp, struct vattr *vap,
|
||||
return (error);
|
||||
if (nd->nd_flag & (ND_NFSV3 | ND_NFSV4))
|
||||
error = nfscl_wcc_data(nd, vp, rnap, attrflagp, NULL, stuff);
|
||||
if ((nd->nd_flag & ND_NFSV4) && !error)
|
||||
if ((nd->nd_flag & (ND_NFSV4 | ND_NOMOREDATA)) == ND_NFSV4 && !error)
|
||||
error = nfsrv_getattrbits(nd, &attrbits, NULL, NULL);
|
||||
if (!(nd->nd_flag & ND_NFSV3) && !nd->nd_repstat && !error)
|
||||
error = nfscl_postop_attr(nd, rnap, attrflagp, stuff);
|
||||
|
Loading…
x
Reference in New Issue
Block a user