From nobody Sat Mar 19 10:50:33 2022 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 4C7AC1A2CF77; Sat, 19 Mar 2022 10:50:33 +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 "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4KLHj51hWfz4kJf; Sat, 19 Mar 2022 10:50:33 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1647687033; 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=aj3JcTzbvUPK1dGX+rn/dCp0W0ypO3RzGbk7gU5xjk8=; b=FMpBneW1d/Fpe7dD7ElQ2NuPspCT4K52ElADf+MRzIQTqZbq+Q/q/gek5/aA2ZV8+w2Cb9 3sgmO51VYqgaEKLJWGcXzBgwI7or1LXOUNqj5u4VAkYWrqRCP7e5gZM6t1Bb/qRM5j0vnL 64oq7EKdtwaEGEXeLN+f2Zfdux9rd9wxK3lnMKRFniquDtzS+ot+KCcH4YyBFQoUnvq7gP Z8FeuVQBE7l4ayFErPjMh/3yXhbM1q86cM3h6kYn9Jj8Ln7UcXLaekd4/Srd53QhOEIuXg mxOj4vzOLjZVUQbANPwK1/eOPMvV75D86QwvFed0hTs6sklIOmoDEts3JyAAQw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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 did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 19C8B11F1D; Sat, 19 Mar 2022 10:50:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 22JAoXqv034008; Sat, 19 Mar 2022 10:50:33 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 22JAoXcs034007; Sat, 19 Mar 2022 10:50:33 GMT (envelope-from git) Date: Sat, 19 Mar 2022 10:50:33 GMT Message-Id: <202203191050.22JAoXcs034007@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mateusz Guzik Subject: git: 1cb0045c971b - main - vfs: add MNTK_UNLOCKED_INSMNTQUE 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: Sender: owner-dev-commits-src-main@freebsd.org X-BeenThere: dev-commits-src-main@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mjg X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 1cb0045c971be75bea76e4aa3e1df2f92f1978bc Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1647687033; 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=aj3JcTzbvUPK1dGX+rn/dCp0W0ypO3RzGbk7gU5xjk8=; b=HpLuOfOI9ynJT3sVX/9VLjLFjVBXO8tihtMdBZL4VJDS5NmVa7VOLd0FhUNqK068IijNsf iqA0e59S22Fgi6eetbpLx5G7rNFXpQ6m5v2jFk8OuK5+1cmpissfecRfKMidtPedgdwJ2i v1yPRWSv4NOABnqRQKm3sxNU9JrVS3PheAbEiwyf9aM5A+Eaj3a+FaWFM5x/tVqpi8VXbu 5H26rBg58xZu7plCqDpJRARzwn4MAoN7eaO42h/YQxpFm47WhDZx+W2pvjSd/BuWVsojK9 3SeTTJX0RHdElZ39UG0fpOLOZlQ4oNLVpQLryoPrUqEa7HaZD3gSe+82PVynCQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1647687033; a=rsa-sha256; cv=none; b=Mt6T2aqkMSzuI0EntTvj+msjStxJDUUBQX2cN7yOlNlruof1DAPEQlFEH15u9KbLSgqnU2 O00o45PBKLm2xIHfCz1pZpfIE776H+kkFHhE72OKnHib12MScIiJfcGBMFGWpSKvYjo4vT /cMbBC07I4f5cpi8+N9KUPoiy5AU//tLrZVhPeh+QVhd1o6t5q/oYa4JNCG19M6Nh/Gl63 LYMPLCulfYYGprbFm+drsKBGqoQCSKidARRZP7vKp1a0lTf6LDwLr2zksOcRDG3vJdAIPM diBQrY4hvXOkbBmczrKRjvjJ6MPeNTkcvQdoO/J5he4nLaP3Rz8nxvwrXb1evg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by mjg: URL: https://cgit.FreeBSD.org/src/commit/?id=1cb0045c971be75bea76e4aa3e1df2f92f1978bc commit 1cb0045c971be75bea76e4aa3e1df2f92f1978bc Author: Mateusz Guzik AuthorDate: 2022-03-07 11:40:04 +0000 Commit: Mateusz Guzik CommitDate: 2022-03-19 10:46:40 +0000 vfs: add MNTK_UNLOCKED_INSMNTQUE Can be used when the fs at hand can synchronize insmntque with other means than the vnode lock. Reviewed by: markj Tested by: pho (previous version) Differential Revision: https://reviews.freebsd.org/D34466 --- sys/kern/vfs_subr.c | 11 +++++++++-- sys/sys/mount.h | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c index c184530bbda6..7442153371a6 100644 --- a/sys/kern/vfs_subr.c +++ b/sys/kern/vfs_subr.c @@ -1965,7 +1965,13 @@ insmntque1_int(struct vnode *vp, struct mount *mp, bool dtr) KASSERT(vp->v_mount == NULL, ("insmntque: vnode already on per mount vnode list")); VNASSERT(mp != NULL, vp, ("Don't call insmntque(foo, NULL)")); - ASSERT_VOP_ELOCKED(vp, "insmntque: non-locked vp"); + if ((mp->mnt_kern_flag & MNTK_UNLOCKED_INSMNTQUE) == 0) { + ASSERT_VOP_ELOCKED(vp, "insmntque: non-locked vp"); + } else { + KASSERT(!dtr, + ("%s: can't have MNTK_UNLOCKED_INSMNTQUE and cleanup", + __func__)); + } /* * We acquire the vnode interlock early to ensure that the @@ -4400,6 +4406,7 @@ DB_SHOW_COMMAND(mount, db_show_mount) MNT_KERN_FLAG(MNTK_RECURSE); MNT_KERN_FLAG(MNTK_UPPER_WAITER); MNT_KERN_FLAG(MNTK_LOOKUP_EXCL_DOTDOT); + MNT_KERN_FLAG(MNTK_UNLOCKED_INSMNTQUE); MNT_KERN_FLAG(MNTK_USES_BCACHE); MNT_KERN_FLAG(MNTK_FPLOOKUP); MNT_KERN_FLAG(MNTK_TASKQUEUE_WAITER); @@ -5031,7 +5038,7 @@ vfs_allocate_syncvnode(struct mount *mp) vp->v_type = VNON; vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); vp->v_vflag |= VV_FORCEINSMQ; - error = insmntque(vp, mp); + error = insmntque1(vp, mp); if (error != 0) panic("vfs_allocate_syncvnode: insmntque() failed"); vp->v_vflag &= ~VV_FORCEINSMQ; diff --git a/sys/sys/mount.h b/sys/sys/mount.h index ae3eebd94c53..15aa7dff1e27 100644 --- a/sys/sys/mount.h +++ b/sys/sys/mount.h @@ -487,7 +487,7 @@ struct mntoptnames { #define MNTK_RECURSE 0x00000200 /* pending recursive unmount */ #define MNTK_UPPER_WAITER 0x00000400 /* waiting to drain MNTK_UPPER_PENDING */ #define MNTK_LOOKUP_EXCL_DOTDOT 0x00000800 -/* UNUSED 0x00001000 */ +#define MNTK_UNLOCKED_INSMNTQUE 0x00001000 /* fs does not lock the vnode for insmntque */ #define MNTK_UNMAPPED_BUFS 0x00002000 #define MNTK_USES_BCACHE 0x00004000 /* FS uses the buffer cache. */ /* UNUSED 0x00008000 */