From: Chengguang Xu Date: Sat, 4 Jan 2020 14:20:03 +0000 (+0800) Subject: f2fs: fix miscounted block limit in f2fs_statfs_project() X-Git-Tag: v5.5.3~237 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=cc573f215fef30b3ef024453c2efcee0aa9e9310;p=users%2Fdwmw2%2Flinux.git f2fs: fix miscounted block limit in f2fs_statfs_project() commit acdf2172172a511f97fa21ed0ee7609a6d3b3a07 upstream. statfs calculates Total/Used/Avail disk space in block unit, so we should translate soft/hard prjquota limit to block unit as well. Below testing result shows the block/inode numbers of Total/Used/Avail from df command are all correct afer applying this patch. [root@localhost quota-tools]\# ./repquota -P /dev/sdb1 --- diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c index 5111e1ffe58ab..78efd0e76174b 100644 --- a/fs/f2fs/super.c +++ b/fs/f2fs/super.c @@ -1219,6 +1219,8 @@ static int f2fs_statfs_project(struct super_block *sb, if (dquot->dq_dqb.dqb_bhardlimit && (!limit || dquot->dq_dqb.dqb_bhardlimit < limit)) limit = dquot->dq_dqb.dqb_bhardlimit; + if (limit) + limit >>= sb->s_blocksize_bits; if (limit && buf->f_blocks > limit) { curblock = dquot->dq_dqb.dqb_curspace >> sb->s_blocksize_bits;