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>
