btrfs: move kthread_associate_blkcg out of btrfs_submit_compressed_write
btrfs_submit_compressed_write should not have to care if it is called from a helper thread or not. Move the kthread_associate_blkcg handling into submit_one_async_extent, as that is the one caller that needs it. Also move the assignment of REQ_CGROUP_PUNT into cow_file_range_async, as that is the routine that sets up the helper thread offload. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
0f69d1f4d6
commit
05d06a5c9d
@ -286,7 +286,6 @@ void btrfs_submit_compressed_write(struct btrfs_inode *inode, u64 start,
|
||||
struct page **compressed_pages,
|
||||
unsigned int nr_pages,
|
||||
blk_opf_t write_flags,
|
||||
struct cgroup_subsys_state *blkcg_css,
|
||||
bool writeback)
|
||||
{
|
||||
struct btrfs_fs_info *fs_info = inode->root->fs_info;
|
||||
@ -295,10 +294,6 @@ void btrfs_submit_compressed_write(struct btrfs_inode *inode, u64 start,
|
||||
ASSERT(IS_ALIGNED(start, fs_info->sectorsize) &&
|
||||
IS_ALIGNED(len, fs_info->sectorsize));
|
||||
|
||||
if (blkcg_css) {
|
||||
kthread_associate_blkcg(blkcg_css);
|
||||
write_flags |= REQ_CGROUP_PUNT;
|
||||
}
|
||||
write_flags |= REQ_BTRFS_ONE_ORDERED;
|
||||
|
||||
cb = alloc_compressed_bio(inode, start, REQ_OP_WRITE | write_flags,
|
||||
@ -314,9 +309,6 @@ void btrfs_submit_compressed_write(struct btrfs_inode *inode, u64 start,
|
||||
btrfs_add_compressed_bio_pages(cb);
|
||||
|
||||
btrfs_submit_bio(&cb->bbio, 0);
|
||||
|
||||
if (blkcg_css)
|
||||
kthread_associate_blkcg(NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -92,7 +92,6 @@ void btrfs_submit_compressed_write(struct btrfs_inode *inode, u64 start,
|
||||
struct page **compressed_pages,
|
||||
unsigned int nr_pages,
|
||||
blk_opf_t write_flags,
|
||||
struct cgroup_subsys_state *blkcg_css,
|
||||
bool writeback);
|
||||
void btrfs_submit_compressed_read(struct btrfs_bio *bbio, int mirror_num);
|
||||
|
||||
|
@ -1054,14 +1054,18 @@ static int submit_one_async_extent(struct btrfs_inode *inode,
|
||||
extent_clear_unlock_delalloc(inode, start, end,
|
||||
NULL, EXTENT_LOCKED | EXTENT_DELALLOC,
|
||||
PAGE_UNLOCK | PAGE_START_WRITEBACK);
|
||||
|
||||
if (async_chunk->blkcg_css)
|
||||
kthread_associate_blkcg(async_chunk->blkcg_css);
|
||||
btrfs_submit_compressed_write(inode, start, /* file_offset */
|
||||
async_extent->ram_size, /* num_bytes */
|
||||
ins.objectid, /* disk_bytenr */
|
||||
ins.offset, /* compressed_len */
|
||||
async_extent->pages, /* compressed_pages */
|
||||
async_extent->nr_pages,
|
||||
async_chunk->write_flags,
|
||||
async_chunk->blkcg_css, true);
|
||||
async_chunk->write_flags, true);
|
||||
if (async_chunk->blkcg_css)
|
||||
kthread_associate_blkcg(NULL);
|
||||
*alloc_hint = ins.objectid + ins.offset;
|
||||
kfree(async_extent);
|
||||
return ret;
|
||||
@ -1613,6 +1617,7 @@ static int cow_file_range_async(struct btrfs_inode *inode,
|
||||
if (blkcg_css != blkcg_root_css) {
|
||||
css_get(blkcg_css);
|
||||
async_chunk[i].blkcg_css = blkcg_css;
|
||||
async_chunk[i].write_flags |= REQ_CGROUP_PUNT;
|
||||
} else {
|
||||
async_chunk[i].blkcg_css = NULL;
|
||||
}
|
||||
@ -10348,8 +10353,7 @@ ssize_t btrfs_do_encoded_write(struct kiocb *iocb, struct iov_iter *from,
|
||||
btrfs_delalloc_release_extents(inode, num_bytes);
|
||||
|
||||
btrfs_submit_compressed_write(inode, start, num_bytes, ins.objectid,
|
||||
ins.offset, pages, nr_pages, 0, NULL,
|
||||
false);
|
||||
ins.offset, pages, nr_pages, 0, false);
|
||||
ret = orig_count;
|
||||
goto out;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user