]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
btrfs: simplify return logic at check_committed_ref()
authorFilipe Manana <fdmanana@suse.com>
Mon, 9 Dec 2024 16:24:30 +0000 (16:24 +0000)
committerDavid Sterba <dsterba@suse.com>
Mon, 13 Jan 2025 13:53:16 +0000 (14:53 +0100)
Instead of setting the value to return in a local variable 'ret' and then
jumping into a label named 'out' that does nothing but return that value,
simplify everything by getting rid of the label and directly returning a
value.

Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/extent-tree.c

index 00e137c48a9bc13f393f7d49422454e45ef9b0bc..51c49b2f49911afd0e8ef44405310bb34e226f53 100644 (file)
@@ -2316,35 +2316,32 @@ static noinline int check_committed_ref(struct btrfs_root *root,
 
        ret = btrfs_search_slot(NULL, extent_root, &key, path, 0, 0);
        if (ret < 0)
-               goto out;
+               return ret;
        if (ret == 0) {
                /*
                 * Key with offset -1 found, there would have to exist an extent
                 * item with such offset, but this is out of the valid range.
                 */
-               ret = -EUCLEAN;
-               goto out;
+               return -EUCLEAN;
        }
 
-       ret = -ENOENT;
        if (path->slots[0] == 0)
-               goto out;
+               return -ENOENT;
 
        path->slots[0]--;
        leaf = path->nodes[0];
        btrfs_item_key_to_cpu(leaf, &key, path->slots[0]);
 
        if (key.objectid != bytenr || key.type != BTRFS_EXTENT_ITEM_KEY)
-               goto out;
+               return -ENOENT;
 
-       ret = 1;
        item_size = btrfs_item_size(leaf, path->slots[0]);
        ei = btrfs_item_ptr(leaf, path->slots[0], struct btrfs_extent_item);
        expected_size = sizeof(*ei) + btrfs_extent_inline_ref_size(BTRFS_EXTENT_DATA_REF_KEY);
 
        /* No inline refs; we need to bail before checking for owner ref. */
        if (item_size == sizeof(*ei))
-               goto out;
+               return 1;
 
        /* Check for an owner ref; skip over it to the real inline refs. */
        iref = (struct btrfs_extent_inline_ref *)(ei + 1);
@@ -2357,11 +2354,11 @@ static noinline int check_committed_ref(struct btrfs_root *root,
 
        /* If extent item has more than 1 inline ref then it's shared */
        if (item_size != expected_size)
-               goto out;
+               return 1;
 
        /* If this extent has SHARED_DATA_REF then it's shared */
        if (type != BTRFS_EXTENT_DATA_REF_KEY)
-               goto out;
+               return 1;
 
        ref = (struct btrfs_extent_data_ref *)(&iref->offset);
        if (btrfs_extent_refs(leaf, ei) !=
@@ -2369,11 +2366,9 @@ static noinline int check_committed_ref(struct btrfs_root *root,
            btrfs_extent_data_ref_root(leaf, ref) != btrfs_root_id(root) ||
            btrfs_extent_data_ref_objectid(leaf, ref) != objectid ||
            btrfs_extent_data_ref_offset(leaf, ref) != offset)
-               goto out;
+               return 1;
 
-       ret = 0;
-out:
-       return ret;
+       return 0;
 }
 
 int btrfs_cross_ref_exist(struct btrfs_root *root, u64 objectid, u64 offset,