public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH AUTOSEL 4.14 01/15] NFSv4.1 handle ERR_DELAY error reclaiming locking state on delegation recall
@ 2020-09-14 13:05 Sasha Levin
  2020-09-14 13:05 ` [PATCH AUTOSEL 4.14 02/15] scsi: pm8001: Fix memleak in pm8001_exec_internal_task_abort Sasha Levin
                   ` (13 more replies)
  0 siblings, 14 replies; 19+ messages in thread
From: Sasha Levin @ 2020-09-14 13:05 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Olga Kornievskaia, Trond Myklebust, Sasha Levin, linux-nfs

From: Olga Kornievskaia <kolga@netapp.com>

[ Upstream commit 3d7a9520f0c3e6a68b6de8c5812fc8b6d7a52626 ]

A client should be able to handle getting an ERR_DELAY error
while doing a LOCK call to reclaim state due to delegation being
recalled. This is a transient error that can happen due to server
moving its volumes and invalidating its file location cache and
upon reference to it during the LOCK call needing to do an
expensive lookup (leading to an ERR_DELAY error on a PUTFH).

Signed-off-by: Olga Kornievskaia <kolga@netapp.com>
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/nfs/nfs4proc.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 4cfb84119e017..997b731ee19ab 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -6687,7 +6687,12 @@ int nfs4_lock_delegation_recall(struct file_lock *fl, struct nfs4_state *state,
 	err = nfs4_set_lock_state(state, fl);
 	if (err != 0)
 		return err;
-	err = _nfs4_do_setlk(state, F_SETLK, fl, NFS_LOCK_NEW);
+	do {
+		err = _nfs4_do_setlk(state, F_SETLK, fl, NFS_LOCK_NEW);
+		if (err != -NFS4ERR_DELAY)
+			break;
+		ssleep(1);
+	} while (err == -NFS4ERR_DELAY);
 	return nfs4_handle_delegation_recall_error(server, state, stateid, fl, err);
 }
 
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2020-09-20 14:05 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-09-14 13:05 [PATCH AUTOSEL 4.14 01/15] NFSv4.1 handle ERR_DELAY error reclaiming locking state on delegation recall Sasha Levin
2020-09-14 13:05 ` [PATCH AUTOSEL 4.14 02/15] scsi: pm8001: Fix memleak in pm8001_exec_internal_task_abort Sasha Levin
2020-09-14 13:05 ` [PATCH AUTOSEL 4.14 03/15] scsi: libfc: Fix for double free() Sasha Levin
2020-09-14 13:05 ` [PATCH AUTOSEL 4.14 04/15] scsi: lpfc: Fix FLOGI/PLOGI receive race condition in pt2pt discovery Sasha Levin
2020-09-14 13:05 ` [PATCH AUTOSEL 4.14 05/15] regulator: pwm: Fix machine constraints application Sasha Levin
2020-09-15  7:55   ` Vincent Whitchurch
2020-09-20 14:05     ` Sasha Levin
2020-09-14 13:05 ` [PATCH AUTOSEL 4.14 06/15] spi: spi-loopback-test: Fix out-of-bounds read Sasha Levin
2020-09-14 13:05 ` [PATCH AUTOSEL 4.14 07/15] SUNRPC: stop printk reading past end of string Sasha Levin
2020-09-14 13:05 ` [PATCH AUTOSEL 4.14 08/15] rapidio: Replace 'select' DMAENGINES 'with depends on' Sasha Levin
2020-09-14 13:05 ` [PATCH AUTOSEL 4.14 09/15] kobject: Drop unneeded conditional in __kobject_del() Sasha Levin
2020-09-14 14:13   ` Greg Kroah-Hartman
2020-09-20 14:05     ` Sasha Levin
2020-09-14 13:05 ` [PATCH AUTOSEL 4.14 10/15] nvme-fc: cancel async events before freeing event struct Sasha Levin
2020-09-14 13:05 ` [PATCH AUTOSEL 4.14 11/15] f2fs: fix indefinite loop scanning for free nid Sasha Levin
2020-09-14 13:05 ` [PATCH AUTOSEL 4.14 12/15] i2c: algo: pca: Reapply i2c bus settings after reset Sasha Levin
2020-09-14 13:05 ` [PATCH AUTOSEL 4.14 13/15] spi: Fix memory leak on splited transfers Sasha Levin
2020-09-14 13:05 ` [PATCH AUTOSEL 4.14 14/15] gcov: add support for GCC 10.1 Sasha Levin
2020-09-14 13:05 ` [PATCH AUTOSEL 4.14 15/15] KVM: MIPS: Change the definition of kvm type Sasha Levin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox