From nobody Sun Mar 22 01:51:20 2026 X-Original-To: dev-commits-src-branches@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 4fdfRD3kSnz6VCHH for ; Sun, 22 Mar 2026 01:51:20 +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 4fdfRD3DD1z3x4v for ; Sun, 22 Mar 2026 01:51:20 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774144280; 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=x1kimnW+7zDqRD2ivnfnCT+BGajb7j5V8cCzUoUvVHVJfK1/mqJk4RYJcjUznmcgwp4lds yBannG4FqSzCk9OMlDutY680rpTBc1a3xbXmIzM+GiEqYV44Y28Movi+Wke1+y++FmFP/4 W7MpN/EH3ZMnXON1GOj2gXP4W4j5u3RTLqAcDxdVQPmEDWdrcQYHuERlORwz8E8UCvhG9S 7tOTV9b0m0shGEVqzZguhDS906w2S7m3MlbVhCaN7QOX7LoNBtolxWqAMlQsncHoeN/ZsE weYtcWT3z2IxcNGUeQdhEA4ZrzK/MxF8cQQ1TRRi4YhX4aZAKgdz+LFeAflQCw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774144280; a=rsa-sha256; cv=none; b=ihvJLVSGpVVN8rnae4/ZtliBoFKQtM94RnOErEwImvz5/tIwrLi+V5DisdNBqiYCTN9Bcb 9WWHl5QoGFall6p9Fk4Xh21p8UY50AzvlqKOH7p/eTyCgc+Tg/1xZ15119va7nuJ6LojZ4 qMQyx+taeAQntYKghh0p/nQRurwJUUjka0laK4I09ApNXhgUza+0nXukpdgnxC+CSH3wr0 6NYh2CCtAAaueoAKZeFHVDTl6ijaNUI0ZU3igLFVHRPDmBENglbKwtpV8mwUJsaDbzy4rB OdhDMC5Lm5KU/DqS12rBMtTWmPk/ngFupUygLmbdC6sgW5h8k/0hu7m9dgjGPg== 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=1774144280; 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=nKHJ2Yecu9ObsEMEet16AahU8UPWxSQ2dBbVYjHEVXlyipU2Tchw8cPjy22+v6YYCEv1HT wkDtBlSuZ1QsXGvwyDPdn0ITVVv9wj2opbKFcjel2wBRgNgjmg8n+eW6ek17N9W2kRqWUy T/epxNzOQ0iiGzl/qRf0g02YIDGJyP+U1qg4SNw1U+kXQ3TJjMF22xMdgnNh+lxYgVwOs7 AWry5TorhUB0hAsfWMqwsWv0oWo28ggdWLqFpnsEUOu1MCKZE8TK93ehiGZyXOgeyZ3OvM 3VgQZKmbqbjDAaMl1/YXe5sRAX5yP8TrrLul9xrsCfwESII0ot+xXW2pvxkr2w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fdfRD2hSrzfdc for ; Sun, 22 Mar 2026 01:51:20 +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: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@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);