Commit 9a7e10e7 authored by Liu Bo's avatar Liu Bo Committed by David Sterba

Btrfs: add WARN_ONCE to detect unexpected error from merge_extent_mapping

This is a subtle case, so in order to understand the problem, it'd be good
to know the content of existing and em when any error occurs.
Signed-off-by: default avatarLiu Bo <bo.li.liu@oracle.com>
Reviewed-by: default avatarJosef Bacik <jbacik@fb.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent cd77f4f8
...@@ -562,17 +562,24 @@ int btrfs_add_extent_mapping(struct extent_map_tree *em_tree, ...@@ -562,17 +562,24 @@ int btrfs_add_extent_mapping(struct extent_map_tree *em_tree,
*em_in = existing; *em_in = existing;
ret = 0; ret = 0;
} else { } else {
u64 orig_start = em->start;
u64 orig_len = em->len;
/* /*
* The existing extent map is the one nearest to * The existing extent map is the one nearest to
* the [start, start + len) range which overlaps * the [start, start + len) range which overlaps
*/ */
ret = merge_extent_mapping(em_tree, existing, ret = merge_extent_mapping(em_tree, existing,
em, start); em, start);
free_extent_map(existing);
if (ret) { if (ret) {
free_extent_map(em); free_extent_map(em);
*em_in = NULL; *em_in = NULL;
WARN_ONCE(ret,
"unexpected error %d: merge existing(start %llu len %llu) with em(start %llu len %llu)\n",
ret, existing->start, existing->len,
orig_start, orig_len);
} }
free_extent_map(existing);
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment