NFSv4.1/pnfs: Ensure we handle the error NFS4ERR_RETURNCONFLICT
[ Upstream commit 037e56a22ff37f9a9c2330b66cff55d3d1ff9b90 ] Once the client has processed the CB_LAYOUTRECALL, but has not yet successfully returned the layout, the server is supposed to switch to returning NFS4ERR_RETURNCONFLICT. This patch ensures that we handle that return value correctly. Fixes: 183d9e7b112a ("pnfs: rework LAYOUTGET retry handling") Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
db55dbbba5
commit
aebe7e47c2
@ -168,6 +168,7 @@ static int nfs4_map_errors(int err)
|
||||
case -NFS4ERR_RESOURCE:
|
||||
case -NFS4ERR_LAYOUTTRYLATER:
|
||||
case -NFS4ERR_RECALLCONFLICT:
|
||||
case -NFS4ERR_RETURNCONFLICT:
|
||||
return -EREMOTEIO;
|
||||
case -NFS4ERR_WRONGSEC:
|
||||
case -NFS4ERR_WRONG_CRED:
|
||||
@ -552,6 +553,7 @@ static int nfs4_do_handle_exception(struct nfs_server *server,
|
||||
case -NFS4ERR_GRACE:
|
||||
case -NFS4ERR_LAYOUTTRYLATER:
|
||||
case -NFS4ERR_RECALLCONFLICT:
|
||||
case -NFS4ERR_RETURNCONFLICT:
|
||||
exception->delay = 1;
|
||||
return 0;
|
||||
|
||||
@ -9159,6 +9161,7 @@ nfs4_layoutget_handle_exception(struct rpc_task *task,
|
||||
status = -EBUSY;
|
||||
break;
|
||||
case -NFS4ERR_RECALLCONFLICT:
|
||||
case -NFS4ERR_RETURNCONFLICT:
|
||||
status = -ERECALLCONFLICT;
|
||||
break;
|
||||
case -NFS4ERR_DELEG_REVOKED:
|
||||
|
Loading…
x
Reference in New Issue
Block a user