Currently the code executes add_extent_mapping and if it is successful it links
the new mapping, it then proceeds to unlock the extent mapping tree and check
for failure and handle them. Instead, rework the code to only perform a single
check if add_extent_mapping has failed and handle it, otherwise the code
continues in a linear fashion. No functional changes

Signed-off-by: Nikolay Borisov <nbori...@suse.com>
---
 fs/btrfs/volumes.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
index d024f1b07282..0324c1eec19d 100644
--- a/fs/btrfs/volumes.c
+++ b/fs/btrfs/volumes.c
@@ -4813,16 +4813,16 @@ static int __btrfs_alloc_chunk(struct 
btrfs_trans_handle *trans,
        em_tree = &info->mapping_tree.map_tree;
        write_lock(&em_tree->lock);
        ret = add_extent_mapping(em_tree, em, 0);
-       if (!ret) {
-               list_add_tail(&em->list, &trans->transaction->pending_chunks);
-               refcount_inc(&em->refs);
-       }
-       write_unlock(&em_tree->lock);
        if (ret) {
+               write_unlock(&em_tree->lock);
                free_extent_map(em);
                goto error;
        }
 
+       list_add_tail(&em->list, &trans->transaction->pending_chunks);
+       refcount_inc(&em->refs);
+       write_unlock(&em_tree->lock);
+
        ret = btrfs_make_block_group(trans, info, 0, type, start, num_bytes);
        if (ret)
                goto error_del_extent;
-- 
2.7.4

--
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