summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkrw <krw@openbsd.org>2014-05-16 13:44:09 +0000
committerkrw <krw@openbsd.org>2014-05-16 13:44:09 +0000
commit4b285d114bd915045846b3bfb4f39a16d71b94ff (patch)
treef0d9d5a3cf71c94764fd83cdc34552dbd813b096
parentimprove logging messages and style; requested by and ok reyk (diff)
downloadwireguard-openbsd-4b285d114bd915045846b3bfb4f39a16d71b94ff.tar.xz
wireguard-openbsd-4b285d114bd915045846b3bfb4f39a16d71b94ff.zip
Make the df calculations of available space the same as that done in
ffs_statfs(). In 1998, with /usr/src/sys/ufs/ffs/ffs_vfsops.c r1.16, mickey@ improved the calculation of available blocks in ffs_statfs(). Yesterday guenther@ noticed that this fix had not been applied to the same calculation being done by df(8) when run against raw devices. Which meant different values were displayed depending on which device/file system you gave to df. ok otto@
-rw-r--r--bin/df/ffs_df.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/bin/df/ffs_df.c b/bin/df/ffs_df.c
index 718d8bd75fa..2a1a733832c 100644
--- a/bin/df/ffs_df.c
+++ b/bin/df/ffs_df.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ffs_df.c,v 1.13 2009/10/27 23:59:21 deraadt Exp $ */
+/* $OpenBSD: ffs_df.c,v 1.14 2014/05/16 13:44:09 krw Exp $ */
/*
* Copyright (c) 1980, 1990, 1993, 1994
@@ -74,17 +74,16 @@ ffs_df(int rfd, char *file, struct statfs *sfsp)
sfsp->f_blocks = sblock.fs_ffs1_dsize;
sfsp->f_bfree = sblock.fs_ffs1_cstotal.cs_nbfree *
sblock.fs_frag + sblock.fs_ffs1_cstotal.cs_nffree;
- sfsp->f_bavail = ((int64_t)sblock.fs_ffs1_dsize * (100 -
- sblock.fs_minfree) / 100) - (sblock.fs_ffs1_dsize -
- sfsp->f_bfree);
+ sfsp->f_bavail = sfsp->f_bfree -
+ ((int64_t)sblock.fs_ffs1_dsize * sblock.fs_minfree / 100);
sfsp->f_files = sblock.fs_ncg * sblock.fs_ipg - ROOTINO;
sfsp->f_ffree = sblock.fs_ffs1_cstotal.cs_nifree;
} else {
sfsp->f_blocks = sblock.fs_dsize;
sfsp->f_bfree = sblock.fs_cstotal.cs_nbfree *
sblock.fs_frag + sblock.fs_cstotal.cs_nffree;
- sfsp->f_bavail = (sblock.fs_dsize * (100 - sblock.fs_minfree) /
- 100) - (sblock.fs_dsize - sfsp->f_bfree);
+ sfsp->f_bavail = sfsp->f_bfree -
+ ((int64_t)sblock.fs_dsize * sblock.fs_minfree / 100);
sfsp->f_files = sblock.fs_ncg * sblock.fs_ipg - ROOTINO;
sfsp->f_ffree = sblock.fs_cstotal.cs_nifree;
}