| From 81ad086283ec0d5a40cf83b75cd20bdc3a7e80c5 Mon Sep 17 00:00:00 2001 |
| From: Chao Yu <yuchao0@huawei.com> |
| Date: Mon, 5 Aug 2019 18:27:25 +0800 |
| Subject: [PATCH] f2fs: fix wrong available node count calculation |
| |
| commit 27cae0bcc0510ba009f01806b4af13940ad96f7d upstream. |
| |
| In mkfs, we have counted quota file's node number in cp.valid_node_count, |
| so we have to avoid wrong substraction of quota node number in |
| .available_nid/.avail_node_count calculation. |
| |
| f2fs_write_check_point_pack() |
| { |
| .. |
| set_cp(valid_node_count, 1 + c.quota_inum + c.lpf_inum); |
| |
| Fixes: 292c196a3695 ("f2fs: reserve nid resource for quota sysfile") |
| Fixes: 7b63f72f73af ("f2fs: fix to do sanity check on valid node/block count") |
| Signed-off-by: Chao Yu <yuchao0@huawei.com> |
| Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c |
| index e1e035db99b3..5a3500d9c544 100644 |
| --- a/fs/f2fs/node.c |
| +++ b/fs/f2fs/node.c |
| @@ -2971,7 +2971,7 @@ static int init_node_manager(struct f2fs_sb_info *sbi) |
| |
| /* not used nids: 0, node, meta, (and root counted as valid node) */ |
| nm_i->available_nids = nm_i->max_nid - sbi->total_valid_node_count - |
| - sbi->nquota_files - F2FS_RESERVED_NODE_NUM; |
| + F2FS_RESERVED_NODE_NUM; |
| nm_i->nid_cnt[FREE_NID] = 0; |
| nm_i->nid_cnt[PREALLOC_NID] = 0; |
| nm_i->nat_cnt = 0; |
| diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c |
| index 4b4ac8535f74..bda141e392ec 100644 |
| --- a/fs/f2fs/super.c |
| +++ b/fs/f2fs/super.c |
| @@ -1251,8 +1251,7 @@ static int f2fs_statfs(struct dentry *dentry, struct kstatfs *buf) |
| else |
| buf->f_bavail = 0; |
| |
| - avail_node_count = sbi->total_node_count - sbi->nquota_files - |
| - F2FS_RESERVED_NODE_NUM; |
| + avail_node_count = sbi->total_node_count - F2FS_RESERVED_NODE_NUM; |
| |
| if (avail_node_count > user_block_count) { |
| buf->f_files = user_block_count; |
| @@ -2659,8 +2658,7 @@ int f2fs_sanity_check_ckpt(struct f2fs_sb_info *sbi) |
| } |
| |
| valid_node_count = le32_to_cpu(ckpt->valid_node_count); |
| - avail_node_count = sbi->total_node_count - sbi->nquota_files - |
| - F2FS_RESERVED_NODE_NUM; |
| + avail_node_count = sbi->total_node_count - F2FS_RESERVED_NODE_NUM; |
| if (valid_node_count > avail_node_count) { |
| f2fs_msg(sbi->sb, KERN_ERR, |
| "Wrong valid_node_count: %u, avail_node_count: %u", |
| -- |
| 2.27.0 |
| |