diff options
| author | Trond Myklebust <trond.myklebust@hammerspace.com> | 2023-11-15 13:55:29 -0500 | 
|---|---|---|
| committer | Anna Schumaker <Anna.Schumaker@Netapp.com> | 2024-01-04 10:47:56 -0500 | 
| commit | 037e56a22ff37f9a9c2330b66cff55d3d1ff9b90 (patch) | |
| tree | 09f1c44ae68f69265b7f43eed079250e41706cfe | |
| parent | dce72920c81b7e2ee6e0c9b2fde8762160b9992a (diff) | |
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: 183d9e7b112a ("pnfs: rework LAYOUTGET retry handling")
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
| -rw-r--r-- | fs/nfs/nfs4proc.c | 3 | 
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index 8a943fffaad5..23819a756508 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c @@ -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:  | 
