aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/include/linux/backing-dev.h
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2015-06-02 08:37:23 -0600
committerJens Axboe <axboe@fb.com>2015-06-02 08:37:23 -0600
commitbafc0dba1e20d84578d7098d32caf63441e5743d (patch)
treee6ee1d8fd5b84a6a39da8705ce777b912fb70a02 /include/linux/backing-dev.h
parentwriteback: dirty inodes against their matching cgroup bdi_writeback's (diff)
downloadwireguard-linux-bafc0dba1e20d84578d7098d32caf63441e5743d.tar.xz
wireguard-linux-bafc0dba1e20d84578d7098d32caf63441e5743d.zip
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>
Diffstat (limited to 'include/linux/backing-dev.h')
-rw-r--r--include/linux/backing-dev.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/include/linux/backing-dev.h b/include/linux/backing-dev.h
index 9cc11e5b97ca..e9d7373f5f93 100644
--- a/include/linux/backing-dev.h
+++ b/include/linux/backing-dev.h
@@ -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;
};