From nobody Sun Mar 8 22:11:26 2026 X-Original-To: dev-commits-src-main@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 4fTZ9V278Fz6Tt9S for ; Sun, 08 Mar 2026 22:11:26 +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 4fTZ9V1fSVz3VvJ for ; Sun, 08 Mar 2026 22:11:26 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1773007886; 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=njgMHzPP+ZNuYh3haiSohBGuABfk/XIhFQMoaSSF+9o=; b=tZ2nRwTzcGX1D7MNe8orUWRFRlmRmaFP+7D5gwXxxM5GGZB/kRo2waWdgOPFYQQ3w37Kpz 2sve/6o9BjmiXz4ZeYGaOw4CQerOfcHM82aUPw8EUyQfCqkR5MH6wzaZn1MvZu24PCl6SO dcSf3oT+h8/sGMxCpOqiIbDp8DwdYX6zYngB0G7uZ9uBOfNb+cxdBjn3RttTbfhLQXbMHQ 0BCnZ72b1k3Is5eWoy0JKL9wapYegjTn5VDtozc978pB9GNmeo14d72PtoDDVXAzT2/HZV XmyM86UWrUSN1PaK7lgufrRzfBAjFvKF3jL0ACUtZhsHGOcuMUqfUIR2WDVoNg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1773007886; a=rsa-sha256; cv=none; b=rh3KZRVQSezMSUER8ZK3WCtl1M03aM1FMv54XSaxaCnVQSOj6CfFqOxaamoAzvC4VLlHHZ uXoZBoLSVS7WiJFVofKaqCADoO2JOdi9+lMLsmnl7J97v30kk0ydhED/VOoOVO/r1mPB67 bgJ+RZ1q/m2b91DEOMZN9lqAViOqOKk6ZsuayyDp2TureSmFzCz6gHgIqMhAZFMNoRMhfC LBXPBcXrs7UzFWmSm4S7E/0MiERTFl8KPdCK5OR+cmYXvxWlnZ8zKnnKynZZ1SSlOrXN81 9MFkCdoLJz47P4y6IcPIXdskchQf5lxRw1CCYUCYZ1Cncu6fuTYTUPsCwVVNLg== 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=1773007886; 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=njgMHzPP+ZNuYh3haiSohBGuABfk/XIhFQMoaSSF+9o=; b=w4P0/OY1Sh+3QcOyHMRVHbubceJlig0HQq+U54MIek7G9ir8s4gYJzfCEDDFtTvycahr0l U86eTkoryPwvOaEpLKGQIs2BtsYwczkKlK8sEWodsv7TR2p5UeZbQn46QoVP2V1N66RBPe wktwgXrFuUHJh453eBv4xYEbNIT+hHQ/jhZSgKh+JRFGzWH/e15N4QKDXxmrVqB1Qh5ulB dMKDdaExu2oGWVPmKAfbXCTO06EhpcdHMUJty4hbhIozhiSOEJrWDuDaq5TExyTtMu7UpN xhnLQHWtVnPIzHi1IMI17R7/RzEWmqRtFUbLwblBarSx7mF+kF9PXju73pzrYw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fTZ9V0fWCz1CVN for ; Sun, 08 Mar 2026 22:11:26 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3ebf6 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sun, 08 Mar 2026 22:11:26 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Rick Macklem Subject: git: 016570c4463d - main - nfs_clstate.c: Handle the same stateid case correctly List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@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/main X-Git-Reftype: branch X-Git-Commit: 016570c4463d5908953355ee1cf9a385ad9601b4 Auto-Submitted: auto-generated Date: Sun, 08 Mar 2026 22:11:26 +0000 Message-Id: <69adf40e.3ebf6.2b8653f0@gitrepo.freebsd.org> The branch main has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=016570c4463d5908953355ee1cf9a385ad9601b4 commit 016570c4463d5908953355ee1cf9a385ad9601b4 Author: Rick Macklem AuthorDate: 2026-03-08 21:09:36 +0000 Commit: Rick Macklem CommitDate: 2026-03-08 21:09:36 +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 Tested by: Peter Much MFC after: 2 weeks --- 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);