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
d47b2e96e9
commit
83a37350bf
@ -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…
Reference in New Issue
Block a user