From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Olga Kornievskaia <kolga@netapp.com>,
Trond Myklebust <trond.myklebust@hammerspace.com>,
Sasha Levin <sashal@kernel.org>,
linux-nfs@vger.kernel.org
Subject: [PATCH AUTOSEL 4.14 01/15] NFSv4.1 handle ERR_DELAY error reclaiming locking state on delegation recall
Date: Mon, 14 Sep 2020 09:05:12 -0400 [thread overview]
Message-ID: <20200914130526.1804913-1-sashal@kernel.org> (raw)
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
next reply other threads:[~2020-09-14 14:26 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-14 13:05 Sasha Levin [this message]
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
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200914130526.1804913-1-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=kolga@netapp.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-nfs@vger.kernel.org \
--cc=stable@vger.kernel.org \
--cc=trond.myklebust@hammerspace.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox