[PATCH 05/13] swap,blkcg: issue swap io with the appropriate context

From: Josef Bacik
Date: Tue May 29 2018 - 17:20:34 EST


From: Tejun Heo <tj@xxxxxxxxxx>

For backcharging we need to know who the page belongs to when swapping
it out.

Signed-off-by: Tejun Heo <tj@xxxxxxxxxx>
Signed-off-by: Josef Bacik <jbacik@xxxxxx>
---
mm/page_io.c | 10 ++++++++++
1 file changed, 10 insertions(+)

diff --git a/mm/page_io.c b/mm/page_io.c
index a552cb37e220..61e1268e5dbc 100644
--- a/mm/page_io.c
+++ b/mm/page_io.c
@@ -339,6 +339,16 @@ int __swap_writepage(struct page *page, struct writeback_control *wbc,
goto out;
}
bio->bi_opf = REQ_OP_WRITE | REQ_SWAP | wbc_to_write_flags(wbc);
+#if defined(CONFIG_MEMCG) && defined(CONFIG_BLK_CGROUP)
+ if (page->mem_cgroup) {
+ struct cgroup_subsys_state *blkcg_css;
+
+ blkcg_css = cgroup_get_e_css(page->mem_cgroup->css.cgroup,
+ &io_cgrp_subsys);
+ bio_associate_blkcg(bio, blkcg_css);
+ css_put(blkcg_css);
+ }
+#endif
count_swpout_vm_event(page);
set_page_writeback(page);
unlock_page(page);
--
2.14.3