X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fdf.c;h=ded374b942e5d08d804dd027292eef2ef9f50fcb;hb=dfe983c63e5a52bff8aa3b3d86f2fc79cefe1e51;hp=5391f50c852f8dea77e620683c1a2d5e51fd3eac;hpb=9b967a770f38099336c3652986d93c8b4d610a36;p=collectd.git diff --git a/src/df.c b/src/df.c index 5391f50c..ded374b9 100644 --- a/src/df.c +++ b/src/df.c @@ -228,6 +228,8 @@ static int df_read (void) { if (strcmp (mnt_ptr->dir, "/") == 0) { + if (strcmp (mnt_ptr->type, "rootfs") == 0) + continue; sstrncpy (disk_name, "root", sizeof (disk_name)); } else @@ -245,7 +247,24 @@ static int df_read (void) blocksize = BLOCKSIZE(statbuf); - /* 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 and temporary variable are needed to avoid + * compiler warnings. + * ((struct statvfs).f_bavail is unsigned (POSIX)) */ + int64_t signed_bavail = (int64_t) statbuf.f_bavail; + if (signed_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)