aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2024-01-31 21:50:24 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2024-01-31 21:50:24 +0000
commit22865bf2a33b5a98f5636458566e6cd231e928bb (patch)
treeb191bf368379429fbf2a938f7a0b5238b388391f
parenta46de511cb6131c5df03dbc91c9e3d3da9231021 (diff)
parent1713bc58deebbb823bac26419e5cbe61caf046bf (diff)
downloadbionic-android13-tests-release.tar.gz
Merge "Snap for 11385719 from 7123abff5170eea24a895e673562815a11fa53ca to android13-tests-release" into android13-tests-releaseandroid13-tests-release
-rw-r--r--tests/sys_statvfs_test.cpp12
-rw-r--r--tests/sys_vfs_test.cpp15
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;