diff options
author | Su Yue <suy.fnst@cn.fujitsu.com> | 2017-09-12 11:56:30 +0800 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2017-10-16 20:33:01 +0200 |
commit | 3ebf6564cd7b26037890d53c8688ec2a03c01bc5 (patch) | |
tree | 382d61b9dd324788b144d012e9537f7188d4dfae | |
parent | 2abbfd266afc97a31072894660e30e8dac525923 (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.c | 5 |
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) |