]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
nfscl: Fix handling of nd_slotid while handling NFSERR_BADSESSION
authorRick Macklem <rmacklem@FreeBSD.org>
Sat, 27 Aug 2022 23:03:18 +0000 (16:03 -0700)
committerRick Macklem <rmacklem@FreeBSD.org>
Sat, 27 Aug 2022 23:03:18 +0000 (16:03 -0700)
commitfb29f817586972444d65b1548287a51f27891639
treead73f50c10cffd4fced6a170928b0a3acf3393ec
parentf2dfe607761c9b9dd78a336da20ce8d54c1e3cb6
nfscl: Fix handling of nd_slotid while handling NFSERR_BADSESSION

When the NFSv4.1/4.2 client is handling a server error
of NFSERR_BADSESSION, it retries RPCs with a new session.
Without this patch, the nd_slotid was not being updated
for the new session.

This would result in a bogus console message like
"Wrong session srvslot=X slot=Y" and then it would
free the incorrect slot, often generating a
"freeing free slot!!" console message as well.

This patch fixes the problem.

Note that FreeBSD NFSv4.1/4.2 servers only
generate a NFSERR_BADSESSION error after a reboot
or after a client does a DestroySession operation.

PR: 260011
MFC after: 1 week
sys/fs/nfs/nfs_commonkrpc.c