Skip to content

Commit c7e7fa2

Browse files
cgxu519Jaegeuk Kim
authored and
Jaegeuk Kim
committed
f2fs: fix miscounted block limit in f2fs_statfs_project()
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 *** Report for project quotas on device /dev/sdb1 Block grace time: 7days; Inode grace time: 7days Block limits File limits Project used soft hard grace used soft hard grace ----------------------------------------------------------- \#0 -- 4 0 0 1 0 0 \torvalds#101 -- 0 0 0 2 0 0 \torvalds#102 -- 0 10240 0 2 10 0 \torvalds#103 -- 0 0 20480 2 0 20 \torvalds#104 -- 0 10240 20480 2 10 20 \torvalds#105 -- 0 20480 10240 2 20 10 [root@localhost sdb1]\# lsattr -p t{1,2,3,4,5} 101 ----------------N-- t1/a1 102 ----------------N-- t2/a2 103 ----------------N-- t3/a3 104 ----------------N-- t4/a4 105 ----------------N-- t5/a5 [root@localhost sdb1]\# df -hi t{1,2,3,4,5} Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sdb1 2.4M 21 2.4M 1% /mnt/sdb1 /dev/sdb1 10 2 8 20% /mnt/sdb1 /dev/sdb1 20 2 18 10% /mnt/sdb1 /dev/sdb1 10 2 8 20% /mnt/sdb1 /dev/sdb1 10 2 8 20% /mnt/sdb1 [root@localhost sdb1]\# df -h t{1,2,3,4,5} Filesystem Size Used Avail Use% Mounted on /dev/sdb1 10G 489M 9.6G 5% /mnt/sdb1 /dev/sdb1 10M 0 10M 0% /mnt/sdb1 /dev/sdb1 20M 0 20M 0% /mnt/sdb1 /dev/sdb1 10M 0 10M 0% /mnt/sdb1 /dev/sdb1 10M 0 10M 0% /mnt/sdb1 Fixes: 909110c ("f2fs: choose hardlimit when softlimit is larger than hardlimit in f2fs_statfs_project()") Signed-off-by: Chengguang Xu <cgxu519@mykernel.net> Reviewed-by: Chao Yu <yuchao0@huawei.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
1 parent 846b67c commit c7e7fa2

File tree

1 file changed

+2
-0
lines changed

1 file changed

+2
-0
lines changed

fs/f2fs/super.c

+2
Original file line numberDiff line numberDiff line change
@@ -1288,6 +1288,8 @@ static int f2fs_statfs_project(struct super_block *sb,
12881288
if (dquot->dq_dqb.dqb_bhardlimit &&
12891289
(!limit || dquot->dq_dqb.dqb_bhardlimit < limit))
12901290
limit = dquot->dq_dqb.dqb_bhardlimit;
1291+
if (limit)
1292+
limit >>= sb->s_blocksize_bits;
12911293

12921294
if (limit && buf->f_blocks > limit) {
12931295
curblock = dquot->dq_dqb.dqb_curspace >> sb->s_blocksize_bits;

0 commit comments

Comments
 (0)