diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c index 3ecd8b1f239fccfaf277c7bf50e215440610a534..d39e2241ceb74cf2073935209e10b577885c23aa 100644 --- a/fs/btrfs/extent_io.c +++ b/fs/btrfs/extent_io.c @@ -1262,15 +1262,6 @@ int convert_extent_bit(struct extent_io_tree *tree, u64 start, u64 end, goto out; } - goto search_again; - -out: - spin_unlock(&tree->lock); - if (prealloc) - free_extent_state(prealloc); - - return err; - search_again: if (start > end) goto out; @@ -1279,6 +1270,13 @@ int convert_extent_bit(struct extent_io_tree *tree, u64 start, u64 end, cond_resched(); first_iteration = false; goto again; + +out: + spin_unlock(&tree->lock); + if (prealloc) + free_extent_state(prealloc); + + return err; } /* wrappers around set/clear extent bit */