Hi Gu,

I applied these two patches:

https://patchwork.kernel.org/patch/9939879/
https://patchwork.kernel.org/patch/9939881/

Still the test "sudo make TEST=003\* test-fuzz" is failing like:

 btrfs-progs/btrfs check --check-data-csum
btrfs-progs/tests/fuzz-tests/images/bko-156731.raw.restored
checking extents
cmds-check.c:5660: check_owner_ref: BUG_ON `rec->is_root` triggered, value 1
 btrfs-progs/btrfs[0x44dce4]
 btrfs-progs/btrfs[0x45b396]
 btrfs-progs/btrfs[0x45c2f0]
 btrfs-progs/btrfs[0x45ce92]
 btrfs-progs/btrfs(cmd_check+0x17ee)[0x460ee7]
 btrfs-progs/btrfs(main+0x15d)[0x40b523]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7faf98a4d830]
 btrfs-progs/btrfs(_start+0x29)[0x40aff9]
Checking filesystem on
btrfs-progs/tests/fuzz-tests/images/bko-156731.raw.restored
UUID: 52975385-d05a-482b-8fb8-613a86a66042
failed (ignored, ret=134):  btrfs-progs/btrfs check --check-data-csum
btrfs-progs/tests/fuzz-tests/images/bko-156731.raw.restored
mayfail: returned code 134 (SIGABRT), not ignored
test failed for case 003-multi-check-unmounted

Did I miss some other patch? thanks.

----
Cheers,
Lakshmipathi.G
http://www.giis.co.in http://www.webminal.org


On Wed, Sep 6, 2017 at 7:12 AM, Gu Jinxiang <g...@cn.fujitsu.com> wrote:
> The following test failed becasuse there is no data/metadata/system 
> block_group.
> Use return ret to replace BUG_ON(ret) to avoid system crash, because there is
> enough message for user to understand what happened.
>
> $sudo TEST=003\* make test-fuzz
> Unable to find block group for 0
> Unable to find block group for 0
> Unable to find block group for 0
> extent-tree.c:2693: btrfs_reserve_extent: BUG_ON `ret` triggered, value -28
> /home/fnst/btrfs/btrfs-progs/btrfs[0x419966]
> /home/fnst/btrfs/btrfs-progs/btrfs(btrfs_reserve_extent+0xb16)[0x41f500]
> /home/fnst/btrfs/btrfs-progs/btrfs(btrfs_alloc_free_block+0x55)[0x41f59b]
> /home/fnst/btrfs/btrfs-progs/btrfs[0x46a6ce]
> /home/fnst/btrfs/btrfs-progs/btrfs(cmd_check+0x1012)[0x47c885]
> /home/fnst/btrfs/btrfs-progs/btrfs(main+0x127)[0x40b055]
> /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5)[0x2aae83e89f45]
> /home/fnst/btrfs/btrfs-progs/btrfs[0x40a939]
> Creating a new CRC tree
> Checking filesystem on 
> /home/fnst/btrfs/btrfs-progs/tests/fuzz-tests/images/bko-155621-bad-block-group-offset.raw.restored
> UUID: 5cb33553-6f6d-4ce8-83fd-20af5a2f8181
> Reinitialize checksum tree
> failed (ignored, ret=134): /home/fnst/btrfs/btrfs-progs/btrfs check 
> --init-csum-tree 
> /home/fnst/btrfs/btrfs-progs/tests/fuzz-tests/images/bko-155621-bad-block-group-offset.raw.restored
> mayfail: returned code 134 (SIGABRT), not ignored
> test failed for case 003-multi-check-unmounted
>
> Signed-off-by: Gu Jinxiang <g...@cn.fujitsu.com>
> ---
>  extent-tree.c | 16 ++++++++++------
>  transaction.c |  8 ++++++--
>  2 files changed, 16 insertions(+), 8 deletions(-)
>
> diff --git a/extent-tree.c b/extent-tree.c
> index eed56886..14838a5d 100644
> --- a/extent-tree.c
> +++ b/extent-tree.c
> @@ -2678,11 +2678,13 @@ int btrfs_reserve_extent(struct btrfs_trans_handle 
> *trans,
>                         ret = do_chunk_alloc(trans, info,
>                                              num_bytes,
>                                              BTRFS_BLOCK_GROUP_METADATA);
> -                       BUG_ON(ret);
> +                       if (ret)
> +                               goto out;
>                 }
>                 ret = do_chunk_alloc(trans, info,
>                                      num_bytes + SZ_2M, data);
> -               BUG_ON(ret);
> +               if (ret)
> +                       goto out;
>         }
>
>         WARN_ON(num_bytes < info->sectorsize);
> @@ -2690,9 +2692,11 @@ int btrfs_reserve_extent(struct btrfs_trans_handle 
> *trans,
>                                search_start, search_end, hint_byte, ins,
>                                trans->alloc_exclude_start,
>                                trans->alloc_exclude_nr, data);
> -       BUG_ON(ret);
> +       if (ret)
> +               goto out;
>         clear_extent_dirty(&info->free_space_cache,
>                            ins->objectid, ins->objectid + ins->offset - 1);
> +out:
>         return ret;
>  }
>
> @@ -2761,7 +2765,8 @@ static int alloc_tree_block(struct btrfs_trans_handle 
> *trans,
>         int ret;
>         ret = btrfs_reserve_extent(trans, root, num_bytes, empty_size,
>                                    hint_byte, search_end, ins, 0);
> -       BUG_ON(ret);
> +       if (ret)
> +               goto out;
>
>         if (root_objectid == BTRFS_EXTENT_TREE_OBJECTID) {
>                 struct pending_extent_op *extent_op;
> @@ -2792,6 +2797,7 @@ static int alloc_tree_block(struct btrfs_trans_handle 
> *trans,
>                 finish_current_insert(trans, root->fs_info->extent_root);
>                 del_pending_extents(trans, root->fs_info->extent_root);
>         }
> +out:
>         return ret;
>  }
>
> @@ -2813,7 +2819,6 @@ struct extent_buffer *btrfs_alloc_free_block(struct 
> btrfs_trans_handle *trans,
>                                trans->transid, 0, key, level,
>                                empty_size, hint, (u64)-1, &ins);
>         if (ret) {
> -               BUG_ON(ret > 0);
>                 return ERR_PTR(ret);
>         }
>
> @@ -2821,7 +2826,6 @@ struct extent_buffer *btrfs_alloc_free_block(struct 
> btrfs_trans_handle *trans,
>         if (!buf) {
>                 btrfs_free_extent(trans, root, ins.objectid, ins.offset,
>                                   0, root->root_key.objectid, level, 0);
> -               BUG_ON(1);
>                 return ERR_PTR(-ENOMEM);
>         }
>         btrfs_set_buffer_uptodate(buf);
> diff --git a/transaction.c b/transaction.c
> index ad705728..33225002 100644
> --- a/transaction.c
> +++ b/transaction.c
> @@ -165,9 +165,11 @@ int btrfs_commit_transaction(struct btrfs_trans_handle 
> *trans,
>         BUG_ON(ret);
>  commit_tree:
>         ret = commit_tree_roots(trans, fs_info);
> -       BUG_ON(ret);
> +       if (ret)
> +               goto error;
>         ret = __commit_transaction(trans, root);
> -       BUG_ON(ret);
> +       if (ret)
> +               goto error;
>         write_ctree_super(trans, fs_info);
>         btrfs_finish_extent_commit(trans, fs_info->extent_root,
>                                    &fs_info->pinned_extents);
> @@ -177,6 +179,8 @@ commit_tree:
>         fs_info->running_transaction = NULL;
>         fs_info->last_trans_committed = transid;
>         return 0;
> +error:
> +       return ret;
>  }
>
>  void btrfs_abort_transaction(struct btrfs_trans_handle *trans, int error)
> --
> 2.13.5
>
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
> the body of a message to majord...@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to