In calculating the f_bavail field, don't take 32 bit quantities and

multiply them by 90 (to be divided by 100) and expect them to be sane
for very large values (I was getting a negative 'avail' count).
This commit is contained in:
mjacob 1997-10-16 18:29:11 +00:00
parent 2d7d2e019a
commit 949982f2a4
2 changed files with 8 additions and 6 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: ffs_vfsops.c,v 1.30 1997/07/22 14:36:31 fvdl Exp $ */
/* $NetBSD: ffs_vfsops.c,v 1.31 1997/10/16 18:29:11 mjacob Exp $ */
/*
* Copyright (c) 1989, 1991, 1993, 1994
@ -678,8 +678,9 @@ ffs_statfs(mp, sbp, p)
sbp->f_blocks = fs->fs_dsize;
sbp->f_bfree = fs->fs_cstotal.cs_nbfree * fs->fs_frag +
fs->fs_cstotal.cs_nffree;
sbp->f_bavail = (fs->fs_dsize * (100 - fs->fs_minfree) / 100) -
(fs->fs_dsize - sbp->f_bfree);
sbp->f_bavail = (long) (((u_int64_t) fs->fs_dsize * (u_int64_t)
(100 - fs->fs_minfree) / (u_int64_t) 100) -
(u_int64_t) (fs->fs_dsize - sbp->f_bfree));
sbp->f_files = fs->fs_ncg * fs->fs_ipg - ROOTINO;
sbp->f_ffree = fs->fs_cstotal.cs_nifree;
if (sbp != &mp->mnt_stat) {

View File

@ -1,4 +1,4 @@
/* $NetBSD: lfs_vfsops.c,v 1.13 1997/06/11 10:10:04 bouyer Exp $ */
/* $NetBSD: lfs_vfsops.c,v 1.14 1997/10/16 18:29:20 mjacob Exp $ */
/*
* Copyright (c) 1989, 1991, 1993, 1994
@ -417,8 +417,9 @@ lfs_statfs(mp, sbp, p)
sbp->f_iosize = fs->lfs_bsize;
sbp->f_blocks = dbtofsb(fs,fs->lfs_dsize);
sbp->f_bfree = dbtofsb(fs, fs->lfs_bfree);
sbp->f_bavail = (fs->lfs_dsize * (100 - fs->lfs_minfree) / 100) -
(fs->lfs_dsize - fs->lfs_bfree);
sbp->f_bavail = (long) (((u_int64_t) fs->lfs_dsize * (u_int64_t)
(100 - fs->lfs_minfree) / (u_int64_t) 100) -
(u_int64_t) (fs->lfs_dsize - sbp->f_bfree));
sbp->f_bavail = dbtofsb(fs, sbp->f_bavail);
sbp->f_files = fs->lfs_nfiles;
sbp->f_ffree = sbp->f_bfree * INOPB(fs);