git: 037232c20015 - stable/15 - nfs_commonkrpc.c: Fix recovery that was broken by 4d80d4913e79
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 06 Aug 2026 19:46:33 UTC
The branch stable/15 has been updated by rmacklem:
URL: https://cgit.FreeBSD.org/src/commit/?id=037232c2001528995d75556c8e2007c686e50134
commit 037232c2001528995d75556c8e2007c686e50134
Author: Rick Macklem <rmacklem@FreeBSD.org>
AuthorDate: 2026-08-03 23:57:38 +0000
Commit: Rick Macklem <rmacklem@FreeBSD.org>
CommitDate: 2026-08-06 19:45:02 +0000
nfs_commonkrpc.c: Fix recovery that was broken by 4d80d4913e79
Commit 4d80d4913e79 added a check for nfsess_defunct already
being set. This was incorrect because, once set, nfsess_defunct
remains set and an additional recovery might be needed.
This patch reverts this part of 4d80d4913e79.
PR: 297252
(cherry picked from commit 5ab48fb9f7ac43fb1242a678312a02df5d4d5b53)
---
sys/fs/nfs/nfs_commonkrpc.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/sys/fs/nfs/nfs_commonkrpc.c b/sys/fs/nfs/nfs_commonkrpc.c
index dd189a4aa909..705e65d81d41 100644
--- a/sys/fs/nfs/nfs_commonkrpc.c
+++ b/sys/fs/nfs/nfs_commonkrpc.c
@@ -1279,9 +1279,15 @@ tryagain:
}
sep = NFSMNT_MDSSESSION(nmp);
if (bcmp(sep->nfsess_sessionid,
- nd->nd_sessionid, NFSX_V4SESSIONID) == 0 &&
- sep->nfsess_defunct == 0) {
- /* Initiate recovery. */
+ nd->nd_sessionid, NFSX_V4SESSIONID) == 0) {
+ /*
+ * Initiate recovery. Even if
+ * nfsess_defunct is already set,
+ * another recovery may be needed.
+ * NFSCLFLAGS_RECVRINPRG |
+ * NFSCLFLAGS_RECOVER should avoid
+ * recovery storms.
+ */
sep->nfsess_defunct = 1;
NFSCL_DEBUG(1, "Marked defunct\n");
if (nmp->nm_clp != NULL &&