buffer, writeback: make __block_write_full_page() honor cgroup writeback

[__]block_write_full_page() is used to implement ->writepage in
various filesystems.  All writeback logic is now updated to handle
cgroup writeback and the block cgroup to issue IOs for is encoded in
writeback_control and can be retrieved from the inode; however,
[__]block_write_full_page() currently ignores the blkcg indicated by
inode and issues all bio's without explicit blkcg association.

This patch adds submit_bh_blkcg() which associates the bio with the
specified blkio cgroup before issuing and uses it in
__block_write_full_page() so that the issued bio's are associated with
inode_to_wb_blkcg_css(inode).

v2: Updated for per-inode wb association.

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Jan Kara <jack@suse.cz>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Jens Axboe <axboe@fb.com>
This commit is contained in:
Tejun Heo 2015-06-02 08:37:23 -06:00 committed by Jens Axboe
parent 0747259d13
commit bafc0dba1e
2 changed files with 32 additions and 6 deletions

View file

@ -393,6 +393,12 @@ static inline struct bdi_writeback *inode_to_wb(struct inode *inode)
return inode->i_wb;
}
static inline struct cgroup_subsys_state *
inode_to_wb_blkcg_css(struct inode *inode)
{
return inode_to_wb(inode)->blkcg_css;
}
struct wb_iter {
int start_blkcg_id;
struct radix_tree_iter tree_iter;
@ -510,6 +516,12 @@ static inline void wb_blkcg_offline(struct blkcg *blkcg)
{
}
static inline struct cgroup_subsys_state *
inode_to_wb_blkcg_css(struct inode *inode)
{
return blkcg_root_css;
}
struct wb_iter {
int next_id;
};