mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 04:18:39 +08:00
NFSv4.1/pnfs: Ensure we handle the error NFS4ERR_RETURNCONFLICT
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: 183d9e7b11
("pnfs: rework LAYOUTGET retry handling")
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
This commit is contained in:
parent
dce72920c8
commit
037e56a22f
@ -170,6 +170,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:
|
||||
@ -558,6 +559,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;
|
||||
|
||||
@ -9691,6 +9693,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…
Reference in New Issue
Block a user