@@ -6171,25 +6171,6 @@ static int get_extra_mirror_from_replace(struct btrfs_fs_info *fs_info,
return ret;
}
-static bool is_block_group_to_copy(struct btrfs_fs_info *fs_info, u64 logical)
-{
- struct btrfs_block_group *cache;
- bool ret;
-
- /* Non zoned filesystem does not use "to_copy" flag */
- if (!btrfs_is_zoned(fs_info))
- return false;
-
- cache = btrfs_lookup_block_group(fs_info, logical);
-
- spin_lock(&cache->lock);
- ret = cache->to_copy;
- spin_unlock(&cache->lock);
-
- btrfs_put_block_group(cache);
- return ret;
-}
-
static void handle_ops_on_dev_replace(enum btrfs_map_op op,
struct btrfs_io_context **bioc_ret,
struct btrfs_dev_replace *dev_replace,
@@ -6210,7 +6191,8 @@ static void handle_ops_on_dev_replace(enum btrfs_map_op op,
* A block group which have "to_copy" set will eventually
* copied by dev-replace process. We can avoid cloning IO here.
*/
- if (is_block_group_to_copy(dev_replace->srcdev->fs_info, logical))
+ if (btrfs_is_block_group_to_copy(dev_replace->srcdev->fs_info,
+ logical))
return;
/*
@@ -2214,3 +2214,22 @@ bool btrfs_finish_block_group_to_copy(struct btrfs_device *srcdev,
return true;
}
+
+bool btrfs_is_block_group_to_copy(struct btrfs_fs_info *fs_info, u64 logical)
+{
+ struct btrfs_block_group *cache;
+ bool ret;
+
+ /* Non zoned filesystem does not use "to_copy" flag */
+ if (!btrfs_is_zoned(fs_info))
+ return false;
+
+ cache = btrfs_lookup_block_group(fs_info, logical);
+
+ spin_lock(&cache->lock);
+ ret = cache->to_copy;
+ spin_unlock(&cache->lock);
+
+ btrfs_put_block_group(cache);
+ return ret;
+}
@@ -84,6 +84,7 @@ int btrfs_mark_block_group_to_copy(struct btrfs_fs_info *fs_info,
bool btrfs_finish_block_group_to_copy(struct btrfs_device *srcdev,
struct btrfs_block_group *cache,
u64 physical);
+bool btrfs_is_block_group_to_copy(struct btrfs_fs_info *fs_info, u64 logical);
#else /* CONFIG_BLK_DEV_ZONED */
static inline int btrfs_get_dev_zone(struct btrfs_device *device, u64 pos,
struct blk_zone *zone)
@@ -255,6 +256,12 @@ static inline bool btrfs_finish_block_group_to_copy(struct btrfs_device *srcdev,
{
return true;
}
+
+static bool btrfs_is_block_group_to_copy(struct btrfs_fs_info *fs_info,
+ u64 logical)
+{
+ return false;
+}
#endif
static inline bool btrfs_dev_is_sequential(struct btrfs_device *device, u64 pos)
is_block_group_to_copy() is only used in a zoned filesystem, so move the code to zoned code. Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> --- fs/btrfs/volumes.c | 22 ++-------------------- fs/btrfs/zoned.c | 19 +++++++++++++++++++ fs/btrfs/zoned.h | 7 +++++++ 3 files changed, 28 insertions(+), 20 deletions(-)