mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
btrfs: zoned: factor out zoned device lookup
To be able to construct a zone append bio we need to look up the btrfs_device. The code doing the chunk map lookup to get the device is present in btrfs_submit_compressed_write and submit_extent_page. Factor out the lookup calls into a helper and use it in the submission paths. 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
50535db8fb
commit
e7ff9e6b8e
4 changed files with 39 additions and 23 deletions
|
@ -3266,19 +3266,13 @@ static int submit_extent_page(unsigned int opf,
|
|||
wbc_account_cgroup_owner(wbc, page, io_size);
|
||||
}
|
||||
if (btrfs_is_zoned(fs_info) && bio_op(bio) == REQ_OP_ZONE_APPEND) {
|
||||
struct extent_map *em;
|
||||
struct map_lookup *map;
|
||||
struct btrfs_device *device;
|
||||
|
||||
em = btrfs_get_chunk_map(fs_info, disk_bytenr, io_size);
|
||||
if (IS_ERR(em))
|
||||
return PTR_ERR(em);
|
||||
device = btrfs_zoned_get_device(fs_info, disk_bytenr, io_size);
|
||||
if (IS_ERR(device))
|
||||
return PTR_ERR(device);
|
||||
|
||||
map = em->map_lookup;
|
||||
/* We only support single profile for now */
|
||||
ASSERT(map->num_stripes == 1);
|
||||
btrfs_io_bio(bio)->device = map->stripes[0].dev;
|
||||
|
||||
free_extent_map(em);
|
||||
btrfs_io_bio(bio)->device = device;
|
||||
}
|
||||
|
||||
*bio_ret = bio;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue