Skip to content

Commit 9d744df

Browse files
committed
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.
1 parent 202edd4 commit 9d744df

File tree

3 files changed

+8
-6
lines changed

3 files changed

+8
-6
lines changed

src/dwarfs/metadata_v2.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -983,7 +983,7 @@ metadata_<LoggerPolicy>::info_as_dynamic(int detail_level,
983983
}
984984

985985
if (detail_level > 0) {
986-
info["block_size"] = stbuf.bsize;
986+
info["block_size"] = meta_.block_size();
987987
info["block_count"] = fsinfo.block_count;
988988
info["inode_count"] = stbuf.files;
989989
if (auto ps = meta_.preferred_path_separator()) {
@@ -1710,7 +1710,9 @@ template <typename LoggerPolicy>
17101710
int metadata_<LoggerPolicy>::statvfs(vfs_stat* stbuf) const {
17111711
::memset(stbuf, 0, sizeof(*stbuf));
17121712

1713-
stbuf->bsize = meta_.block_size();
1713+
// Make sure bsize and frsize are the same, as doing otherwise can confuse
1714+
// some applications (such as `duf`).
1715+
stbuf->bsize = 1UL;
17141716
stbuf->frsize = 1UL;
17151717
stbuf->blocks = meta_.total_fs_size();
17161718
if (!options_.enable_nlink) {

test/compat_test.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -404,7 +404,7 @@ char const* reference_v0_2 = R"(
404404
},
405405
"statvfs": {
406406
"f_blocks": 10614,
407-
"f_bsize": 1024,
407+
"f_bsize": 1,
408408
"f_files": 33
409409
}
410410
}
@@ -777,7 +777,7 @@ char const* reference = R"(
777777
},
778778
"statvfs": {
779779
"f_blocks": 10614,
780-
"f_bsize": 1024,
780+
"f_bsize": 1,
781781
"f_files": 36
782782
}
783783
}
@@ -822,7 +822,7 @@ void check_compat(logger& lgr, filesystem_v2 const& fs,
822822
vfs_stat vfsbuf;
823823
fs.statvfs(&vfsbuf);
824824

825-
EXPECT_EQ(1024, vfsbuf.bsize);
825+
EXPECT_EQ(1, vfsbuf.bsize);
826826
EXPECT_EQ(1, vfsbuf.frsize);
827827
EXPECT_EQ(10614, vfsbuf.blocks);
828828
EXPECT_EQ(33 + 3 * has_devices, vfsbuf.files);

test/dwarfs_test.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ void basic_end_to_end_test(std::string const& compressor,
227227
vfs_stat vfsbuf;
228228
fs.statvfs(&vfsbuf);
229229

230-
EXPECT_EQ(1 << block_size_bits, vfsbuf.bsize);
230+
EXPECT_EQ(1, vfsbuf.bsize);
231231
EXPECT_EQ(1, vfsbuf.frsize);
232232
if (enable_nlink) {
233233
EXPECT_EQ(access_fail ? 2046934 : 2056934, vfsbuf.blocks);

0 commit comments

Comments
 (0)