From nobody Sun Mar 8 22:11:26 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 4fTZ9b6hP0z6TsYS for ; Sun, 08 Mar 2026 22:11: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 4fTZ9b3Sgzz3Vw1 for ; Sun, 08 Mar 2026 22:11:31 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1773007891; 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=yv+U3hXd8QzZivi8NPs4O2SXxl9WS/my/ICxI+8R72YOmdqynFODU2bTdWFYvCFapW0IKH PgFeXFHWKjjaak0ZFNJgLWavEw/8BBKY4p9KXVUdRsqSmso1afowYTayBnIGys2yskYwLQ CSSiL1euoj3bpOeGwzIyMTHjkBETPcNZjBApEWtTkc/rF2NThPbEwuvFKCEC1Ctavcy8I0 WiyfuDzQk90tMqnDTeX9xdKUvmVV/uy8bkA8gcwxeqjMlED4EnH5fPOtayipxZUcHp5xuR hyqMqEZIdp7w4nLKsayUqGHc+fyZoTWnzrLRh/p/HpzdH2dIAYdynCOyEC1IYA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1773007891; a=rsa-sha256; cv=none; b=EoBtAukpBtoPFm2aLhF2LZyvbB5hgU1qx9ibo3FdOvjmvN9pcTgIaUs5hHYaCRWHd96I4X Lj+MfXOkpVO1yMD/N5k2vMi21wm7mo0L87PAzshiIV7W2+CeSq2G74in0iD8rtUZomJNiq IvhzFCPesHdQvhB9yz3t4UW9CWOz6yM8CHt3F8ay5UQ5LHRU56oZbPDg1r8z9CxLlkwC+g awqM6npyeyuApJuPuz4Pta5QDxStVtRH+bp4srZ3cnBqyN+laqsi3LDHRizATrmF6BToji MXB3SDwgz2ED11ocuIGcBfkj3l3HuIPWS6yQyHivno8nI3ypqGD+blIXbCBVCg== 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=1773007891; 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=RNiZz3NaMT1s34Nwg2ZJxbSZ2HOwu84fOAAbXeBtMm4Yi8tg3JKNgUgu6NV/yBRQHuey9A Xx/SPnYGbtOKrXhrWsGR/QdQndKsIDi26jLE2vo1FraEjr2iRe8qdoOo49JJpg3dhHRaqi aJdEkRkhaahveROYlvLV2EphBucxYOcX8tH+mVriuH23rwAAbt0rjfqYFuoPgAhijJAL0K Ukw+dDnllpt8dEcch+fTtsfJ/CT+MVj2QurGN3TBjJ5zpjOgHXcunrTK5PDEBceftZOjRQ kTWhtIvFZfItsdbcHzl024vj9nTEgK3G+VD80UhSNtaEkqU6JhUpH/U2D6XB/Q== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fTZ9b2z3Zz1C9J for ; Sun, 08 Mar 2026 22:11:31 +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 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/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);