aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/extres/(public-mirror)
diff options
context:
space:
mode:
authorJ. David <j.david.lists@gmail.com>2026-10-07 01:52:19 +0000
committerRick Macklem <rmacklem@FreeBSD.org>2026-10-07 01:52:19 +0000
commit77a7a48a1cb003831ff1d4342b1974fc7f79381e (patch)
treeb314d388c82f4487e909a0bd3e32c4e0b1626843 /sys/dev/extres/(public-mirror)
parent192781bf5d047cceff3a1947bfc754c8b5eb0835 (diff)
nfscl: Fix oddball cases for session slot releaseHEADmain
We have identified some cases where silent slot loss can occur when operations on NFS mounts are aborted. We experience this when using NFSv4.2, but it likely also occurs with NFSv4.1. A slot is acquired for compound operations by nfsv4_setsequence() and freed by newnfs_request(). Any call path that abandons the compound before reaching newnfs_request() loses the slot permanently. We identified four call sites where this happens, one of which where it actually does happen for us in a semi-reproducible way, which allowed us to develop a candidate patch, attached. The patch adds one function, nfsv4_freeunsentslot(), to nfs_clcomsubs.c. It is called from each of the four call sites: nfsrpc_writerpc(), nfsrpc_writeds(), and two in nfsrpc_setextattr(). nfsv4_freeunsentslot() calls nfsv4_freeslot() with resetseq set to true because the aborted RPC will never be sent and therefore the slot sequence ID should not advance. With this patch and other diagnostics, we have confirmed that slot loss does not occur under the conditions that otherwise cause it in our environment. PR: 298416 Reviewed by: rmacklem MFC after: 1 week
Diffstat (limited to 'sys/dev/extres/(public-mirror)')
0 files changed, 0 insertions, 0 deletions