xfs
[Top] [All Lists]

[PATCH] xfs: report proper f_files in statfs if we overshoot imaxpct

To: xfs-oss <xfs@xxxxxxxxxxx>
Subject: [PATCH] xfs: report proper f_files in statfs if we overshoot imaxpct
From: Eric Sandeen <sandeen@xxxxxxxxxx>
Date: Wed, 28 Jan 2015 16:16:33 -0600
Delivered-to: xfs@xxxxxxxxxxx
Normally, a statfs syscall reports m_maxicount as f_files
(total file nodes in file system) because it is supposed
to be the upper limit for dynamically-allocated inodes.

It's possible, however, to overshoot imaxpct / m_maxicount.
If this happens, we should report the actual number of allocated
inodes, which is contained in sb_icount.  Add one more adjustment
to the statfs code to make this happen.

Reported-by: Alexander Tsvetkov <alexander.tsvetkov@xxxxxxxxxx>
Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxx>
---


diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c
index 19cbda1..9c1d479 100644
--- a/fs/xfs/xfs_super.c
+++ b/fs/xfs/xfs_super.c
@@ -1111,6 +1111,11 @@ xfs_fs_statfs(
                                        statp->f_files,
                                        mp->m_maxicount);
 
+       /* If sb_icount overshot maxicount, report actual allocation */
+       statp->f_files = max_t(typeof(statp->f_files),
+                                       statp->f_files,
+                                       sbp->sb_icount);
+
        /* make sure statp->f_ffree does not underflow */
        ffree = statp->f_files - (sbp->sb_icount - sbp->sb_ifree);
        statp->f_ffree = max_t(__int64_t, ffree, 0);

<Prev in Thread] Current Thread [Next in Thread>
  • [PATCH] xfs: report proper f_files in statfs if we overshoot imaxpct, Eric Sandeen <=