From nobody Sun Mar 22 01:55:25 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 4fdfWy0Vf3z6VC1l for ; Sun, 22 Mar 2026 01:55: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 4fdfWx6VYRz3xnd for ; Sun, 22 Mar 2026 01:55:25 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774144525; 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=KUD+6D1GhBWSGwPTEuH6xzP0qQ9xr+gpSRsv0bJ64iQfQasTe933z4nHpiM9A6l+euGQjx nlrP/ktOBK9SPOpZPVzi6KrZulwmjr6q4Y6k59RiqB7XqUhcOGtn4UMBVdDF0UONt5Kbu1 3tqUp6r7WbyNy5e0llVSSzybY8aqhBYb5roW/zjv2rthLPntzE+u2BWUpZQwkxHR9jioWf aeJq1MVUmRgQWLSQuFeqD0OYCAJspxJ9cpUVAYxPwm9vnpvQQGrnmDAGDz+h8qfhp+6sFd rky+0MWENg+JoIair/1bkeICWn7YHWzzfX9/MzchmJpNAzBTZ8+mgnBJkcnVIw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774144525; a=rsa-sha256; cv=none; b=OohjAnCyxWRTNvgwWHHC2K4R3oFDbPz8atYHmdnCLk+jHLMk82LssLwNlNQVwa0SWdlaH5 Ue/KpdZ2YrDkVIxIoLjAwd+5EjpSHr0cuTM5oniRE8Zgd2QOQjNQm6ycZwb27PlZ5JVe9q APLptkUz8fXXfGpPey0Ti8n8IDeXqqR0xJdcdLZIuk+WJdruq2H1Bgd90rbnDSNikfk0f/ nv/RZHBuWyLL/JZCWC7Fatsnv/qUksUJ0NvN8pO42pCeccq8HSi/q0KYr/Rqdyr9QbSuWa QpqTdQ7UKnP4hBW0DYxkPHc0i3vcM40rEX9hnIOFCRZDvD3s/G3Ph/YhfIuuNA== 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=1774144525; 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=wOOv9YXjx4043O1k/WxWL7QiffwY4C8rcujq+3Tio8vUy2f5XO9nfYgoIGEptvzeuFkfOY 9HUJ+nfYB6UUI9DBVG6a/hZjM6UqsGYACisTJJSyH4xyzT+JjFYQDuYyW4V1yLak0Oe7GK NzcPreZvDO8Suv0qiTZzU6vfF8D2BX271L1CnPQBqa5IMDG6t0WO97yYD6UsYU4z8b/fZv 63zo82Y3HCxs99pj24ulFA4i28sNRL47eWU2t/QMj3VItvYaeexVnDPz5TeeEAIaYUyHcB Ou3DA/f5I4zc3cyzdGSp5MftiFkVProgzoNVMmwVe8fOje3/YQEBDcAc+NRkxQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fdfWx63DRzfmw for ; Sun, 22 Mar 2026 01:55:25 +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: 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/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);