| From acdf2172172a511f97fa21ed0ee7609a6d3b3a07 Mon Sep 17 00:00:00 2001 |
| From: Chengguang Xu <cgxu519@mykernel.net> |
| Date: Sat, 4 Jan 2020 22:20:03 +0800 |
| Subject: f2fs: fix miscounted block limit in f2fs_statfs_project() |
| |
| From: Chengguang Xu <cgxu519@mykernel.net> |
| |
| 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 |
| --- |
| fs/f2fs/super.c | 2 ++ |
| 1 file changed, 2 insertions(+) |
| |
| --- a/fs/f2fs/super.c |
| +++ b/fs/f2fs/super.c |
| @@ -1154,6 +1154,8 @@ static int f2fs_statfs_project(struct su |
| 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; |