summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorAlan Somers <asomers@FreeBSD.org>2025-12-21 08:32:31 -0700
committerAlan Somers <asomers@FreeBSD.org>2025-12-22 10:18:16 -0700
commitf51e9d0e0988df58c94db586ab5c8b5fd091c004 (patch)
tree9029d6fc419117ff817a2e40f355894c2a821254 /tests
parent4f35a84b32412f5cf54e08cd97cd6eee407fb30e (diff)
fusefs: Fix further intermittency in the BadServer.ShortWrite test case
After being unmounted, the mockfs server would occasionally read from /dev/fuse again, if the main function didn't exit fast enough, getting an ENODEV error. Handle that appropriately. Reported by: Siva Mahadevan <me@svmhdvn.name> Fixes: d86025c1d49c84c4dc8c3635c83c078ad56e5a53 MFC after: 1 week Reviewed by: Siva Mahadevan <me@svmhdvn.name> Differential Revision: https://reviews.freebsd.org/D54331
Diffstat (limited to 'tests')
-rw-r--r--tests/sys/fs/fusefs/mockfs.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/tests/sys/fs/fusefs/mockfs.cc b/tests/sys/fs/fusefs/mockfs.cc
index b6a32d9b60af..a377ba832ef5 100644
--- a/tests/sys/fs/fusefs/mockfs.cc
+++ b/tests/sys/fs/fusefs/mockfs.cc
@@ -980,7 +980,11 @@ void MockFS::read_request(mockfs_buf_in &in, ssize_t &res) {
}
res = read(m_fuse_fd, &in, sizeof(in));
- if (res < 0 && errno != EBADF && !m_quit && !m_expect_unmount) {
+ if (res < 0 && errno == ENODEV && m_expect_unmount) {
+ /* The kernel unmounted us, as expected. */
+ m_quit = true;
+ }
+ if (res < 0 && errno != EBADF && !m_quit) {
m_quit = true;
FAIL() << "read: " << strerror(errno);
}