btrfs-progs: Don't increase error count if the inode can be repaired.

The original check_inode_recs() will return -1 if found any error in a
inode_record. This is OK for original design since there is almost
nothing can repair at that time.

However more and more error from nlink mismatch to missing inode item
can be repaired in try_repair_inode(), check_inode_recs() should not
increase the error count if the inode can be repair.

With this patch, repair function for leaf-corruption will not return
error if all corruption inode can be recovered.

Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Reviewed-by: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
This commit is contained in:
Qu Wenruo 2014-12-22 10:53:36 +08:00 committed by David Sterba
parent 228a7b3e17
commit e960b3f057

View File

@ -2308,7 +2308,7 @@ static int check_inode_recs(struct btrfs_root *root,
struct inode_record *rec;
struct inode_backref *backref;
int stage = 0;
int ret;
int ret = 0;
int err = 0;
u64 error = 0;
u64 root_dirid = btrfs_root_dirid(&root->root_item);
@ -2458,7 +2458,8 @@ static int check_inode_recs(struct btrfs_root *root,
ret = 0;
}
error++;
if (!(repair && ret == 0))
error++;
print_inode_error(root, rec);
list_for_each_entry(backref, &rec->backrefs, list) {
if (!backref->found_dir_item)