diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2016-06-23 10:42:40 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2016-06-24 04:12:01 +0200 |
commit | 8f4faa1e3db91fc7b50d633e6f9b2f04bf978bb2 (patch) | |
tree | cc1b3cd4e5ef53ec4c3ac88dae3b4523a393174b /coreutils/df.c | |
parent | 59f81976249a85cf02bd73c2395f018033069466 (diff) | |
download | busybox-w32-8f4faa1e3db91fc7b50d633e6f9b2f04bf978bb2.tar.gz busybox-w32-8f4faa1e3db91fc7b50d633e6f9b2f04bf978bb2.tar.bz2 busybox-w32-8f4faa1e3db91fc7b50d633e6f9b2f04bf978bb2.zip |
df: use f_frsize instead of f_bsize for correct sizes
Use the correct field f_frsize instead of f_bsize.
The statfs f_bsize is the "Optimal transfer block size" while the
f_frsize is the "Fragment size (since Linux 2.6)". On some FUSE
filesystems those may differ.
Fixes bug 9046
URL: https://bugs.busybox.net/show_bug.cgi?id=9046
Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'coreutils/df.c')
-rw-r--r-- | coreutils/df.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/coreutils/df.c b/coreutils/df.c index d79c11a6c..06b292018 100644 --- a/coreutils/df.c +++ b/coreutils/df.c | |||
@@ -188,7 +188,7 @@ int df_main(int argc UNUSED_PARAM, char **argv) | |||
188 | if (opt & OPT_INODE) { | 188 | if (opt & OPT_INODE) { |
189 | s.f_blocks = s.f_files; | 189 | s.f_blocks = s.f_files; |
190 | s.f_bavail = s.f_bfree = s.f_ffree; | 190 | s.f_bavail = s.f_bfree = s.f_ffree; |
191 | s.f_bsize = 1; | 191 | s.f_frsize = 1; |
192 | 192 | ||
193 | if (df_disp_hr) | 193 | if (df_disp_hr) |
194 | df_disp_hr = 1; | 194 | df_disp_hr = 1; |
@@ -246,26 +246,26 @@ int df_main(int argc UNUSED_PARAM, char **argv) | |||
246 | 246 | ||
247 | #if ENABLE_FEATURE_HUMAN_READABLE | 247 | #if ENABLE_FEATURE_HUMAN_READABLE |
248 | printf(" %9s ", | 248 | printf(" %9s ", |
249 | /* f_blocks x f_bsize / df_disp_hr, show one fractional, | 249 | /* f_blocks x f_frsize / df_disp_hr, show one fractional, |
250 | * use suffixes if df_disp_hr == 0 */ | 250 | * use suffixes if df_disp_hr == 0 */ |
251 | make_human_readable_str(s.f_blocks, s.f_bsize, df_disp_hr)); | 251 | make_human_readable_str(s.f_blocks, s.f_frsize, df_disp_hr)); |
252 | 252 | ||
253 | printf(" %9s " + 1, | 253 | printf(" %9s " + 1, |
254 | /* EXPR x f_bsize / df_disp_hr, show one fractional, | 254 | /* EXPR x f_frsize / df_disp_hr, show one fractional, |
255 | * use suffixes if df_disp_hr == 0 */ | 255 | * use suffixes if df_disp_hr == 0 */ |
256 | make_human_readable_str((s.f_blocks - s.f_bfree), | 256 | make_human_readable_str((s.f_blocks - s.f_bfree), |
257 | s.f_bsize, df_disp_hr)); | 257 | s.f_frsize, df_disp_hr)); |
258 | 258 | ||
259 | printf("%9s %3u%% %s\n", | 259 | printf("%9s %3u%% %s\n", |
260 | /* f_bavail x f_bsize / df_disp_hr, show one fractional, | 260 | /* f_bavail x f_frsize / df_disp_hr, show one fractional, |
261 | * use suffixes if df_disp_hr == 0 */ | 261 | * use suffixes if df_disp_hr == 0 */ |
262 | make_human_readable_str(s.f_bavail, s.f_bsize, df_disp_hr), | 262 | make_human_readable_str(s.f_bavail, s.f_frsize, df_disp_hr), |
263 | blocks_percent_used, mount_point); | 263 | blocks_percent_used, mount_point); |
264 | #else | 264 | #else |
265 | printf(" %9lu %9lu %9lu %3u%% %s\n", | 265 | printf(" %9lu %9lu %9lu %3u%% %s\n", |
266 | kscale(s.f_blocks, s.f_bsize), | 266 | kscale(s.f_blocks, s.f_frsize), |
267 | kscale(s.f_blocks - s.f_bfree, s.f_bsize), | 267 | kscale(s.f_blocks - s.f_bfree, s.f_frsize), |
268 | kscale(s.f_bavail, s.f_bsize), | 268 | kscale(s.f_bavail, s.f_frsize), |
269 | blocks_percent_used, mount_point); | 269 | blocks_percent_used, mount_point); |
270 | #endif | 270 | #endif |
271 | } | 271 | } |