Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f07d4a31 authored by Trond Myklebust's avatar Trond Myklebust
Browse files

NFS: Retry the CLOSE if the embedded GETATTR is rejected with EACCES



If our CLOSE RPC call is rejected with an EACCES call, then we should
remove the GETATTR call from the compound RPC and retry.
This could potentially happen when there is a conflict between an
ACL denying attribute reads and our use of SP4_MACH_CRED.

Signed-off-by: default avatarTrond Myklebust <trond.myklebust@primarydata.com>
parent d8d84983
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -3122,6 +3122,16 @@ static void nfs4_close_done(struct rpc_task *task, void *data)
			res_stateid = &calldata->res.stateid;
			renew_lease(server, calldata->timestamp);
			break;
		case -NFS4ERR_ACCESS:
			if (calldata->arg.bitmask != NULL) {
				calldata->arg.bitmask = NULL;
				calldata->res.fattr = NULL;
				task->tk_status = 0;
				rpc_restart_call_prepare(task);
				goto out_release;

			}
			break;
		case -NFS4ERR_ADMIN_REVOKED:
		case -NFS4ERR_STALE_STATEID:
		case -NFS4ERR_EXPIRED: