From nobody Sun Mar 22 01:51:20 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4fdfRK466wz6VC0Y for ; Sun, 22 Mar 2026 01:51:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4fdfRK3SmLz3xTw for ; Sun, 22 Mar 2026 01:51:25 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774144285; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=49LwEeCGGuCW1qrmy02lOvZNmvltM6pKa49LR+MZz9I=; b=tmwjxZ+BUJ7dmfj3jMjrB7rYJxK4ikg6Y7q9PKXBxCLp7ZBN6E2vYREiedpGIoPX1y0CUm TyXrGLVzl0fSg+NHH4WaJHBq7SM5C+j43ttt8jbXesPe5XHeVZ114w7iH1Z6Djkhbb6FGj sAFN3OdplZfh2lsXoDPwm771oEYNJ4ilnHT8jY6v6e9y+Lcs1ZIDjyuTzXQ5nLKkzbMoZ9 1ZLzcDeLD/hR2gXGu18EzQPg2syjU+ul3DW73cNkpGV7lf6yP1YMyZXItY43YL1YNcYnMo IOr2qHV292KBfAk2SskIWQPRqAU7aAzHtLn2tiywPGz2j+a3OoEYYfxa09ib/g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774144285; a=rsa-sha256; cv=none; b=xUB2kHTv6mKNRqWfJmcDlHGUl9EazsL2reGc5NSlW/a+f6KR9/sozwe9kmtNclDPEl4tbK AlitcL7VHtCpjlArm8C5pECQoT+sm7LOrZj0+J4azXY2Tk92VzbS1DuxckyZMNeb581pOt 4caFkPRfQAb3jpj2sf2plgnaToYVt4xlm2a8uoe+kdL3Et+YTDBHgJs73Ogomz7lO6fI2p F5DeLnHx6vhKOZCQiuJ45F2CjCYCGXAwuFYebjG0SYWkLuUcOQTzcWZ8fFVl3a1+zzyExT /81y7SE3bwh6T/NLo5NPg1U+TyeYhPz2l+7mzvSig389nBKJGISwe8F9J2IrpA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774144285; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=49LwEeCGGuCW1qrmy02lOvZNmvltM6pKa49LR+MZz9I=; b=aMZF5UfRmuwWG7ekI2kdBYVoBGPMA/aoyAio96yqosHQ1f5VLC0iXfUNJnBRhvvumel2iB DPly8VCz04q77jUGh1HluBi0Hpk5/QpuzQYVo2U62pJgxS4y0aTUb6ilXxNS+QUimZLgM1 lFzOpRe5Xs/7yjAhmlKfQ6mVStvDoiORX5sfxIBjK2NDzbJHPYXUMoWAlC0Ti8IjMRzdsA zYJFbM+TXRGN266Zr9rOX+vDS0rgIpS/nagbaNPXb7K/ToGpjSlB5rvKGBjump4/1Ut6Gt wzOQ7tAFYvC+Rwlilo9lKEWSI9SWaSH2+LRBeNKtD989rH6nCl+xFLJPKvCV9A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fdfRK32WCzfLs for ; Sun, 22 Mar 2026 01:51:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 43a0b by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sun, 22 Mar 2026 01:51:20 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Rick Macklem Subject: git: b2fc2556c1ea - stable/15 - nfs_clstate.c: Handle the same stateid case correctly List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rmacklem X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: b2fc2556c1eae29eb58529800ed0a213740df4e6 Auto-Submitted: auto-generated Date: Sun, 22 Mar 2026 01:51:20 +0000 Message-Id: <69bf4b18.43a0b.6eaa7c54@gitrepo.freebsd.org> The branch stable/15 has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=b2fc2556c1eae29eb58529800ed0a213740df4e6 commit b2fc2556c1eae29eb58529800ed0a213740df4e6 Author: Rick Macklem AuthorDate: 2026-03-08 21:09:36 +0000 Commit: Rick Macklem CommitDate: 2026-03-22 00:49:33 +0000 nfs_clstate.c: Handle the same stateid case correctly When an NFSv4.1/4.2 sarver upgrades a read delegation to a write delegation, it does not need to change the delegation's stateid. Without this patch, a DELEGRETURN of the stateid was done for the case where the delegation stateid had not changed. This return was bogus, since the delegation stateid now represents the new write delegation. This patch fixes the priblem by checking for "same stateid" and only doing the DELEGRETURN when it is not the same. PR: 289711 (cherry picked from commit 016570c4463d5908953355ee1cf9a385ad9601b4) --- sys/fs/nfsclient/nfs_clstate.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/sys/fs/nfsclient/nfs_clstate.c b/sys/fs/nfsclient/nfs_clstate.c index 712d49c7160c..6dc97142b77f 100644 --- a/sys/fs/nfsclient/nfs_clstate.c +++ b/sys/fs/nfsclient/nfs_clstate.c @@ -433,9 +433,11 @@ nfscl_deleg(mount_t mp, struct nfsclclient *clp, u_int8_t *nfhp, { struct nfscldeleg *tdp; struct nfsmount *nmp; + bool trydelegret; KASSERT(mp != NULL, ("nfscl_deleg: mp NULL")); nmp = VFSTONFS(mp); + trydelegret = false; /* * Since a delegation might be added to the mount, @@ -467,6 +469,9 @@ nfscl_deleg(mount_t mp, struct nfsclclient *clp, u_int8_t *nfhp, * Read delegation. Otherwise, return the new delegation. */ if (dp != NULL) { + if (NFSBCMP(dp->nfsdl_stateid.other, + tdp->nfsdl_stateid.other, NFSX_STATEIDOTHER)) + trydelegret = true; if ((dp->nfsdl_flags & NFSCLDL_WRITE) != 0 && (tdp->nfsdl_flags & NFSCLDL_READ) != 0) { TAILQ_REMOVE(&clp->nfsc_deleg, tdp, nfsdl_list); @@ -485,7 +490,8 @@ nfscl_deleg(mount_t mp, struct nfsclclient *clp, u_int8_t *nfhp, } NFSUNLOCKCLSTATE(); if (tdp != NULL) { - nfscl_trydelegreturn(tdp, cred, nmp, p); + if (trydelegret) + nfscl_trydelegreturn(tdp, cred, nmp, p); free(tdp, M_NFSCLDELEG); } return (0);