]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
btrfs: remove pointless out labels from send.c
authorFilipe Manana <fdmanana@suse.com>
Tue, 20 Jan 2026 11:29:02 +0000 (11:29 +0000)
committerDavid Sterba <dsterba@suse.com>
Tue, 3 Feb 2026 06:56:20 +0000 (07:56 +0100)
Some functions (process_extent(), process_recorded_refs_if_needed(),
changed_inode(), compare_refs() and changed_cb()) have an 'out' label that
does nothing but return, making it pointless. Simplify this by removing
the label and returning instead of gotos plus setting the 'ret' variable.

Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.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/send.c

index d8127a7120c2d17cff34f6447019f775974c1ecd..3dcfdba018b512a355087685988b94056d0371a4 100644 (file)
@@ -6449,11 +6449,9 @@ static int process_extent(struct send_ctx *sctx,
        if (sctx->parent_root && !sctx->cur_inode_new) {
                ret = is_extent_unchanged(sctx, path, key);
                if (ret < 0)
-                       goto out;
-               if (ret) {
-                       ret = 0;
+                       return ret;
+               if (ret)
                        goto out_hole;
-               }
        } else {
                struct btrfs_file_extent_item *ei;
                u8 type;
@@ -6469,31 +6467,25 @@ static int process_extent(struct send_ctx *sctx,
                         * we have enough commands queued up to justify rev'ing
                         * the send spec.
                         */
-                       if (type == BTRFS_FILE_EXTENT_PREALLOC) {
-                               ret = 0;
-                               goto out;
-                       }
+                       if (type == BTRFS_FILE_EXTENT_PREALLOC)
+                               return 0;
 
                        /* Have a hole, just skip it. */
-                       if (btrfs_file_extent_disk_bytenr(path->nodes[0], ei) == 0) {
-                               ret = 0;
-                               goto out;
-                       }
+                       if (btrfs_file_extent_disk_bytenr(path->nodes[0], ei) == 0)
+                               return 0;
                }
        }
 
        ret = find_extent_clone(sctx, path, key->objectid, key->offset,
                        sctx->cur_inode_size, &found_clone);
        if (ret != -ENOENT && ret < 0)
-               goto out;
+               return ret;
 
        ret = send_write_or_clone(sctx, path, key, found_clone);
        if (ret)
-               goto out;
+               return ret;
 out_hole:
-       ret = maybe_send_hole(sctx, path, key);
-out:
-       return ret;
+       return maybe_send_hole(sctx, path, key);
 }
 
 static int process_all_extents(struct send_ctx *sctx)
@@ -6535,23 +6527,24 @@ static int process_recorded_refs_if_needed(struct send_ctx *sctx, bool at_end,
                                           int *pending_move,
                                           int *refs_processed)
 {
-       int ret = 0;
+       int ret;
 
        if (sctx->cur_ino == 0)
-               goto out;
+               return 0;
+
        if (!at_end && sctx->cur_ino == sctx->cmp_key->objectid &&
            sctx->cmp_key->type <= BTRFS_INODE_EXTREF_KEY)
-               goto out;
+               return 0;
+
        if (list_empty(&sctx->new_refs) && list_empty(&sctx->deleted_refs))
-               goto out;
+               return 0;
 
        ret = process_recorded_refs(sctx, pending_move);
        if (ret < 0)
-               goto out;
+               return ret;
 
        *refs_processed = 1;
-out:
-       return ret;
+       return 0;
 }
 
 static int finish_inode_if_needed(struct send_ctx *sctx, bool at_end)
@@ -6768,7 +6761,7 @@ static void close_current_inode(struct send_ctx *sctx)
 static int changed_inode(struct send_ctx *sctx,
                         enum btrfs_compare_tree_result result)
 {
-       int ret = 0;
+       int ret;
        struct btrfs_key *key = sctx->cmp_key;
        struct btrfs_inode_item *left_ii = NULL;
        struct btrfs_inode_item *right_ii = NULL;
@@ -6860,7 +6853,7 @@ static int changed_inode(struct send_ctx *sctx,
        if (result == BTRFS_COMPARE_TREE_NEW) {
                if (btrfs_inode_nlink(sctx->left_path->nodes[0], left_ii) == 0) {
                        sctx->ignore_cur_inode = true;
-                       goto out;
+                       return 0;
                }
                sctx->cur_inode_gen = left_gen;
                sctx->cur_inode_new = true;
@@ -6888,7 +6881,7 @@ static int changed_inode(struct send_ctx *sctx,
                old_nlinks = btrfs_inode_nlink(sctx->right_path->nodes[0], right_ii);
                if (new_nlinks == 0 && old_nlinks == 0) {
                        sctx->ignore_cur_inode = true;
-                       goto out;
+                       return 0;
                } else if (new_nlinks == 0 || old_nlinks == 0) {
                        sctx->cur_inode_new_gen = 1;
                }
@@ -6914,7 +6907,7 @@ static int changed_inode(struct send_ctx *sctx,
                                ret = process_all_refs(sctx,
                                                BTRFS_COMPARE_TREE_DELETED);
                                if (ret < 0)
-                                       goto out;
+                                       return ret;
                        }
 
                        /*
@@ -6935,11 +6928,11 @@ static int changed_inode(struct send_ctx *sctx,
                                                left_ii);
                                ret = send_create_inode_if_needed(sctx);
                                if (ret < 0)
-                                       goto out;
+                                       return ret;
 
                                ret = process_all_refs(sctx, BTRFS_COMPARE_TREE_NEW);
                                if (ret < 0)
-                                       goto out;
+                                       return ret;
                                /*
                                 * Advance send_progress now as we did not get
                                 * into process_recorded_refs_if_needed in the
@@ -6953,10 +6946,10 @@ static int changed_inode(struct send_ctx *sctx,
                                 */
                                ret = process_all_extents(sctx);
                                if (ret < 0)
-                                       goto out;
+                                       return ret;
                                ret = process_all_new_xattrs(sctx);
                                if (ret < 0)
-                                       goto out;
+                                       return ret;
                        }
                } else {
                        sctx->cur_inode_gen = left_gen;
@@ -6970,8 +6963,7 @@ static int changed_inode(struct send_ctx *sctx,
                }
        }
 
-out:
-       return ret;
+       return 0;
 }
 
 /*
@@ -7104,20 +7096,20 @@ static int compare_refs(struct send_ctx *sctx, struct btrfs_path *path,
        u32 item_size;
        u32 cur_offset = 0;
        int ref_name_len;
-       int ret = 0;
 
        /* Easy case, just check this one dirid */
        if (key->type == BTRFS_INODE_REF_KEY) {
                dirid = key->offset;
 
-               ret = dir_changed(sctx, dirid);
-               goto out;
+               return dir_changed(sctx, dirid);
        }
 
        leaf = path->nodes[0];
        item_size = btrfs_item_size(leaf, path->slots[0]);
        ptr = btrfs_item_ptr_offset(leaf, path->slots[0]);
        while (cur_offset < item_size) {
+               int ret;
+
                extref = (struct btrfs_inode_extref *)(ptr +
                                                       cur_offset);
                dirid = btrfs_inode_extref_parent(leaf, extref);
@@ -7127,11 +7119,10 @@ static int compare_refs(struct send_ctx *sctx, struct btrfs_path *path,
                        continue;
                ret = dir_changed(sctx, dirid);
                if (ret)
-                       break;
+                       return ret;
                last_dirid = dirid;
        }
-out:
-       return ret;
+       return 0;
 }
 
 /*
@@ -7212,12 +7203,12 @@ static int changed_cb(struct btrfs_path *left_path,
 
        ret = finish_inode_if_needed(sctx, 0);
        if (ret < 0)
-               goto out;
+               return ret;
 
        /* Ignore non-FS objects */
        if (key->objectid == BTRFS_FREE_INO_OBJECTID ||
            key->objectid == BTRFS_FREE_SPACE_OBJECTID)
-               goto out;
+               return 0;
 
        if (key->type == BTRFS_INODE_ITEM_KEY) {
                ret = changed_inode(sctx, result);
@@ -7234,7 +7225,6 @@ static int changed_cb(struct btrfs_path *left_path,
                        ret = changed_verity(sctx, result);
        }
 
-out:
        return ret;
 }