From nobody Sun Mar 22 01:55:25 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 4fdfX3150pz6VBw4 for ; Sun, 22 Mar 2026 01:55:31 +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 4fdfX30fCFz3xrL for ; Sun, 22 Mar 2026 01:55:31 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774144531; 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=IF+yUw4pMqZptwbHNoSPxNJcr35bkZMs2pDggDJbBCU=; b=sSxPnz4rwurLdfK+iBXyA15gNwsXp7rFkPS1NBHAu9vjNqzNSQ5FQ8J5EwHdZR68PSyeWc l9H+cPyHGe+/7egz5Milua3QrDU3nBUSK9CZuR4HKxN2r8KS4Jfku57JLj6lQ0SyCctm30 ZZ5TeDqFoTY7KIcmo1vvfG8VC4ie5nf4NPucht9ujP4ScfFl+Hw3khrukRTENxbEYRwxHv O0+VeIjHjRgetTgnHK4ELMx+KOBgt2nSDnObFbCz76QaKB1UdMFfmXLSEl5L5vTmgkfzOk o5Gnhgo6XnX7kXvLz5YRSeWdHxd1tQpwj2B/Raq2CoafzFkM6gnZTer0j9BEYw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774144531; a=rsa-sha256; cv=none; b=nQzlt4j0Qm0xtcg7R50o0iydeakQRiZ5O5iyhv6pF7txWoFDHA1X8JfhnJfbRF/wYSjEmg Yrn49hjznyNs9iDWi5qyja9wVwkWgmDRyYih5d4offqTtpVonrOO38yhKHO1ZuHs5iFfmf Zco8j7Nub7EtRPXhh4eSeufDZtbN2X+321CD7gZH+inDJAyxNeFuN1Ywikk8z0dW1h0aRV 5AGVvZ/JS48H1yQrJ9k200YWxAMHSVaip4l372JCTHeS/NQkTsxi1+INHjhbW4yb11bWjQ f+5d3rhw/Mgg0Kew4O4d5pKbRTWc07HSuqylnCLGtE9PjTk/yi5JcVGBtvnMYA== 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=1774144531; 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=IF+yUw4pMqZptwbHNoSPxNJcr35bkZMs2pDggDJbBCU=; b=rA49arww9HiulmYd98etyd5SeCw57eB2tx8HZVEoZ/DC5V1uB55u7U/eARUtoVDnGDunGN t1KRkFagKfgOchFHnA7w7zG+Po91a8gBWIaynNPR2Hfrb/h2pUq7CxWcYPVQAJ+fZGkD8s +WMyiFAGAsdVV934PcZ0f5ePBWhsNTycP57FBcrNgGcpb0q8XNTrVFN/F4qJVhCVwVfX02 xoeiTwpJ5yu6p7MUgjlhSEAkoqJiuNQZWn6YkNyrpAen8MZ7U+URpIYZCe9rLLP6odCwQa A0F0x5fHQe0PP0Dg0UlW3GZMeiyHcAVsnOU+agvy8S9pQ8zpI7wZeD3gf3N+Hg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fdfX30FlRzffQ for ; Sun, 22 Mar 2026 01:55:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 435c9 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sun, 22 Mar 2026 01:55:25 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Rick Macklem Subject: git: d288383b4d80 - stable/14 - 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/14 X-Git-Reftype: branch X-Git-Commit: d288383b4d80e4b5e1bac09722e63d27074f4244 Auto-Submitted: auto-generated Date: Sun, 22 Mar 2026 01:55:25 +0000 Message-Id: <69bf4c0d.435c9.41917522@gitrepo.freebsd.org> The branch stable/14 has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=d288383b4d80e4b5e1bac09722e63d27074f4244 commit d288383b4d80e4b5e1bac09722e63d27074f4244 Author: Rick Macklem AuthorDate: 2026-03-08 21:09:36 +0000 Commit: Rick Macklem CommitDate: 2026-03-22 00:53:32 +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 bbfcd96408c2..7d0d5e2120bb 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 *dp = *dpp, *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, @@ -468,6 +470,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); @@ -489,7 +494,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);