mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-04 16:15:11 +00:00
btrfs: open code set_io_stripe for RAID56
Open code set_io_stripe() for RAID56, as it a) uses a different method to calculate the stripe_index b) doesn't need to go through raid-stripe-tree mapping code. Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
b55b307785
commit
89f547c6cc
1 changed files with 9 additions and 7 deletions
|
@ -6670,13 +6670,15 @@ int btrfs_map_block(struct btrfs_fs_info *fs_info, enum btrfs_map_op op,
|
|||
btrfs_stripe_nr_to_offset(io_geom.stripe_nr *
|
||||
nr_data_stripes(map));
|
||||
for (int i = 0; i < io_geom.num_stripes; i++) {
|
||||
ret = set_io_stripe(fs_info, op, logical, length,
|
||||
&bioc->stripes[i], map,
|
||||
(i + io_geom.stripe_nr) % io_geom.num_stripes,
|
||||
io_geom.stripe_offset,
|
||||
io_geom.stripe_nr);
|
||||
if (ret < 0)
|
||||
break;
|
||||
struct btrfs_io_stripe *dst = &bioc->stripes[i];
|
||||
u32 stripe_index;
|
||||
|
||||
stripe_index = (i + io_geom.stripe_nr) % io_geom.num_stripes;
|
||||
dst->dev = map->stripes[stripe_index].dev;
|
||||
dst->physical =
|
||||
map->stripes[stripe_index].physical +
|
||||
io_geom.stripe_offset +
|
||||
btrfs_stripe_nr_to_offset(io_geom.stripe_nr);
|
||||
}
|
||||
} else {
|
||||
/*
|
||||
|
|
Loading…
Reference in a new issue