Commit 27f0d9c9 authored by Filipe Manana's avatar Filipe Manana Committed by David Sterba

btrfs: refactor mergable_maps() for more readability

At mergable_maps() instead of having a single if statement with many
ORed and ANDed conditions, refactor it with multiple if statements that
check a single condition and return immediately once a requirement fails.
This makes it easier to read.

Also change the return type from int to bool, make the arguments const
and rename the function from mergable_maps() to mergeable_maps().
Signed-off-by: default avatarFilipe Manana <fdmanana@suse.com>
Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent b144cc04
...@@ -211,19 +211,19 @@ static bool can_merge_extent_map(const struct extent_map *em) ...@@ -211,19 +211,19 @@ static bool can_merge_extent_map(const struct extent_map *em)
} }
/* Check to see if two extent_map structs are adjacent and safe to merge. */ /* Check to see if two extent_map structs are adjacent and safe to merge. */
static int mergable_maps(struct extent_map *prev, struct extent_map *next) static bool mergeable_maps(const struct extent_map *prev, const struct extent_map *next)
{ {
if (extent_map_end(prev) == next->start && if (extent_map_end(prev) != next->start)
prev->flags == next->flags && return false;
((next->block_start == EXTENT_MAP_HOLE &&
prev->block_start == EXTENT_MAP_HOLE) || if (prev->flags != next->flags)
(next->block_start == EXTENT_MAP_INLINE && return false;
prev->block_start == EXTENT_MAP_INLINE) ||
(next->block_start < EXTENT_MAP_LAST_BYTE - 1 && if (next->block_start < EXTENT_MAP_LAST_BYTE - 1)
next->block_start == extent_map_block_end(prev)))) { return next->block_start == extent_map_block_end(prev);
return 1;
} /* HOLES and INLINE extents. */
return 0; return next->block_start == prev->block_start;
} }
static void try_merge_map(struct extent_map_tree *tree, struct extent_map *em) static void try_merge_map(struct extent_map_tree *tree, struct extent_map *em)
...@@ -249,7 +249,7 @@ static void try_merge_map(struct extent_map_tree *tree, struct extent_map *em) ...@@ -249,7 +249,7 @@ static void try_merge_map(struct extent_map_tree *tree, struct extent_map *em)
rb = rb_prev(&em->rb_node); rb = rb_prev(&em->rb_node);
if (rb) if (rb)
merge = rb_entry(rb, struct extent_map, rb_node); merge = rb_entry(rb, struct extent_map, rb_node);
if (rb && can_merge_extent_map(merge) && mergable_maps(merge, em)) { if (rb && can_merge_extent_map(merge) && mergeable_maps(merge, em)) {
em->start = merge->start; em->start = merge->start;
em->orig_start = merge->orig_start; em->orig_start = merge->orig_start;
em->len += merge->len; em->len += merge->len;
...@@ -269,7 +269,7 @@ static void try_merge_map(struct extent_map_tree *tree, struct extent_map *em) ...@@ -269,7 +269,7 @@ static void try_merge_map(struct extent_map_tree *tree, struct extent_map *em)
rb = rb_next(&em->rb_node); rb = rb_next(&em->rb_node);
if (rb) if (rb)
merge = rb_entry(rb, struct extent_map, rb_node); merge = rb_entry(rb, struct extent_map, rb_node);
if (rb && can_merge_extent_map(merge) && mergable_maps(em, merge)) { if (rb && can_merge_extent_map(merge) && mergeable_maps(em, merge)) {
em->len += merge->len; em->len += merge->len;
em->block_len += merge->block_len; em->block_len += merge->block_len;
rb_erase_cached(&merge->rb_node, &tree->map); rb_erase_cached(&merge->rb_node, &tree->map);
......
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