Message ID | 20241216-btrfs_need_stripe_tree_update-cleanups-v2-3-42b6d0274da7@kernel.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | btrfs: reduce repeated calls to btrfs_need_stripe_tree_update() | expand |
On Mon, Dec 16, 2024 at 8:12 AM Johannes Thumshirn <jth@kernel.org> wrote: > > From: Johannes Thumshirn <johannes.thumshirn@wdc.com> > > Now that we have the stripe tree decision saved in struct > btrfs_io_geometry we can pass it into is_single_device_io() and get rid of > another call to btrfs_need_raid_stripe_tree_update(). > > Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Reviewed-by: Filipe Manana <fdmanana@suse.com> Looks good, thanks. > --- > fs/btrfs/volumes.c | 9 ++++----- > 1 file changed, 4 insertions(+), 5 deletions(-) > > diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c > index 088ba0499e184c93a402a3f92167cccfa33eec58..fcd80ba9dd4286305ebeea58adc5950a532cc06c 100644 > --- a/fs/btrfs/volumes.c > +++ b/fs/btrfs/volumes.c > @@ -6362,7 +6362,7 @@ static bool is_single_device_io(struct btrfs_fs_info *fs_info, > const struct btrfs_io_stripe *smap, > const struct btrfs_chunk_map *map, > int num_alloc_stripes, > - enum btrfs_map_op op, int mirror_num) > + struct btrfs_io_geometry *io_geom) > { > if (!smap) > return false; > @@ -6370,10 +6370,10 @@ static bool is_single_device_io(struct btrfs_fs_info *fs_info, > if (num_alloc_stripes != 1) > return false; > > - if (btrfs_need_stripe_tree_update(fs_info, map->type) && op != BTRFS_MAP_READ) > + if (io_geom->use_rst && io_geom->op != BTRFS_MAP_READ) > return false; > > - if ((map->type & BTRFS_BLOCK_GROUP_RAID56_MASK) && mirror_num > 1) > + if ((map->type & BTRFS_BLOCK_GROUP_RAID56_MASK) && io_geom->mirror_num > 1) > return false; > > return true; > @@ -6648,8 +6648,7 @@ int btrfs_map_block(struct btrfs_fs_info *fs_info, enum btrfs_map_op op, > * physical block information on the stack instead of allocating an > * I/O context structure. > */ > - if (is_single_device_io(fs_info, smap, map, num_alloc_stripes, op, > - io_geom.mirror_num)) { > + if (is_single_device_io(fs_info, smap, map, num_alloc_stripes, &io_geom)) { > ret = set_io_stripe(fs_info, logical, length, smap, map, &io_geom); > if (mirror_num_ret) > *mirror_num_ret = io_geom.mirror_num; > > -- > 2.43.0 > >
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index 088ba0499e184c93a402a3f92167cccfa33eec58..fcd80ba9dd4286305ebeea58adc5950a532cc06c 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c @@ -6362,7 +6362,7 @@ static bool is_single_device_io(struct btrfs_fs_info *fs_info, const struct btrfs_io_stripe *smap, const struct btrfs_chunk_map *map, int num_alloc_stripes, - enum btrfs_map_op op, int mirror_num) + struct btrfs_io_geometry *io_geom) { if (!smap) return false; @@ -6370,10 +6370,10 @@ static bool is_single_device_io(struct btrfs_fs_info *fs_info, if (num_alloc_stripes != 1) return false; - if (btrfs_need_stripe_tree_update(fs_info, map->type) && op != BTRFS_MAP_READ) + if (io_geom->use_rst && io_geom->op != BTRFS_MAP_READ) return false; - if ((map->type & BTRFS_BLOCK_GROUP_RAID56_MASK) && mirror_num > 1) + if ((map->type & BTRFS_BLOCK_GROUP_RAID56_MASK) && io_geom->mirror_num > 1) return false; return true; @@ -6648,8 +6648,7 @@ int btrfs_map_block(struct btrfs_fs_info *fs_info, enum btrfs_map_op op, * physical block information on the stack instead of allocating an * I/O context structure. */ - if (is_single_device_io(fs_info, smap, map, num_alloc_stripes, op, - io_geom.mirror_num)) { + if (is_single_device_io(fs_info, smap, map, num_alloc_stripes, &io_geom)) { ret = set_io_stripe(fs_info, logical, length, smap, map, &io_geom); if (mirror_num_ret) *mirror_num_ret = io_geom.mirror_num;