On 2014/12/22 11:53, Qu Wenruo wrote:
> 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@xxxxxxxxxxxxxx>
Reviewed-by: Satoru Takeuchi <takeuchi_satoru@xxxxxxxxxxxxxx>
Thanks,
Satoru
> ---
> cmds-check.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/cmds-check.c b/cmds-check.c
> index 3e7a4eb..aa47984 100644
> --- a/cmds-check.c
> +++ b/cmds-check.c
> @@ -2302,7 +2302,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);
> @@ -2452,7 +2452,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)
>
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html