Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 26 Aug 2022 03:18:15 +0000
From:      Rick Macklem <rmacklem@uoguelph.ca>
To:        Ganbold Tsagaankhuu <ganbold@gmail.com>, freebsd-stable <freebsd-stable@freebsd.org>
Subject:   Re: NFS issue - newnfs_request: Wrong session srvslot=1 slot=0, freeing free slot!!
Message-ID:  <YT4PR01MB9736383BF3B6F85D90115BA2DD759@YT4PR01MB9736.CANPRD01.PROD.OUTLOOK.COM>
In-Reply-To: <CAGtf9xNNCQLsWSN%2BspZmE8cQJ6UDTcdNcURbZxGdEo4-qZxn1A@mail.gmail.com>

index | next in thread | previous in thread | raw e-mail

[-- Attachment #1 --]
Ganbold Tsagaankhuu <ganbold@gmail.com> wrote:
> Hi,
> 
> We are having trouble with NFS running on STABLE:
> 
> Aug 26 02:21:42 iron2 kernel: newnfs_request: Wrong session srvslot=1 slot=0
> Aug 26 02:21:42 iron2 kernel: freeing free slot!!
> Aug 26 02:21:43 iron2 kernel: newnfs_request: Wrong session srvslot=1 slot=0
> Aug 26 02:21:43 iron2 kernel: freeing free slot!!
> Aug 26 02:21:54 iron2 kernel: newnfs_request: Wrong session srvslot=1 slot=0
> Aug 26 02:21:54 iron2 kernel: freeing free slot!!
> Aug 26 02:21:58 iron2 kernel: newnfs_request: Wrong session srvslot=1 slot=2
> Aug 26 02:21:58 iron2 kernel: retseq diff 0x1
> Aug 26 02:21:58 iron2 kernel: freeing free slot!!
> Aug 26 02:21:59 iron2 kernel: newnfs_request: Wrong session srvslot=1 slot=2
> Aug 26 02:21:59 iron2 kernel: retseq diff 0x1
> Aug 26 02:21:59 iron2 kernel: freeing free slot!!
> Aug 26 02:22:12 iron2 kernel: newnfs_request: Wrong session srvslot=0 slot=2
> Aug 26 02:22:12 iron2 kernel: retseq diff 0x1
> Aug 26 02:22:12 iron2 kernel: freeing free slot!!
> Aug 26 02:22:14 iron2 kernel: newnfs_request: Wrong session srvslot=1 slot=0
> Aug 26 02:22:14 iron2 kernel: freeing free slot!!
> Aug 26 02:22:15 iron2 kernel: newnfs_request: Bad session slot=1
> Aug 26 02:22:15 iron2 kernel: freeing free slot!!
> Aug 26 02:22:30 iron2 kernel: newnfs_request: Wrong session srvslot=1 slot=2
> Aug 26 02:22:30 iron2 kernel: retseq diff 0x1
> Aug 26 02:22:30 iron2 kernel: freeing free slot!!
> Aug 26 02:22:31 iron2 kernel: newnfs_request: Bad session slot=1
> Aug 26 02:22:31 iron2 kernel: freeing free slot!!
> Aug 26 02:22:46 iron2 kernel: newnfs_request: Wrong session srvslot=1 slot=0
> Aug 26 02:22:46 iron2 kernel: freeing free slot!!
> 
> We are running FreeBSD 13.1-STABLE #3 stable/13-n252198-c1434fd2dea: Fri Aug 26 01:51:53 UTC 2022 and mount options are:
> 
> rw,nfsv4,minorversion=1,bg,soft,timeo=20,retrans=5,retrycnt=5
> ro,nfsv4,minorversion=1,bg,soft,timeo=20,retrans=5,retrycnt=5
> 
> Is there any fix for this issue?
- Don't use "soft" mounts. See the Bugs section of "man mount_nfs".
  There are patches in stable/13 dated July 10, 2022. (I have no idea
  how to tell if n252198 would have them) that help, but use of "soft"
  mounts will never work correctly for NFSv4.
- The attached small patch (not committed yet, but should be in
  stable/13 in about 10days) fixes a couple of corner cases. If you
  are using a FreeBSD NFS server, I believe these corner cases only
  occur after the NFS server reboots.

rick
ps: If you test the attached patch, please let me know how it goes.
     
thanks a lot,

Ganbold


[-- Attachment #2 --]
--- sys/fs/nfs/nfs_commonkrpc.c.slotpos	2022-08-25 15:56:35.061725000 -0700
+++ sys/fs/nfs/nfs_commonkrpc.c	2022-08-25 16:04:49.447571000 -0700
@@ -1082,12 +1082,12 @@ printf("Disable slot=%d\n", nd->nd_slotid);
 						    }
 						    slot = nd->nd_slotid;
 						}
+						freeslot = slot;
 					} else if (slot != 0) {
 						printf("newnfs_request: Bad "
 						    "session slot=%d\n", slot);
 						slot = 0;
 					}
-					freeslot = slot;
 					if (retseq != sep->nfsess_slotseq[slot])
 						printf("retseq diff 0x%x\n",
 						    retseq);
@@ -1172,6 +1172,9 @@ printf("nfs_commonkrpc: initiate recovery\n");
 						*tl++ = txdr_unsigned(slotseq);
 						*tl++ = txdr_unsigned(slotpos);
 						*tl = txdr_unsigned(maxslot);
+						if ((nd->nd_flag &
+						    ND_HASSLOTID) != 0)
+							nd->nd_slotid = slotpos;
 					}
 					if (reterr == NFSERR_BADSESSION ||
 					    reterr == 0) {
help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?YT4PR01MB9736383BF3B6F85D90115BA2DD759>