Re: [PATCH v10 0/3] Charge loop device i/o to issuing cgroup
From: Andrew Morton <akpm@linux-foundation.org>
Date: 2021-03-18 23:47:03
Also in:
cgroups, linux-mm, lkml
On Thu, 18 Mar 2021 10:00:17 -0600 Jens Axboe [off-list ref] wrote:
On 3/18/21 9:53 AM, Shakeel Butt wrote:quoted
On Wed, Mar 17, 2021 at 3:30 PM Jens Axboe [off-list ref] wrote:quoted
On 3/16/21 9:36 AM, Dan Schatzberg wrote:quoted
No major changes, just rebasing and resubmittingApplied for 5.13, thanks.I have requested a couple of changes in the patch series. Can this applied series still be changed or new patches are required?I have nothing sitting on top of it for now, so as far as I'm concerned we can apply a new series instead. Then we can also fold in that fix from Colin that he posted this morning...
The collision in memcontrol.c is a pain, but I guess as this is mainly a loop patch, the block tree is an appropriate route. Here's the collision between "mm: Charge active memcg when no mm is set" and Shakeels's https://lkml.kernel.org/r/20210305212639.775498-1-shakeelb@google.com
--- mm/memcontrol.c
+++ mm/memcontrol.c@@ -6728,8 +6730,15 @@ int mem_cgroup_charge(struct page *page, struct mm_struct *mm, gfp_t gfp_mask) rcu_read_unlock(); } - if (!memcg) - memcg = get_mem_cgroup_from_mm(mm); + if (!memcg) { + if (!mm) { + memcg = get_mem_cgroup_from_current(); + if (!memcg) + memcg = get_mem_cgroup_from_mm(current->mm); + } else { + memcg = get_mem_cgroup_from_mm(mm); + } + } ret = try_charge(memcg, gfp_mask, nr_pages); if (ret)
Which I resolved thusly:
int mem_cgroup_charge(struct page *page, struct mm_struct *mm, gfp_t gfp_mask)
{
struct mem_cgroup *memcg;
int ret;
if (mem_cgroup_disabled())
return 0;
if (!mm) {
memcg = get_mem_cgroup_from_current();
(!memcg)
memcg = get_mem_cgroup_from_mm(current->mm);
} else {
memcg = get_mem_cgroup_from_mm(mm);
}
ret = __mem_cgroup_charge(page, memcg, gfp_mask);
css_put(&memcg->css);
return ret;
}