btrfs: remove use of a temporary list at btrfs_lookup_csums_list()
authorFilipe Manana <fdmanana@suse.com>
Thu, 11 Apr 2024 17:33:43 +0000 (18:33 +0100)
committerDavid Sterba <dsterba@suse.com>
Tue, 7 May 2024 19:31:03 +0000 (21:31 +0200)
There's no need to use a temporary list to add the checksums, we can just
add them to input list and then on error delete and free any checksums
that were added. So simplify and remove the temporary list.

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/file-item.c

index 0712a0aa2dd06693d0c127b14ebe2e1ab6ab7513..c2799325706fe9262ed5e612036231deab81501d 100644 (file)
@@ -470,7 +470,6 @@ int btrfs_lookup_csums_list(struct btrfs_root *root, u64 start, u64 end,
        struct extent_buffer *leaf;
        struct btrfs_ordered_sum *sums;
        struct btrfs_csum_item *item;
-       LIST_HEAD(tmplist);
        int ret;
 
        ASSERT(IS_ALIGNED(start, fs_info->sectorsize) &&
@@ -572,18 +571,17 @@ int btrfs_lookup_csums_list(struct btrfs_root *root, u64 start, u64 end,
                                           bytes_to_csum_size(fs_info, size));
 
                        start += size;
-                       list_add_tail(&sums->list, &tmplist);
+                       list_add_tail(&sums->list, list);
                }
                path->slots[0]++;
        }
        ret = 0;
 fail:
-       while (ret < 0 && !list_empty(&tmplist)) {
-               sums = list_entry(tmplist.next, struct btrfs_ordered_sum, list);
+       while (ret < 0 && !list_empty(list)) {
+               sums = list_entry(list->next, struct btrfs_ordered_sum, list);
                list_del(&sums->list);
                kfree(sums);
        }
-       list_splice_tail(&tmplist, list);
 
        btrfs_free_path(path);
        return ret;