From nobody Wed Aug 5 06:22:15 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 4hFL143HxMz6mhGc for ; Wed, 05 Aug 2026 06:22:16 +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 "YR1" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hFL1358Hgz3bY2 for ; Wed, 05 Aug 2026 06:22:15 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1785910935; 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=Gc766w0btE1AwT8KMLirpZOeqcZ8RwOkz3hno/Kj39I=; b=pwYwh5sUg3Id4JmzzosYBrjamT6dQOSzGE/au2y75ayz8VmMx7BPzDm4FD6Jf9JR6Q80Qr iDqIAdPbkaMIE/C+kEDUsFvbeEWLR9REkUe4CD+20UI8P2FgoEM6XNPrLFqJSjhFGHeT6j efBTwB9cWrkvq8ptwdw6A06g+oVNDoGOtrQkZXiV5mdgPhXmUKGvtil4mDXfg2qP6q7EB0 wYAiXa0pnigNkVEKvmKQydKIcBTvMH+QjepQyxuRHM1yYjBNU4chTiLLp2hoA0YdLLt8Pl ZGQQMfade9iyGxVuK5K7Zzb1hU9eWrM+eUkLw6uxXJ0A2aIue/KbBh47vzk7dw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1785910935; a=rsa-sha256; cv=none; b=o0aBu7uR4CKsp8VeJndZ8xrWVflJHp46LwngesLhVB+oTYwXFYA7uKFnb9443JaNVdnKRl 6jy1e4Xz3/6qBGRqrOdd7jfXO3FFtKMFbbbEQjefVTmkGsszU8/dkzEz9ZQX912+kHAyeM tkXB08wJ1jW/W4Viz8aUgUfnAGK2O6oneFb3N/HWk+ss7h9rgAueR/m5Bux42hwhLg0hfl 8eXLHQVxdEIrWaXxCEJNz+VpjiCestptRqKN3chedSYwBGzWaBxZkuTYfBrdj5/jOXvQ4C GrTzo1q/lNYx1uvLyQB7Z7IF9ymONVul0384iCY3ZROxIioP2YkM7XUdy7IhJA== 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=1785910935; 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=Gc766w0btE1AwT8KMLirpZOeqcZ8RwOkz3hno/Kj39I=; b=n7CGSoR2fJSqsfzTFSOd3p8eKm7zWE2x6f5ntU0CdJFSchy+geXm4yoQZtHMtrVUuYJjCu mgzEoufA9TqPOR6tt2ToNtLHqdQjQGpADxkxncQ3iaVuw1wYXkwqlCUSNV+4NKH2eSgjwj 0QmM6IdDFo9u62ouWArxYCaAVhZ/2EOXhFAzt67jp5S3SSQ7aUbMdO8vXOoOHP2IYQEj1i lLG57cHZalBoxTr8BdtU0HXkLhCbN5Wqtig0WjWeQ1RjYpOZ8M/NMEd9ArBxsb3Tw1EAna lFXQK4oDPR0ZPUhyXOQXFHe7N3UelteiYQy+eRa6R/N/AddqClkRDXk0Arsq2Q== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hFL133bRVz6mZ for ; Wed, 05 Aug 2026 06:22:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 2650d by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 05 Aug 2026 06:22:15 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 5adc7b1c9141 - stable/15 - vfs_busy(): add MBF_PCATCH flag to allow interrupting the sleep 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 List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list 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: 5adc7b1c9141cd002d5b3864c707530a5cce52f1 Auto-Submitted: auto-generated Date: Wed, 05 Aug 2026 06:22:15 +0000 Message-Id: <6a72d697.2650d.28bab8cf@gitrepo.freebsd.org> The branch stable/15 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=5adc7b1c9141cd002d5b3864c707530a5cce52f1 commit 5adc7b1c9141cd002d5b3864c707530a5cce52f1 Author: Konstantin Belousov AuthorDate: 2026-07-27 13:40:23 +0000 Commit: Konstantin Belousov CommitDate: 2026-08-05 06:12:48 +0000 vfs_busy(): add MBF_PCATCH flag to allow interrupting the sleep (cherry picked from commit fb4d7bd4b7676963f9f37ff47f315f8c3652538b) --- sys/kern/vfs_subr.c | 17 ++++++++++++++++- sys/sys/mount.h | 3 ++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c index 00795bdd08e7..0e3376929cdb 100644 --- a/sys/kern/vfs_subr.c +++ b/sys/kern/vfs_subr.c @@ -875,6 +875,7 @@ int vfs_busy(struct mount *mp, int flags) { struct mount_pcpu *mpcpu; + int error; MPASS((flags & ~MBF_MASK) == 0); CTR3(KTR_VFS, "%s: mp %p with flags %d", __func__, mp, flags); @@ -919,10 +920,24 @@ vfs_busy(struct mount *mp, int flags) if (flags & MBF_MNTLSTLOCK) mtx_unlock(&mountlist_mtx); mp->mnt_kern_flag |= MNTK_MWAIT; - msleep(mp, MNT_MTX(mp), PVFS | PDROP, "vfs_busy", 0); + error = msleep(mp, MNT_MTX(mp), ((flags & MBF_PCATCH) != 0 ? + PCATCH : 0) | PVFS | PDROP, "vfs_busy", 0); if (flags & MBF_MNTLSTLOCK) mtx_lock(&mountlist_mtx); MNT_ILOCK(mp); + if (error != 0) { + MNT_REL(mp); + + /* + * Clearing MNTK_MWAIT might cause spurious + * wakeups, but better clear our flag there + * then leak it. + */ + mp->mnt_kern_flag &= ~MNTK_MWAIT; + wakeup(mp); + MNT_IUNLOCK(mp); + return (error); + } } if (flags & MBF_MNTLSTLOCK) mtx_unlock(&mountlist_mtx); diff --git a/sys/sys/mount.h b/sys/sys/mount.h index a1e5e4efd460..8636443226e7 100644 --- a/sys/sys/mount.h +++ b/sys/sys/mount.h @@ -768,7 +768,8 @@ struct uio; */ #define MBF_NOWAIT 0x01 #define MBF_MNTLSTLOCK 0x02 -#define MBF_MASK (MBF_NOWAIT | MBF_MNTLSTLOCK) +#define MBF_PCATCH 0x04 +#define MBF_MASK (MBF_NOWAIT | MBF_MNTLSTLOCK | MBF_PCATCH) #ifdef MALLOC_DECLARE MALLOC_DECLARE(M_MOUNT);