In current implementation, we size the fs(sub-fs via project quota) at the soft limit and simply call it 100% used if the limit is exceeded. It is reasonable when only a soft limit is set, but we should use the hard limit if both hard/soft limits are set, so that quota-df reflects the usage information more accurately. Signed-off-by: Chengguang Xu <cgxu519@xxxxxxx> --- fs/xfs/xfs_qm_bhv.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/fs/xfs/xfs_qm_bhv.c b/fs/xfs/xfs_qm_bhv.c index 2be6d27..43b0fe8 100644 --- a/fs/xfs/xfs_qm_bhv.c +++ b/fs/xfs/xfs_qm_bhv.c @@ -35,9 +35,9 @@ { uint64_t limit; - limit = dqp->q_core.d_blk_softlimit ? - be64_to_cpu(dqp->q_core.d_blk_softlimit) : - be64_to_cpu(dqp->q_core.d_blk_hardlimit); + limit = dqp->q_core.d_blk_hardlimit ? + be64_to_cpu(dqp->q_core.d_blk_hardlimit) : + be64_to_cpu(dqp->q_core.d_blk_softlimit); if (limit && statp->f_blocks > limit) { statp->f_blocks = limit; statp->f_bfree = statp->f_bavail = @@ -45,9 +45,9 @@ (statp->f_blocks - dqp->q_res_bcount) : 0; } - limit = dqp->q_core.d_ino_softlimit ? - be64_to_cpu(dqp->q_core.d_ino_softlimit) : - be64_to_cpu(dqp->q_core.d_ino_hardlimit); + limit = dqp->q_core.d_ino_hardlimit ? + be64_to_cpu(dqp->q_core.d_ino_hardlimit) : + be64_to_cpu(dqp->q_core.d_ino_softlimit); if (limit && statp->f_files > limit) { statp->f_files = limit; statp->f_ffree = -- 1.8.3.1 -- To unsubscribe from this list: send the line "unsubscribe linux-xfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html