From nobody Tue Mar 17 00:38:24 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 4fZY3N2z3Dz6VHCr for ; Tue, 17 Mar 2026 00:38:24 +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 4fZY3N1P9bz42SB for ; Tue, 17 Mar 2026 00:38:24 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1773707904; 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=AU6yEj6HeFcsTfimjpn2VCA3FYpCTrCsX2PDDkQb9Wg=; b=j3dy5uRXITrizw+KiVdu5bEcG8AKijOpc+TUArjywG0ub1E7ZYweAZsGIAvaBOI3oFc/lQ 4u8WMObpLbfD4K8Xbm+vbSFogmEesr51kFRh/IPXOZ938r80/cn9uhUP4KBHJZQAieY5cc FgST8PqT9g5fHNhWk2NtGNVPRxG0hyyz9dbPTPjd1Y3hRy9aKzmBfXFRz+y0osrmIkazx+ MvFpqQGUdH6ydyoQ7wH2OZpBiEyx5X8gUclvsHOmp2OrTInpoVz1TCrf7Xe/QQtJJFEcZw JY5n6IMa36Pqq/HYs8QtDESzjim3nnZuSx7DLo6HtNVAhv9RXlPSLQdVPWGiHA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1773707904; a=rsa-sha256; cv=none; b=th7bNXv0KWV5w/91Ym7BABv5en/H/SgueqvuQfg9CCyASXRJeLHHxP/AWDMFk0huw1HFqc StkOKTrYvsw/7Ef+nuVMxx6ni8lP0H1ba5yxpy0/dj5nLD5aIebJkQB5ghGRkoonMdIYh+ v4AEpcvsjrMSrJxsF/4B+eRlatfvkNIJIkCDo0NSgQ/jQ23mb0ROudgUEnevsbYQJl9iRQ p7/Obfkcm9WfyC2LDpFf2b3m8S4S5VArEhZ7vM10n8azOgprzKv8E3EsbQJYKUl2Tt1cn9 jcLnVVXmmkEmo19JT0rfKJ/944DajLKlT+/CrAU5muh5JfSWK2k0kevrMwGsCw== 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=1773707904; 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=AU6yEj6HeFcsTfimjpn2VCA3FYpCTrCsX2PDDkQb9Wg=; b=pIfLle/xRwrUXpYfUg81q4485IPzyLcZUXytmrqhmR6KbUl688QQHUIrbyA7pcsrZt2KEJ t8XDQ6CPYCChKviQSh7ocvmHIBjS5NYcbSmSq9MdRJx2DS7BGlFn9T6CgNCFO6Glp+nUlE a7vIg5YLhq4KnYOKLQijQGcpcSJo4SCdIElivPI5aIaOJjinVyfbbaHBDlozvHHn0ITeSB gJQrCSqG1Uc+ZXy3L4SgyPU4G1weJvraYZWxdqHm2xqwMqJ/2MCFJPhv0vOrt+ae0owwFL Aw4QHWLf9agKZcchFzhUrZ9hhYSzDAz3YDI/wlQp2NDIrmK7WRHmYe2wqdfJig== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fZY3N0qY8zxqD for ; Tue, 17 Mar 2026 00:38:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 313b3 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 17 Mar 2026 00:38:24 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 1ff01f6ca2d3 - stable/15 - vn_delayed_setsize(): post-commit review' changes 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: kib X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 1ff01f6ca2d302d36946277df14cdea00052dbc6 Auto-Submitted: auto-generated Date: Tue, 17 Mar 2026 00:38:24 +0000 Message-Id: <69b8a280.313b3.1994291c@gitrepo.freebsd.org> The branch stable/15 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=1ff01f6ca2d302d36946277df14cdea00052dbc6 commit 1ff01f6ca2d302d36946277df14cdea00052dbc6 Author: Konstantin Belousov AuthorDate: 2026-03-06 00:18:11 +0000 Commit: Konstantin Belousov CommitDate: 2026-03-15 06:58:57 +0000 vn_delayed_setsize(): post-commit review' changes (cherry picked from commit 92d7808d88f0de979d76446c76c7324731c41302) --- sys/fs/deadfs/dead_vnops.c | 6 ++--- sys/fs/nfsclient/nfs_clport.c | 2 +- sys/kern/vfs_vnops.c | 52 +++++++++++++++++++++---------------------- sys/sys/vnode.h | 12 +++++----- 4 files changed, 35 insertions(+), 37 deletions(-) diff --git a/sys/fs/deadfs/dead_vnops.c b/sys/fs/deadfs/dead_vnops.c index b6d6fa55d221..c793ef2ebf4d 100644 --- a/sys/fs/deadfs/dead_vnops.c +++ b/sys/fs/deadfs/dead_vnops.c @@ -55,6 +55,9 @@ struct vop_vector dead_vnodeops = { .vop_bmap = VOP_EBADF, .vop_close = dead_close, .vop_create = VOP_PANIC, + .vop_delayed_setsize = VOP_NULL, + .vop_fplookup_symlink = VOP_EOPNOTSUPP, + .vop_fplookup_vexec = VOP_EOPNOTSUPP, .vop_getattr = VOP_EBADF, .vop_getwritemount = dead_getwritemount, .vop_inactive = VOP_NULL, @@ -78,9 +81,6 @@ struct vop_vector dead_vnodeops = { .vop_vptocnp = VOP_EBADF, .vop_unset_text = dead_unset_text, .vop_write = dead_write, - .vop_fplookup_vexec = VOP_EOPNOTSUPP, - .vop_fplookup_symlink = VOP_EOPNOTSUPP, - .vop_delayed_setsize = VOP_NULL, }; VFS_VOP_VECTOR_REGISTER(dead_vnodeops); diff --git a/sys/fs/nfsclient/nfs_clport.c b/sys/fs/nfsclient/nfs_clport.c index 1156e1738703..cf163adc02de 100644 --- a/sys/fs/nfsclient/nfs_clport.c +++ b/sys/fs/nfsclient/nfs_clport.c @@ -646,7 +646,7 @@ ncl_pager_setsize(struct vnode *vp, u_quad_t *nsizep) (curthread->td_pflags2 & TDP2_SBPAGES) == 0) setnsize = true; else - vn_delay_setsize(vp); + vn_delayed_setsize(vp); } if (nsizep == NULL) { NFSUNLOCKNODE(np); diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c index 164a6b30d9ad..c1253b4439a5 100644 --- a/sys/kern/vfs_vnops.c +++ b/sys/kern/vfs_vnops.c @@ -1964,25 +1964,25 @@ _vn_lock_fallback(struct vnode *vp, int flags, const char *file, int line, } static int -vn_lock_delayed_setsize(struct vop_lock1_args *ap) +vn_lock_delayed_setsize(struct vnode *vp, int flags, const char *file, int line) { - struct vnode *vp; + struct vop_lock1_args ap; int error, lktype; bool onfault; - vp = ap->a_vp; - lktype = ap->a_flags & LK_TYPE_MASK; + ASSERT_VOP_LOCKED(vp, "vn_lock_delayed_setsize"); + lktype = flags & LK_TYPE_MASK; if (vp->v_op == &dead_vnodeops) return (0); VI_LOCK(vp); - if ((vp->v_iflag & VI_DELAYEDSSZ) == 0 || (lktype != LK_SHARED && + if ((vp->v_iflag & VI_DELAYED_SETSIZE) == 0 || (lktype != LK_SHARED && lktype != LK_EXCLUSIVE && lktype != LK_UPGRADE && lktype != LK_TRYUPGRADE)) { VI_UNLOCK(vp); return (0); } - onfault = (ap->a_flags & LK_EATTR_MASK) == LK_NOWAIT && - (ap->a_flags & LK_INIT_MASK) == LK_CANRECURSE && + onfault = (flags & LK_EATTR_MASK) == LK_NOWAIT && + (flags & LK_INIT_MASK) == LK_CANRECURSE && (lktype == LK_SHARED || lktype == LK_EXCLUSIVE); if (onfault && vp->v_vnlock->lk_recurse == 0) { /* @@ -1994,35 +1994,38 @@ vn_lock_delayed_setsize(struct vop_lock1_args *ap) VOP_UNLOCK(vp); return (EBUSY); } - if ((ap->a_flags & LK_NOWAIT) != 0 || + if ((flags & LK_NOWAIT) != 0 || (lktype == LK_SHARED && vp->v_vnlock->lk_recurse > 0)) { VI_UNLOCK(vp); return (0); } if (lktype == LK_SHARED) { VOP_UNLOCK(vp); - ap->a_flags &= ~LK_TYPE_MASK; - ap->a_flags |= LK_EXCLUSIVE | LK_INTERLOCK; - error = VOP_LOCK1_APV(&default_vnodeops, ap); + ap.a_gen.a_desc = &vop_lock1_desc; + ap.a_vp = vp; + ap.a_flags = (flags & ~LK_TYPE_MASK) | LK_EXCLUSIVE | + LK_INTERLOCK; + ap.a_file = file; + ap.a_line = line; + error = VOP_LOCK1_APV(&default_vnodeops, &ap); if (error != 0 || vp->v_op == &dead_vnodeops) return (error); if (vp->v_data == NULL) goto downgrade; - MPASS(vp->v_data != NULL); VI_LOCK(vp); - if ((vp->v_iflag & VI_DELAYEDSSZ) == 0) { + if ((vp->v_iflag & VI_DELAYED_SETSIZE) == 0) { VI_UNLOCK(vp); goto downgrade; } } - vp->v_iflag &= ~VI_DELAYEDSSZ; + vn_clear_delayed_setsize_locked(vp); VI_UNLOCK(vp); VOP_DELAYED_SETSIZE(vp); downgrade: if (lktype == LK_SHARED) { - ap->a_flags &= ~(LK_TYPE_MASK | LK_INTERLOCK); - ap->a_flags |= LK_DOWNGRADE; - (void)VOP_LOCK1_APV(&default_vnodeops, ap); + ap.a_flags &= ~(LK_TYPE_MASK | LK_INTERLOCK); + ap.a_flags |= LK_DOWNGRADE; + (void)VOP_LOCK1_APV(&default_vnodeops, &ap); } return (0); } @@ -2030,7 +2033,6 @@ downgrade: int _vn_lock(struct vnode *vp, int flags, const char *file, int line) { - struct vop_lock1_args ap; int error; VNASSERT((flags & LK_TYPE_MASK) != 0, vp, @@ -2038,15 +2040,11 @@ _vn_lock(struct vnode *vp, int flags, const char *file, int line) VNPASS(vp->v_holdcnt > 0, vp); error = VOP_LOCK1(vp, flags, file, line); if (__predict_false(error != 0 || VN_IS_DOOMED(vp))) - return (_vn_lock_fallback(vp, flags, file, line, error)); - if (__predict_false((vp->v_iflag & VI_DELAYEDSSZ) == 0)) - return (0); - ap.a_gen.a_desc = &vop_lock1_desc; - ap.a_vp = vp; - ap.a_flags = flags; - ap.a_file = file; - ap.a_line = line; - return (vn_lock_delayed_setsize(&ap)); + error = _vn_lock_fallback(vp, flags, file, line, error); + if (error != 0 || __predict_true((atomic_load_short(&vp->v_iflag) & + VI_DELAYED_SETSIZE) == 0)) + return (error); + return (vn_lock_delayed_setsize(vp, flags, file, line)); } /* diff --git a/sys/sys/vnode.h b/sys/sys/vnode.h index 257e5e4f665c..e48c4db95341 100644 --- a/sys/sys/vnode.h +++ b/sys/sys/vnode.h @@ -268,7 +268,7 @@ _Static_assert(sizeof(struct vnode) <= 448, "vnode size crosses 448 bytes"); #define VI_DEFINACT 0x0010 /* deferred inactive */ #define VI_FOPENING 0x0020 /* In open, with opening process having the first right to advlock file */ -#define VI_DELAYEDSSZ 0x0040 /* Delayed setsize */ +#define VI_DELAYED_SETSIZE 0x0040 /* Delayed setsize */ #define VV_ROOT 0x0001 /* root of its filesystem */ #define VV_ISTTY 0x0002 /* vnode represents a tty */ @@ -1262,17 +1262,17 @@ vn_get_state(struct vnode *vp) }) static inline void -vn_delay_setsize_locked(struct vnode *vp) +vn_delayed_setsize_locked(struct vnode *vp) { ASSERT_VI_LOCKED(vp, "delayed_setsize"); - vp->v_iflag |= VI_DELAYEDSSZ; + vp->v_iflag |= VI_DELAYED_SETSIZE; } static inline void -vn_delay_setsize(struct vnode *vp) +vn_delayed_setsize(struct vnode *vp) { VI_LOCK(vp); - vn_delay_setsize_locked(vp); + vn_delayed_setsize_locked(vp); VI_UNLOCK(vp); } @@ -1280,7 +1280,7 @@ static inline void vn_clear_delayed_setsize_locked(struct vnode *vp) { ASSERT_VI_LOCKED(vp, "delayed_setsize"); - vp->v_iflag &= ~VI_DELAYEDSSZ; + vp->v_iflag &= ~VI_DELAYED_SETSIZE; } static inline void