diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2024-01-31 21:56:03 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2024-01-31 21:56:03 +0000 |
commit | 7d48457306ae63434bba062b3d052905267f884e (patch) | |
tree | 0d3b6bb74024a7a0253d4ae5878e8c2e7790631a | |
parent | 5a5edb0ed7c887c84b929022505f65e2b7e499aa (diff) | |
parent | ad99249c71e2f230fc18ea7ce99b7f578f2c2e11 (diff) | |
download | bionic-7d48457306ae63434bba062b3d052905267f884e.tar.gz |
Merge "Snap for 11385986 from 39c7a2a511f214b480aca0b1ae96e83c36ed1e51 to android14-tests-release" into android14-tests-release
-rw-r--r-- | tests/sys_statvfs_test.cpp | 12 | ||||
-rw-r--r-- | tests/sys_vfs_test.cpp | 15 |
2 files changed, 24 insertions, 3 deletions
diff --git a/tests/sys_statvfs_test.cpp b/tests/sys_statvfs_test.cpp index 1761e6a51..73b2a9681 100644 --- a/tests/sys_statvfs_test.cpp +++ b/tests/sys_statvfs_test.cpp @@ -28,9 +28,19 @@ template <typename StatVfsT> void Check(StatVfsT& sb) { EXPECT_EQ(4096U, sb.f_bsize); EXPECT_EQ(0U, sb.f_bfree); EXPECT_EQ(0U, sb.f_ffree); - EXPECT_EQ(0U, sb.f_fsid); EXPECT_EQ(255U, sb.f_namemax); + // Linux 6.7 requires that all filesystems have a non-zero fsid. + if (sb.f_fsid != 0U) { + // fs/libfs.c reuses the filesystem's device number. + struct stat proc_sb; + ASSERT_EQ(0, stat("/proc", &proc_sb)); + EXPECT_EQ(proc_sb.st_dev, sb.f_fsid); + } else { + // Prior to that, the fsid for /proc was just 0. + EXPECT_EQ(0U, sb.f_fsid); + } + // 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; diff --git a/tests/sys_vfs_test.cpp b/tests/sys_vfs_test.cpp index 242f8d499..363e49bc5 100644 --- a/tests/sys_vfs_test.cpp +++ b/tests/sys_vfs_test.cpp @@ -28,10 +28,21 @@ template <typename StatFsT> void Check(StatFsT& sb) { 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; |