NeilBrown 30b1db
From: Trond Myklebust <trond.myklebust@hammerspace.com>
NeilBrown 30b1db
Date: Tue, 31 May 2022 11:03:06 -0400
NeilBrown 30b1db
Subject: [PATCH] pNFS: Don't keep retrying if the server replied
NeilBrown 30b1db
 NFS4ERR_LAYOUTUNAVAILABLE
NeilBrown 30b1db
Git-commit: fe44fb23d6ccde4c914c44ef74ab8d9d9ba02bea
NeilBrown 30b1db
Patch-mainline: v5.19
NeilBrown 30b1db
References: git-fixes
NeilBrown 30b1db
NeilBrown 30b1db
If the server tells us that a pNFS layout is not available for a
NeilBrown 30b1db
specific file, then we should not keep pounding it with further
NeilBrown 30b1db
layoutget requests.
NeilBrown 30b1db
NeilBrown 30b1db
Fixes: 183d9e7b112a ("pnfs: rework LAYOUTGET retry handling")
NeilBrown 30b1db
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
NeilBrown 30b1db
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
NeilBrown 30b1db
Acked-by: NeilBrown <neilb@suse.com>
NeilBrown 30b1db
NeilBrown 30b1db
---
NeilBrown 30b1db
 fs/nfs/pnfs.c |    6 ++++++
NeilBrown 30b1db
 1 file changed, 6 insertions(+)
NeilBrown 30b1db
NeilBrown 30b1db
--- a/fs/nfs/pnfs.c
NeilBrown 30b1db
+++ b/fs/nfs/pnfs.c
NeilBrown 30b1db
@@ -1915,6 +1915,12 @@ lookup_again:
NeilBrown 30b1db
 			/* Fallthrough */
NeilBrown 30b1db
 		case -EAGAIN:
NeilBrown 30b1db
 			break;
NeilBrown 30b1db
+		case -ENODATA:
NeilBrown 30b1db
+			/* The server returned NFS4ERR_LAYOUTUNAVAILABLE */
NeilBrown 30b1db
+			pnfs_layout_set_fail_bit(
NeilBrown 30b1db
+				lo, pnfs_iomode_to_fail_bit(iomode));
NeilBrown 30b1db
+			lseg = NULL;
NeilBrown 30b1db
+			goto out_put_layout_hdr;
NeilBrown 30b1db
 		default:
NeilBrown 30b1db
 			if (!nfs_error_is_fatal(PTR_ERR(lseg))) {
NeilBrown 30b1db
 				pnfs_layout_clear_fail_bit(lo, pnfs_iomode_to_fail_bit(iomode));