Merge "sys_vfs_test: fix expectation for Linux 6.7." into android13-tests-dev am: fb7d4c4761 am: 412b768702
Original change: https://android-review.googlesource.com/c/platform/bionic/+/2929452
Change-Id: I0884211e3ecacae43736744de1b1f74f43b29be7
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/tests/sys_vfs_test.cpp b/tests/sys_vfs_test.cpp
index 242f8d4..363e49b 100644
--- a/tests/sys_vfs_test.cpp
+++ b/tests/sys_vfs_test.cpp
@@ -28,10 +28,21 @@
EXPECT_EQ(4096, static_cast<int>(sb.f_bsize));
EXPECT_EQ(0U, sb.f_bfree);
EXPECT_EQ(0U, sb.f_ffree);
- EXPECT_EQ(0, sb.f_fsid.__val[0]);
- EXPECT_EQ(0, sb.f_fsid.__val[1]);
EXPECT_EQ(255, static_cast<int>(sb.f_namelen));
+ // Linux 6.7 requires that all filesystems have a non-zero fsid.
+ if (sb.f_fsid.__val[0] != 0U) {
+ // fs/libfs.c reuses the filesystem's device number.
+ struct stat proc_sb;
+ ASSERT_EQ(0, stat("/proc", &proc_sb));
+ EXPECT_EQ(static_cast<int>(proc_sb.st_dev), sb.f_fsid.__val[0]);
+ EXPECT_EQ(0, sb.f_fsid.__val[1]);
+ } else {
+ // Prior to that, the fsid for /proc was just 0.
+ EXPECT_EQ(0, sb.f_fsid.__val[0]);
+ EXPECT_EQ(0, sb.f_fsid.__val[1]);
+ }
+
// The kernel sets a private bit to indicate that f_flags is valid.
// This flag is not supposed to be exposed to libc clients.
static const uint32_t ST_VALID = 0x0020;