diff --git a/src/dwarfs/metadata_v2.cpp b/src/dwarfs/metadata_v2.cpp index 216e32c7..71d7a9b6 100644 --- a/src/dwarfs/metadata_v2.cpp +++ b/src/dwarfs/metadata_v2.cpp @@ -983,7 +983,7 @@ metadata_::info_as_dynamic(int detail_level, } if (detail_level > 0) { - info["block_size"] = stbuf.bsize; + info["block_size"] = meta_.block_size(); info["block_count"] = fsinfo.block_count; info["inode_count"] = stbuf.files; if (auto ps = meta_.preferred_path_separator()) { @@ -1710,7 +1710,9 @@ template int metadata_::statvfs(vfs_stat* stbuf) const { ::memset(stbuf, 0, sizeof(*stbuf)); - stbuf->bsize = meta_.block_size(); + // Make sure bsize and frsize are the same, as doing otherwise can confuse + // some applications (such as `duf`). + stbuf->bsize = 1UL; stbuf->frsize = 1UL; stbuf->blocks = meta_.total_fs_size(); if (!options_.enable_nlink) { diff --git a/test/compat_test.cpp b/test/compat_test.cpp index b20bcfed..65e63d2f 100644 --- a/test/compat_test.cpp +++ b/test/compat_test.cpp @@ -404,7 +404,7 @@ char const* reference_v0_2 = R"( }, "statvfs": { "f_blocks": 10614, - "f_bsize": 1024, + "f_bsize": 1, "f_files": 33 } } @@ -777,7 +777,7 @@ char const* reference = R"( }, "statvfs": { "f_blocks": 10614, - "f_bsize": 1024, + "f_bsize": 1, "f_files": 36 } } @@ -822,7 +822,7 @@ void check_compat(logger& lgr, filesystem_v2 const& fs, vfs_stat vfsbuf; fs.statvfs(&vfsbuf); - EXPECT_EQ(1024, vfsbuf.bsize); + EXPECT_EQ(1, vfsbuf.bsize); EXPECT_EQ(1, vfsbuf.frsize); EXPECT_EQ(10614, vfsbuf.blocks); EXPECT_EQ(33 + 3 * has_devices, vfsbuf.files); diff --git a/test/dwarfs_test.cpp b/test/dwarfs_test.cpp index f9e439b7..f403b62d 100644 --- a/test/dwarfs_test.cpp +++ b/test/dwarfs_test.cpp @@ -227,7 +227,7 @@ void basic_end_to_end_test(std::string const& compressor, vfs_stat vfsbuf; fs.statvfs(&vfsbuf); - EXPECT_EQ(1 << block_size_bits, vfsbuf.bsize); + EXPECT_EQ(1, vfsbuf.bsize); EXPECT_EQ(1, vfsbuf.frsize); if (enable_nlink) { EXPECT_EQ(access_fail ? 2046934 : 2056934, vfsbuf.blocks);