git: 5ab48fb9f7ac - main - nfs_commonkrpc.c: Fix recovery that was broken by 4d80d4913e79

Rick Macklem <[email protected]> Tue, 04 Aug 2026 00:09:44 +0000
Newsgroups gmane.os.freebsd.devel.cvs.src
Message-ID <6a712dc8.24188.7083fb16__23109.3431868189$1785802200$gmane$org@gitrepo.freebsd.org>
The branch main has been updated by rmacklem:

URL: https://cgit.FreeBSD.org/src/commit/?id=5ab48fb9f7ac43fb1242a678312a02df5d4d5b53

commit 5ab48fb9f7ac43fb1242a678312a02df5d4d5b53
Author:     Rick Macklem <[email protected]>
AuthorDate: 2026-08-03 23:57:38 +0000
Commit:     Rick Macklem <[email protected]>
CommitDate: 2026-08-04 00:02:47 +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
    Suggested by:   olivier
    MFC after:      3 days
    Fixes:  4d80d4913e79 ("nfs: Fix argument typo to avoid a crash")
---
 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 &&