On Thu, 18 Mar 2021 10:00:17 -0600 Jens Axboe <ax...@kernel.dk> wrote:

> On 3/18/21 9:53 AM, Shakeel Butt wrote:
> > On Wed, Mar 17, 2021 at 3:30 PM Jens Axboe <ax...@kernel.dk> wrote:
> >>
> >> On 3/16/21 9:36 AM, Dan Schatzberg wrote:
> >>> No major changes, just rebasing and resubmitting
> >>
> >> Applied 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-shake...@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;
}


Reply via email to