git: 037232c20015 - stable/15 - nfs_commonkrpc.c: Fix recovery that was broken by 4d80d4913e79

Rick Macklem <[email protected]>
Newsgroups gmane.os.freebsd.devel.cvs.src
Message-ID <6a74e499.3b861.4c11cb20__34967.4218961567$1786045607$gmane$org@gitrepo.freebsd.org>
The branch stable/15 has been updated by rmacklem:

URL: https://cgit.FreeBSD.org/src/commit/?id=037232c2001528995d75556c8e2007c686e50134

commit 037232c2001528995d75556c8e2007c686e50134
Author:     Rick Macklem <[email protected]>
AuthorDate: 2026-08-03 23:57:38 +0000
Commit:     Rick Macklem <[email protected]>
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 &&
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.