freebsd-dev/sys/fs
Rick Macklem 981ef32230 nfscl: Enable detection of bad session slots
To deal with broken session slots caused by the use of the
"soft" and/or "intr" mount options, nfsv4_sequencelookup()
has been modified to track the potentially broken session
slots (commit 40ada74ee1).  Then, when all session slots
are potentially broken, nfsv4_sequencelookup() does a
DeleteSession operation, so that the NFSv4.1/4.2 server will
reply NFSERR_BADSESSION to uses of the session.
The client will then recover by doing a CreateSession to
acquire a new session.

This patch adds the code that marks potentially bad
slots, so that the above semantics become functional.
It has been successfully tested against a FreeBSD
NFSv4.1/4.2 server, but does not work against a Linux 5.15
NFSv4.1/4.2 server. (The Linux 5.15 server creates
a new session with the same sessionid as the destroyed
one and, as such, keeps returning NFSERR_BADSESSION.
I believe this is a bug in the Linux server.)

However, this should not cause a regression and will
make "intr" mounts fairly usable against the NFSv4.1/4.2
servers where it works.

PR: 260011
MFC after:	2 weeks
2022-07-10 13:33:19 -07:00
..
autofs vfs: remove cn_thread 2021-10-11 13:21:47 +00:00
cd9660 vfs: NDFREE(&nd, NDF_ONLY_PNBUF) -> NDFREE_PNBUF(&nd) 2022-03-24 10:20:51 +00:00
cuse cuse(3): Remove PAGE_SIZE from libcuse. 2022-06-25 12:01:59 +02:00
deadfs vn_open(): If the vnode is reclaimed during open(2), do not return error. 2021-02-12 03:02:20 +02:00
devfs fs: fix a few common typos in source code comments 2022-02-06 13:48:31 +01:00
ext2fs ext2: plug a set-but-not-used var 2022-04-19 12:45:57 +00:00
fdescfs fdescfs: allow chown/utime etc on fdescfs fd for underlying files opened with O_PATH 2022-06-06 22:27:36 +03:00
fifofs fifos: delegate unhandled kqueue filters to underlying filesystem 2021-10-12 02:43:07 -05:00
fuse fusefs: handle evil servers that return illegal inode numbers 2022-05-12 14:32:26 -06:00
mntfs mntfs: lock mntfs pseudo devfs vnode properly 2021-11-13 01:00:41 +02:00
msdosfs vfs: NDFREE(&nd, NDF_ONLY_PNBUF) -> NDFREE_PNBUF(&nd) 2022-03-24 10:20:51 +00:00
nfs nfscl: Enable detection of bad session slots 2022-07-10 13:33:19 -07:00
nfsclient nfscl: Initialize nfsess_badslots to zero 2022-07-09 16:12:31 -07:00
nfsserver nfscl: Add optional support for slots marked bad 2022-07-09 14:43:16 -07:00
nullfs null_vptocnp(): busy nullfs mp instead of refing it 2022-06-14 10:32:45 +03:00
procfs sysent: Get rid of bogus sys/sysent.h include. 2022-05-28 20:52:17 +03:00
pseudofs pseudofs: Destroy vncache hashtbl on pseudofs module unload. 2021-12-09 21:41:08 +00:00
smbfs smbfs: Remove unused variable. 2022-04-07 17:01:28 -07:00
tmpfs insmntque1(): remove useless arguments 2022-01-31 16:49:08 +02:00
udf vfs: NDFREE(&nd, NDF_ONLY_PNBUF) -> NDFREE_PNBUF(&nd) 2022-03-24 10:20:51 +00:00
unionfs unionfs: Use __diagused for a variable only used in KASSERT(). 2022-04-13 16:08:20 -07:00