From nobody Tue Jun 23 18:02:00 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 4glCZJ3Wkbz6hqJL for ; Tue, 23 Jun 2026 18:02:00 +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 4glCZJ2PPNz3p0D for ; Tue, 23 Jun 2026 18:02:00 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1782237720; 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=HcWgaqtDF753eeZmZ5jKV5W+j7STjgRSH1eeYMKcUpg=; b=QloyKxVXeC/ngn1s1OyyzzZ73V7HCEoYXrOzyDDPsLmCAdbc+Ux9GmMk5AQ3vITjRzbh6f MZ91TZGIDTsdOKSbGRptrr9WMKHGwU4JnSpTFhxgw8a3Q4bxxmdvQynD4AEhV6M31jP+hZ 5uh12Gkm5YbS1qw0ghM7XgWCp2DQCi0Q+K645vI0jMmRBUVH895YE5QKUzOzA9DkxK2pI8 38kLLjEKAbtoz9bdgAr0EQuSAvY3wsodUPrmz29owXUPrxwaeleu9TZdYIVlpZQXPt5p3H Ie/8fGu/+eaE9kq6lLxuCGeFIwQ+Ttr908ihZa9/fILwPSlXsuGTBJFE25WnEQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1782237720; a=rsa-sha256; cv=none; b=WTp+3Y5Pbgf2P5O0YyvEqK5cQHJqdDxKiP1OEjC7TK9u62OIL1xNN9Lqeyv9xZp3tuZ5El 1kuAve31D9d0X8ir7qS+UPLvaaxzn/X9YHyxGyDvhZtQgRTGMrVdnJ2RsKmprLXqwi6SuN IInkOpTIpBCzYRw9uAh4Cz7jQl3aPVOXvWo4TMdcu0uGBrinb5Gk6wg+Y5C0iJUum3mB/P /f4FOlleHlz+L8nrzkuwmsylKZyMIw00bLY4/3HlUEYPojMAAYs4htzJ8SNv5AIv1C40VO cJ+lKR+z7V8yQ0vPPXabenlfPsHu1B9LqLdysTHWodgVzPmv3Yr+uaTahGxyzg== 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=1782237720; 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=HcWgaqtDF753eeZmZ5jKV5W+j7STjgRSH1eeYMKcUpg=; b=M6P+ySIJr+08IzNXsZBrXzZEVO98roYvx7ikpG2P/v68kGJmlC3H+tDPhAm2ao9QedOvrU LNY176+1mdMuYePY8+Ry2IZCua9G6kjXKrZTOhBamw5pClS9wFOn0Io0gGBroRIxyrpZ0d Z8h4nAGR+vXAqpsBLYmAE2cwUugAVhjmBnmDdownC8vlkcVk7F0CIqkKLuGW/gBYYvg5Sm oeaoEXpe46pgGyvp9EDJPwt6myZpBoYVg7wpSlfimLh+ZLwe/+ZWLXsrZnJ8k8UO31pVaW 7yETVIryn2H9NTCtObUZzpYrUkWiu5XtFjRLhVu4KsfGoTKH+d0gcMpt839ELQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4glCZJ1DhQzldM for ; Tue, 23 Jun 2026 18:02:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3a780 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 23 Jun 2026 18:02:00 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Alan Somers Subject: git: 2c1482e30536 - main - fusefs: fix a race in the pre-init tests 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 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/main X-Git-Reftype: branch X-Git-Commit: 2c1482e305368af182a7bde0e53d0d180b319326 Auto-Submitted: auto-generated Date: Tue, 23 Jun 2026 18:02:00 +0000 Message-Id: <6a3aca18.3a780.7f85d47e@gitrepo.freebsd.org> The branch main has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=2c1482e305368af182a7bde0e53d0d180b319326 commit 2c1482e305368af182a7bde0e53d0d180b319326 Author: Alan Somers AuthorDate: 2026-06-23 17:12:04 +0000 Commit: Alan Somers CommitDate: 2026-06-23 18:01:48 +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 MFC after: 2 weeks Sponsored by: ConnectWise Reviewed by: siva Differential Revision: https://reviews.freebsd.org/D57781 --- 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 b9e4afbbea0b..0e395a4fabb3 100644 --- a/tests/sys/fs/fusefs/mockfs.cc +++ b/tests/sys/fs/fusefs/mockfs.cc @@ -550,9 +550,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() { @@ -1018,6 +1017,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 c8f90c2f5402..19693e50d212 100644 --- a/tests/sys/fs/fusefs/mockfs.hh +++ b/tests/sys/fs/fusefs/mockfs.hh @@ -388,6 +388,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); }