]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
btrfs: move locking into btrfs_get_reloc_bg_bytenr()
authorFilipe Manana <fdmanana@suse.com>
Fri, 5 Jun 2026 16:07:08 +0000 (17:07 +0100)
committerJohannes Thumshirn <johannes.thumshirn@wdc.com>
Tue, 9 Jun 2026 16:22:47 +0000 (18:22 +0200)
It does not make sense for the single caller to have the responsability
to lock the relocation mutex before calling the function and then have
the function to assert the lock is held. As this is a function in
relocation.c, move the locking details into it.

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

index 0133b688ce04d971f748f0b07955fff4235467ff..16f097f58acc4a83b1d2a86ba2d762d1d623fa71 100644 (file)
@@ -226,9 +226,7 @@ static void print_data_reloc_error(const struct btrfs_inode *inode, u64 file_off
        u32 item_size;
        int ret;
 
-       mutex_lock(&fs_info->reloc_mutex);
        logical = btrfs_get_reloc_bg_bytenr(fs_info);
-       mutex_unlock(&fs_info->reloc_mutex);
 
        if (logical == U64_MAX) {
                btrfs_warn_rl(fs_info, "has data reloc tree but no running relocation");
index 80aac9fcd6279b72892a07462e7cd86b59a79009..e7771c4c4f38844deba4c916c07c5be52b179fc1 100644 (file)
@@ -5863,14 +5863,15 @@ int btrfs_reloc_post_snapshot(struct btrfs_trans_handle *trans,
  *
  * Return U64_MAX if no running relocation.
  */
-u64 btrfs_get_reloc_bg_bytenr(const struct btrfs_fs_info *fs_info)
+u64 btrfs_get_reloc_bg_bytenr(struct btrfs_fs_info *fs_info)
 {
        u64 logical = U64_MAX;
 
-       lockdep_assert_held(&fs_info->reloc_mutex);
-
+       mutex_lock(&fs_info->reloc_mutex);
        if (fs_info->reloc_ctl && fs_info->reloc_ctl->block_group)
                logical = fs_info->reloc_ctl->block_group->start;
+       mutex_unlock(&fs_info->reloc_mutex);
+
        return logical;
 }
 
index d647823b5d134033f0a5458ee7f4869ea188f315..bb7a86e7dbe3a6a7c1d1080c5d3838c5d58f8f96 100644 (file)
@@ -41,7 +41,7 @@ int btrfs_reloc_post_snapshot(struct btrfs_trans_handle *trans,
 int btrfs_should_cancel_balance(const struct btrfs_fs_info *fs_info);
 struct btrfs_root *find_reloc_root(struct btrfs_fs_info *fs_info, u64 bytenr);
 bool btrfs_should_ignore_reloc_root(const struct btrfs_root *root);
-u64 btrfs_get_reloc_bg_bytenr(const struct btrfs_fs_info *fs_info);
+u64 btrfs_get_reloc_bg_bytenr(struct btrfs_fs_info *fs_info);
 int btrfs_translate_remap(struct btrfs_fs_info *fs_info, u64 *logical, u64 *length);
 int btrfs_remove_extent_from_remap_tree(struct btrfs_trans_handle *trans,
                                        struct btrfs_path *path,