]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
btrfs: pass reloc_control to setup_relocation_extent_mapping()
authorJohannes Thumshirn <johannes.thumshirn@wdc.com>
Wed, 5 Jun 2024 14:45:48 +0000 (16:45 +0200)
committerDavid Sterba <dsterba@suse.com>
Thu, 11 Jul 2024 13:33:23 +0000 (15:33 +0200)
All parameters passed into setup_relocation_extent_mapping() can be
derived from 'struct reloc_control', so only pass in a 'struct
reloc_control'.

Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/relocation.c

index c138d08cce76af799188328384cdf26cad263f2e..320e4362d9cf55a0f3cfee1a7c565a80c06aa6c7 100644 (file)
@@ -2899,11 +2899,14 @@ static noinline_for_stack int prealloc_file_extent_cluster(struct reloc_control
        return ret;
 }
 
-static noinline_for_stack int setup_relocation_extent_mapping(struct inode *inode,
-                               u64 start, u64 end, u64 block_start)
+static noinline_for_stack int setup_relocation_extent_mapping(struct reloc_control *rc)
 {
+       struct btrfs_inode *inode = BTRFS_I(rc->data_inode);
        struct extent_map *em;
        struct extent_state *cached_state = NULL;
+       u64 offset = inode->reloc_block_group_start;
+       u64 start = rc->cluster.start - offset;
+       u64 end = rc->cluster.end - offset;
        int ret = 0;
 
        em = alloc_extent_map();
@@ -2912,14 +2915,14 @@ static noinline_for_stack int setup_relocation_extent_mapping(struct inode *inod
 
        em->start = start;
        em->len = end + 1 - start;
-       em->disk_bytenr = block_start;
+       em->disk_bytenr = rc->cluster.start;
        em->disk_num_bytes = em->len;
        em->ram_bytes = em->len;
        em->flags |= EXTENT_FLAG_PINNED;
 
-       lock_extent(&BTRFS_I(inode)->io_tree, start, end, &cached_state);
-       ret = btrfs_replace_extent_map_range(BTRFS_I(inode), em, false);
-       unlock_extent(&BTRFS_I(inode)->io_tree, start, end, &cached_state);
+       lock_extent(&inode->io_tree, start, end, &cached_state);
+       ret = btrfs_replace_extent_map_range(inode, em, false);
+       unlock_extent(&inode->io_tree, start, end, &cached_state);
        free_extent_map(em);
 
        return ret;
@@ -3110,8 +3113,7 @@ static int relocate_file_extent_cluster(struct reloc_control *rc)
 
        file_ra_state_init(ra, inode->i_mapping);
 
-       ret = setup_relocation_extent_mapping(inode, cluster->start - offset,
-                                  cluster->end - offset, cluster->start);
+       ret = setup_relocation_extent_mapping(rc);
        if (ret)
                goto out;