summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: bf160b5)
raw | patch | inline | side by side (parent: bf160b5)
author | Toni Ylenius <toniylenius@gmail.com> | |
Fri, 6 Jan 2012 16:13:56 +0000 (18:13 +0200) | ||
committer | Florian Forster <octo@collectd.org> | |
Sat, 21 Jan 2012 11:02:59 +0000 (12:02 +0100) |
Some file systems (eg. UFS) may report negative free spave values.
Previously this caused underflow, but now it is prevented by setting
negative values to zero.
Change-Id: I821adb8a6d7a40dcbd6c65ab3541fbcd714f8aba
Conflicts:
src/df.c
Previously this caused underflow, but now it is prevented by setting
negative values to zero.
Change-Id: I821adb8a6d7a40dcbd6c65ab3541fbcd714f8aba
Conflicts:
src/df.c
src/df.c | patch | blob | history |
diff --git a/src/df.c b/src/df.c
index 2e9b2ae8288dd64f1a75d30b51d83593a8fd4ef8..9d53b0b67eb7c326d3b1811682144d2a7cb6b14b 100644 (file)
--- a/src/df.c
+++ b/src/df.c
uint64_t blk_reserved;
uint64_t blk_used;
- /* Sanity-check for the values in the struct */
+ /*
+ * Sanity-check for the values in the struct
+ */
+ /* Check for negative "available" byes. For example UFS can
+ * report negative free space for user. Notice. blk_reserved
+ * will start to diminish after this. */
+#if HAVE_STATVFS
+ /* Cast is needed to avoid compiler warnings.
+ * ((struct statvfs).f_bavail is unsigned (POSIX)) */
+ if (((int64_t) statbuf.f_bavail) < 0)
+ statbuf.f_bavail = 0;
+#elif HAVE_STATFS
+ if (statbuf.f_bavail < 0)
+ statbuf.f_bavail = 0;
+#endif
+ /* Make sure that f_blocks >= f_bfree >= f_bavail */
if (statbuf.f_bfree < statbuf.f_bavail)
statbuf.f_bfree = statbuf.f_bavail;
if (statbuf.f_blocks < statbuf.f_bfree)