diff mbox

nfsd: fix error handling for clients that fail to return the layout

Message ID 1476980494-2984-1-git-send-email-jlayton@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Jeff Layton Oct. 20, 2016, 4:21 p.m. UTC
Currently, when the client continually returns NFS4ERR_DELAY on a
CB_LAYOUTRECALL, we'll give up trying to retransmit after two lease
periods, but leave the layout in place.

What we really need to do here is fence the client in this case. Have it
fall through to that code in that case instead of into the
NFS4ERR_NOMATCHING_LAYOUT case.

Cc: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jeff Layton <jlayton@redhat.com>
---
 fs/nfsd/nfs4layouts.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

Comments

Christoph Hellwig Oct. 21, 2016, 12:17 p.m. UTC | #1
On Thu, Oct 20, 2016 at 12:21:34PM -0400, Jeff Layton wrote:
> Currently, when the client continually returns NFS4ERR_DELAY on a
> CB_LAYOUTRECALL, we'll give up trying to retransmit after two lease
> periods, but leave the layout in place.
> 
> What we really need to do here is fence the client in this case. Have it
> fall through to that code in that case instead of into the
> NFS4ERR_NOMATCHING_LAYOUT case.

Agreed.  Looks good:

Reviewed-by: Christoph Hellwig <hch@lst.de>
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
J. Bruce Fields Oct. 28, 2016, 8:54 p.m. UTC | #2
On Fri, Oct 21, 2016 at 02:17:59PM +0200, Christoph Hellwig wrote:
> On Thu, Oct 20, 2016 at 12:21:34PM -0400, Jeff Layton wrote:
> > Currently, when the client continually returns NFS4ERR_DELAY on a
> > CB_LAYOUTRECALL, we'll give up trying to retransmit after two lease
> > periods, but leave the layout in place.
> > 
> > What we really need to do here is fence the client in this case. Have it
> > fall through to that code in that case instead of into the
> > NFS4ERR_NOMATCHING_LAYOUT case.
> 
> Agreed.  Looks good:
> 
> Reviewed-by: Christoph Hellwig <hch@lst.de>

Thanks, applying for 4.10.

--b.
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/fs/nfsd/nfs4layouts.c b/fs/nfsd/nfs4layouts.c
index 42aace4fc4c8..596205d939a1 100644
--- a/fs/nfsd/nfs4layouts.c
+++ b/fs/nfsd/nfs4layouts.c
@@ -686,10 +686,6 @@  nfsd4_cb_layout_done(struct nfsd4_callback *cb, struct rpc_task *task)
 			return 0;
 		}
 		/* Fallthrough */
-	case -NFS4ERR_NOMATCHING_LAYOUT:
-		trace_layout_recall_done(&ls->ls_stid.sc_stateid);
-		task->tk_status = 0;
-		return 1;
 	default:
 		/*
 		 * Unknown error or non-responding client, we'll need to fence.
@@ -702,6 +698,10 @@  nfsd4_cb_layout_done(struct nfsd4_callback *cb, struct rpc_task *task)
 		else
 			nfsd4_cb_layout_fail(ls);
 		return -1;
+	case -NFS4ERR_NOMATCHING_LAYOUT:
+		trace_layout_recall_done(&ls->ls_stid.sc_stateid);
+		task->tk_status = 0;
+		return 1;
 	}
 }