mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-06 08:46:46 +00:00
btrfs: change block mapping to switch/case in btrfs_map_block
Now that all the per-profile if/else statement blocks have been converted to calls to helper the conversion to switch/case is straightforward. 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
a16fb8c6f6
commit
b55b307785
1 changed files with 16 additions and 6 deletions
|
@ -6575,26 +6575,36 @@ int btrfs_map_block(struct btrfs_fs_info *fs_info, enum btrfs_map_op op,
|
||||||
if (!dev_replace_is_ongoing)
|
if (!dev_replace_is_ongoing)
|
||||||
up_read(&dev_replace->rwsem);
|
up_read(&dev_replace->rwsem);
|
||||||
|
|
||||||
if (map->type & BTRFS_BLOCK_GROUP_RAID0) {
|
switch (map->type & BTRFS_BLOCK_GROUP_PROFILE_MASK) {
|
||||||
|
case BTRFS_BLOCK_GROUP_RAID0:
|
||||||
map_blocks_raid0(map, &io_geom);
|
map_blocks_raid0(map, &io_geom);
|
||||||
} else if (map->type & BTRFS_BLOCK_GROUP_RAID1_MASK) {
|
break;
|
||||||
|
case BTRFS_BLOCK_GROUP_RAID1:
|
||||||
|
case BTRFS_BLOCK_GROUP_RAID1C3:
|
||||||
|
case BTRFS_BLOCK_GROUP_RAID1C4:
|
||||||
map_blocks_raid1(fs_info, map, &io_geom, dev_replace_is_ongoing);
|
map_blocks_raid1(fs_info, map, &io_geom, dev_replace_is_ongoing);
|
||||||
} else if (map->type & BTRFS_BLOCK_GROUP_DUP) {
|
break;
|
||||||
|
case BTRFS_BLOCK_GROUP_DUP:
|
||||||
map_blocks_dup(map, &io_geom);
|
map_blocks_dup(map, &io_geom);
|
||||||
} else if (map->type & BTRFS_BLOCK_GROUP_RAID10) {
|
break;
|
||||||
|
case BTRFS_BLOCK_GROUP_RAID10:
|
||||||
map_blocks_raid10(fs_info, map, &io_geom, dev_replace_is_ongoing);
|
map_blocks_raid10(fs_info, map, &io_geom, dev_replace_is_ongoing);
|
||||||
} else if (map->type & BTRFS_BLOCK_GROUP_RAID56_MASK) {
|
break;
|
||||||
|
case BTRFS_BLOCK_GROUP_RAID5:
|
||||||
|
case BTRFS_BLOCK_GROUP_RAID6:
|
||||||
if (op != BTRFS_MAP_READ || io_geom.mirror_num > 1)
|
if (op != BTRFS_MAP_READ || io_geom.mirror_num > 1)
|
||||||
map_blocks_raid56_write(map, &io_geom, logical, length);
|
map_blocks_raid56_write(map, &io_geom, logical, length);
|
||||||
else
|
else
|
||||||
map_blocks_raid56_read(map, &io_geom);
|
map_blocks_raid56_read(map, &io_geom);
|
||||||
} else {
|
break;
|
||||||
|
default:
|
||||||
/*
|
/*
|
||||||
* After this, stripe_nr is the number of stripes on this
|
* After this, stripe_nr is the number of stripes on this
|
||||||
* device we have to walk to find the data, and stripe_index is
|
* device we have to walk to find the data, and stripe_index is
|
||||||
* the number of our device in the stripe array
|
* the number of our device in the stripe array
|
||||||
*/
|
*/
|
||||||
map_blocks_single(map, &io_geom);
|
map_blocks_single(map, &io_geom);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
if (io_geom.stripe_index >= map->num_stripes) {
|
if (io_geom.stripe_index >= map->num_stripes) {
|
||||||
btrfs_crit(fs_info,
|
btrfs_crit(fs_info,
|
||||||
|
|
Loading…
Reference in a new issue