FAILED: patch "[PATCH] pNFS/flexfiles: If the layout is invalid, it must be updated" failed to apply to 4.4-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 4.4-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
Quoted 1 line
From
df3ab232e462bce20710596d697ade6b72497694Mon Sep 17 00:00:00 2001
From: Trond Myklebust <[email protected]>
Date: Fri, 17 Feb 2017 19:49:09 -0500
Subject: [PATCH] pNFS/flexfiles: If the layout is invalid, it must be updated
before retrying
If we see that our pNFS READ/WRITE/COMMIT operation failed, but we also see that our layout segment is no longer valid, then we need to get a new layout segment before retrying.
Fixes 90816d1ddacf ("NFSv4.1/flexfiles: Don't mark the entire deviceid...")
Cc [email protected] # v4.2+
Signed-off-by Trond Myklebust <[email protected]>
Signed-off-by Anna Schumaker <[email protected]>
fs/nfs/flexfilelayout/flexfilelayout.c +7 -6
@@ -1053,9 +1053,6 @@ static int ff_layout_async_handle_error_v4(struct rpc_task *task,struct nfs_client *mds_client = mds_server->nfs_client;struct nfs4_slot_table *tbl = &clp->cl_session->fc_slot_table; -if (task->tk_status >=0 ) -return 0 ; -switch (task->tk_status) {/* MDS state errors */ case -NFS4ERR_DELEG_REVOKED :
@@ -1157,9 +1154,6 @@ static int ff_layout_async_handle_error_v3(struct rpc_task *task, {struct nfs4_deviceid_node *devid =FF_LAYOUT_DEVID_NODE (lseg, idx); -if (task->tk_status >=0 ) -return 0 ; -switch (task->tk_status) {/* File access problems. Don't mark the device as unavailable */ case -EACCES :
@@ -1195,6 +1189,13 @@ static int ff_layout_async_handle_error(struct rpc_task *task, {int vers = clp->cl_nfs_mod->rpc_vers->number; +if (task->tk_status >=0 ) +return 0 ; + +/* Handle the case of an invalid layout segment */ +if (!pnfs_is_valid_lseg (lseg)) +return -NFS4ERR_RESET_TO_PNFS ; +switch (vers) {case 3 :return ff_layout_async_handle_error_v3 (task, lseg, idx);