mirror of
https://github.com/torvalds/linux.git
synced 2024-11-27 14:41:39 +00:00
xfs: report proper f_files in statfs if we overshoot imaxpct
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@oracle.com> Signed-off-by: Eric Sandeen <sandeen@redhat.com> Reviewed-by: Dave Chinner <dchinner@redhat.com> Signed-off-by: Dave Chinner <david@fromorbit.com>
This commit is contained in:
parent
de8bd0eb69
commit
01f9882eac
@ -1111,6 +1111,11 @@ xfs_fs_statfs(
|
|||||||
statp->f_files,
|
statp->f_files,
|
||||||
mp->m_maxicount);
|
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 */
|
/* make sure statp->f_ffree does not underflow */
|
||||||
ffree = statp->f_files - (sbp->sb_icount - sbp->sb_ifree);
|
ffree = statp->f_files - (sbp->sb_icount - sbp->sb_ifree);
|
||||||
statp->f_ffree = max_t(__int64_t, ffree, 0);
|
statp->f_ffree = max_t(__int64_t, ffree, 0);
|
||||||
|
Loading…
Reference in New Issue
Block a user