aboutsummaryrefslogtreecommitdiff
path: root/coreutils/df.c
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2016-06-23 10:42:40 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2016-06-24 04:12:01 +0200
commit8f4faa1e3db91fc7b50d633e6f9b2f04bf978bb2 (patch)
treecc1b3cd4e5ef53ec4c3ac88dae3b4523a393174b /coreutils/df.c
parent59f81976249a85cf02bd73c2395f018033069466 (diff)
downloadbusybox-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.c20
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 }