Commit 429aebc0 authored by David Sterba's avatar David Sterba

btrfs: get bdev directly from fs_devices in submit_extent_page

This is preparatory patch to remove @bdev parameter from
submit_extent_page. It can't be removed completely, because the cgroups
need it for wbc when initializing the bio

wbc_init_bio
  bio_associate_blkg_from_css
    dereference bdev->bi_disk->queue

The bdev pointer is the same as latest_bdev, thus no functional change.
We can retrieve it from fs_devices that's reachable through several
dereferences. The local variable shadows the parameter, but that's only
temporary.
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 3e174099
...@@ -2987,13 +2987,16 @@ static int submit_extent_page(unsigned int opf, struct extent_io_tree *tree, ...@@ -2987,13 +2987,16 @@ static int submit_extent_page(unsigned int opf, struct extent_io_tree *tree,
} }
bio = btrfs_bio_alloc(offset); bio = btrfs_bio_alloc(offset);
bio_set_dev(bio, bdev);
bio_add_page(bio, page, page_size, pg_offset); bio_add_page(bio, page, page_size, pg_offset);
bio->bi_end_io = end_io_func; bio->bi_end_io = end_io_func;
bio->bi_private = tree; bio->bi_private = tree;
bio->bi_write_hint = page->mapping->host->i_write_hint; bio->bi_write_hint = page->mapping->host->i_write_hint;
bio->bi_opf = opf; bio->bi_opf = opf;
if (wbc) { if (wbc) {
struct block_device *bdev;
bdev = BTRFS_I(page->mapping->host)->root->fs_info->fs_devices->latest_bdev;
bio_set_dev(bio, bdev);
wbc_init_bio(wbc, bio); wbc_init_bio(wbc, bio);
wbc_account_cgroup_owner(wbc, page, page_size); wbc_account_cgroup_owner(wbc, page, page_size);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment