fix: duf reports odd sizes due to using bsize instead of frsize

This is arguably a bug in `duf`, but the `bsize` value reported by
DwarFS isn't that relevant, so we might just change it here.
This commit is contained in:
Marcus Holland-Moritz 2024-05-01 17:10:22 +02:00
parent 125121b7ca
commit 965fa93b3f
3 changed files with 8 additions and 6 deletions

View File

@ -983,7 +983,7 @@ metadata_<LoggerPolicy>::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 <typename LoggerPolicy>
int metadata_<LoggerPolicy>::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) {

View File

@ -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);

View File

@ -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);