summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSu Yue <suy.fnst@cn.fujitsu.com>2017-09-12 11:56:30 +0800
committerDavid Sterba <dsterba@suse.com>2017-10-16 20:33:01 +0200
commit3ebf6564cd7b26037890d53c8688ec2a03c01bc5 (patch)
tree382d61b9dd324788b144d012e9537f7188d4dfae
parent2abbfd266afc97a31072894660e30e8dac525923 (diff)
btrfs-progs: check: repair block group accounting in lowmem mode
Add a macro named BG_ACCOUNT_ERROR meaning that block group used size does not equal the total. After extent-tree repair, BG_ACCOUNT_ERROR should be fixed up. Clean bits at end of check_chunks_and_extents_v2(). Signed-off-by: Su Yue <suy.fnst@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
-rw-r--r--cmds-check.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/cmds-check.c b/cmds-check.c
index 3e709b84..c236349b 100644
--- a/cmds-check.c
+++ b/cmds-check.c
@@ -133,6 +133,7 @@ struct data_backref {
#define DIR_INDEX_MISSING (1<<18) /* INODE_INDEX not found */
#define DIR_INDEX_MISMATCH (1<<19) /* INODE_INDEX found but not match */
#define DIR_COUNT_AGAIN (1<<20) /* DIR isize should be recalculated */
+#define BG_ACCOUNTING_ERROR (1<<21) /* Block group accounting error */
static inline struct data_backref* to_data_backref(struct extent_backref *back)
{
@@ -12897,7 +12898,7 @@ out:
error(
"block group[%llu %llu] used %llu but extent items used %llu",
bg_key.objectid, bg_key.offset, used, total);
- err |= ACCOUNTING_MISMATCH;
+ err |= BG_ACCOUNTING_ERROR;
}
return err;
}
@@ -13291,6 +13292,8 @@ out:
ret = btrfs_fix_block_accounting(trans, root);
if (ret)
err |= ret;
+ else
+ err &= ~BG_ACCOUNTING_ERROR;
}
if (trans)