From nobody Wed Jul 8 17:57:33 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 4gwQmG3z4Tz6kc1Z for ; Wed, 08 Jul 2026 17:57:34 +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 4gwQmG0gmrz47XD for ; Wed, 08 Jul 2026 17:57:34 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1783533454; 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=QkWubyhp73EjFOj4m18C0itnJAYbybb6JAML8ZsVkJE=; b=vDN4eMfBfONVeEK/TNk5fi9PKqAdpvdBI+fU+mmK44CfkSNlYJA9U7SqZRMIyk+u+cQhCM uKGOXSKHsK2vnLtJdn3LDaiFjPZk4zbZuxLAIDltsywEXbAICpuRfjkqpbGfCG/auK7ccg zOFZrSt+MxL4wix5QZuxOHl9NJqm2XP4N+kjMTJ90OuG+wDiqspg03vq9bkzAUOuiswY4T a0XTeOjtNNVD9JEBpxkelLoZ7PFbPBu7E71CttkR6N0yeFWjE37jwTC0gErOYhWFDLIHL8 o9azRmcvUcgTh0yeeV0uOYd+GKISmLmfXSkCgPlD2pv5Vn2vuE4NjpAoMlLfog== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1783533454; a=rsa-sha256; cv=none; b=oZRN/sPwp3RRpWz69kR21eHTIj9EQMVGdA992bKxqtWuL/UybTUL9JrhjetCy/Bp690uV6 UBIqVgGJoDA9oO50yDKDNqYjRSN89FCV0FfYcmCQC5DH9kGfPr/t88uLxDe6H0DFOg+LvO aSgYcaUhVgUpnZQReUCYNQO836NKjGFoJBa5Kvhk+2qs+QUIQgF2jnfqZkSsPv5Mrl/moY 59dUoABHqva+KRBocbRwH2rDpc6nV6yyeii904BDFZLUOMzGSsfa17z+si/5jwg6/IR4MF zCvP7W27S+P9ll+5u5MY3Ot3ZEhxwnL2jT+BxklN3qk+OtlT6SnZyr091/NURw== 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=1783533454; 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=QkWubyhp73EjFOj4m18C0itnJAYbybb6JAML8ZsVkJE=; b=xFl6GoZKTZECfyKAXCkdPe09VgDGwBZpXHceeXGgjLACPc1pk7DgMFu4Sm+lcRMhk2R5Gs zoPCn8da4vvNhprNf8C7l1MfYZCPKAhNRLTJ9hhgqJeyA8cUOT77uko/YwqsQ7NfVFaBFt Yr6/wrQMXKuS2e1Jn0hIoqkZQJ3YnX/t4LG9t2DzxhhG+KJ7pGzzzoFEqav8ifCRXRNlwS EtFwkXjsoo/H4VDgIznLNPxeTMoaXyt/2upDvICIOri5oxxWnl3KXiwSct+9vyA8J4ODhb hvlJlB4Ao9mIrn0ew9TjrAKRYDo48++xfF04Oa9UwLi3yqTcr4Nwo5YynEyWAw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4gwQmF6l5WzZ63 for ; Wed, 08 Jul 2026 17:57:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 38a33 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 08 Jul 2026 17:57:33 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alan Somers Subject: git: c57b054c9e7d - stable/15 - fusefs: fix a race in the pre-init tests 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: asomers X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: c57b054c9e7d11fcc2fcb3036a73995a758c095e Auto-Submitted: auto-generated Date: Wed, 08 Jul 2026 17:57:33 +0000 Message-Id: <6a4e8f8d.38a33.179d169a@gitrepo.freebsd.org> The branch stable/15 has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=c57b054c9e7d11fcc2fcb3036a73995a758c095e commit c57b054c9e7d11fcc2fcb3036a73995a758c095e Author: Alan Somers AuthorDate: 2026-06-23 17:12:04 +0000 Commit: Alan Somers CommitDate: 2026-07-08 17:56:50 +0000 fusefs: fix a race in the pre-init tests These tests allow the user to customize the INIT response. But it's necessary to block the daemon's service loop from running until those expectations have been set. This race has never caused failures before simply due to luck. But now it's failing on slower platforms. PR: 296236 Reported by: siva Sponsored by: ConnectWise Reviewed by: siva Differential Revision: https://reviews.freebsd.org/D57781 (cherry picked from commit 2c1482e305368af182a7bde0e53d0d180b319326) --- tests/sys/fs/fusefs/mockfs.cc | 11 ++++++++--- tests/sys/fs/fusefs/mockfs.hh | 3 +++ tests/sys/fs/fusefs/pre-init.cc | 6 ++++++ 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/tests/sys/fs/fusefs/mockfs.cc b/tests/sys/fs/fusefs/mockfs.cc index a377ba832ef5..fc9a80639283 100644 --- a/tests/sys/fs/fusefs/mockfs.cc +++ b/tests/sys/fs/fusefs/mockfs.cc @@ -539,9 +539,8 @@ MockFS::MockFS(int max_read, int max_readahead, bool allow_other, if (0 != sigaction(SIGUSR1, &sa, NULL)) throw(std::system_error(errno, std::system_category(), "Couldn't handle SIGUSR1")); - if (pthread_create(&m_daemon_id, NULL, service, (void*)this)) - throw(std::system_error(errno, std::system_category(), - "Couldn't Couldn't start fuse thread")); + if (!no_auto_init) + start_service(); } MockFS::~MockFS() { @@ -997,6 +996,12 @@ void MockFS::read_request(mockfs_buf_in &in, ssize_t &res) { ASSERT_TRUE(res == static_cast(in.header.len) || m_quit); } +void MockFS::start_service() { + if (pthread_create(&m_daemon_id, NULL, service, (void*)this)) + throw(std::system_error(errno, std::system_category(), + "Couldn't Couldn't start fuse thread")); +} + void MockFS::write_response(const mockfs_buf_out &out) { fd_set writefds; pollfd fds[1]; diff --git a/tests/sys/fs/fusefs/mockfs.hh b/tests/sys/fs/fusefs/mockfs.hh index f98a5337c9d1..3090701c815e 100644 --- a/tests/sys/fs/fusefs/mockfs.hh +++ b/tests/sys/fs/fusefs/mockfs.hh @@ -383,6 +383,9 @@ class MockFS { /* Process FUSE requests endlessly */ void loop(); + /* Begin processing requests from the kernel */ + void start_service(); + /* * Send an asynchronous notification to invalidate a directory entry. * Similar to libfuse's fuse_lowlevel_notify_inval_entry diff --git a/tests/sys/fs/fusefs/pre-init.cc b/tests/sys/fs/fusefs/pre-init.cc index 2d3257500304..70d7ddcdb0f4 100644 --- a/tests/sys/fs/fusefs/pre-init.cc +++ b/tests/sys/fs/fusefs/pre-init.cc @@ -102,6 +102,8 @@ TEST_F(PreInit, unmount_before_init) }))); expect_destroy(0); + m_mock->start_service(); + ASSERT_EQ(0, pthread_create(&th1, NULL, unmount1, NULL)); nap(); /* Wait for th1 to block in unmount() */ sem_post(&sem0); @@ -147,6 +149,8 @@ TEST_F(PreInit, signal_during_unmount_before_init) sem_wait(&sem0); }))); + m_mock->start_service(); + if ((child = ::fork()) == 0) { /* * In child. This will block waiting for FUSE_INIT to complete @@ -219,6 +223,8 @@ TEST_P(PreInitP, getattr_before_init) out.body.attr.attr_valid = UINT64_MAX; }))); + m_mock->start_service(); + EXPECT_EQ(0, stat("mountpoint", &sb)); EXPECT_EQ(nlink, sb.st_nlink); }