diff for duplicates of <20140719173911.GA1725@cmpxchg.org> diff --git a/a/1.txt b/N1/1.txt index c3f12d6..a491a28 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -1,5 +1,5 @@ On Fri, Jul 18, 2014 at 05:12:54PM +0200, Miklos Szeredi wrote: -> On Fri, Jul 18, 2014 at 4:45 PM, Johannes Weiner <hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org> wrote: +> On Fri, Jul 18, 2014 at 4:45 PM, Johannes Weiner <hannes@cmpxchg.org> wrote: > > > I assumed the source page would always be new, according to this part > > in fuse_try_move_page(): @@ -35,185 +35,3 @@ we uncharge it, and make sure that if it was on the LRU it's moved to the correct lruvec (the root memcg's): --- -From ce51bdcf02bee94a1f1049864b1665c2d9830281 Mon Sep 17 00:00:00 2001 -From: Johannes Weiner <hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org> -Date: Fri, 18 Jul 2014 09:48:42 -0400 -Subject: [patch] mm: memcontrol: rewrite uncharge API fix - page cache - migration - -It was known that the target page in migration could be on the LRU - -clarify this in mem_cgroup_migrate() and correct the VM_BUG_ON_PAGE(). - -However, during page cache replacement, the source page can also be on -the LRU, and two things need to be considered: - -1. charge moving can race and change pc->mem_cgroup from under us: -grab the page lock in mem_cgroup_move_account() to prevent that. - -2. the lruvec of the page changes as we uncharge it, and putback can -race with us: grab the lru lock and isolate the page iff on LRU to -prevent races and to ensure the page is on the right lruvec afterward. - -Reported-by: Michal Hocko <mhocko-AlSwsSmVLrQ@public.gmane.org> -Signed-off-by: Johannes Weiner <hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org> -Cc: Miklos Szeredi <miklos-sUDqSbJrdHQHWmgEVkV9KA@public.gmane.org> ---- - mm/memcontrol.c | 83 +++++++++++++++++++++++++++++++++++++++------------------ - 1 file changed, 57 insertions(+), 26 deletions(-) - -diff --git a/mm/memcontrol.c b/mm/memcontrol.c -index 9db142d83b5c..b7c9a202dee9 100644 ---- a/mm/memcontrol.c -+++ b/mm/memcontrol.c -@@ -2696,13 +2696,42 @@ struct mem_cgroup *try_get_mem_cgroup_from_page(struct page *page) - return memcg; - } - -+static void lock_page_lru(struct page *page, int *isolated) -+{ -+ struct zone *zone = page_zone(page); -+ -+ spin_lock_irq(&zone->lru_lock); -+ if (PageLRU(page)) { -+ struct lruvec *lruvec; -+ -+ lruvec = mem_cgroup_page_lruvec(page, zone); -+ ClearPageLRU(page); -+ del_page_from_lru_list(page, lruvec, page_lru(page)); -+ *isolated = 1; -+ } else -+ *isolated = 0; -+} -+ -+static void unlock_page_lru(struct page *page, int isolated) -+{ -+ struct zone *zone = page_zone(page); -+ -+ if (isolated) { -+ struct lruvec *lruvec; -+ -+ lruvec = mem_cgroup_page_lruvec(page, zone); -+ VM_BUG_ON_PAGE(PageLRU(page), page); -+ SetPageLRU(page); -+ add_page_to_lru_list(page, lruvec, page_lru(page)); -+ } -+ spin_unlock_irq(&zone->lru_lock); -+} -+ - static void commit_charge(struct page *page, struct mem_cgroup *memcg, - unsigned int nr_pages, bool lrucare) - { - struct page_cgroup *pc = lookup_page_cgroup(page); -- struct zone *uninitialized_var(zone); -- bool was_on_lru = false; -- struct lruvec *lruvec; -+ int isolated; - - VM_BUG_ON_PAGE(PageCgroupUsed(pc), page); - /* -@@ -2714,16 +2743,8 @@ static void commit_charge(struct page *page, struct mem_cgroup *memcg, - * In some cases, SwapCache and FUSE(splice_buf->radixtree), the page - * may already be on some other mem_cgroup's LRU. Take care of it. - */ -- if (lrucare) { -- zone = page_zone(page); -- spin_lock_irq(&zone->lru_lock); -- if (PageLRU(page)) { -- lruvec = mem_cgroup_zone_lruvec(zone, pc->mem_cgroup); -- ClearPageLRU(page); -- del_page_from_lru_list(page, lruvec, page_lru(page)); -- was_on_lru = true; -- } -- } -+ if (lrucare) -+ lock_page_lru(page, &isolated); - - /* - * Nobody should be changing or seriously looking at -@@ -2742,15 +2763,8 @@ static void commit_charge(struct page *page, struct mem_cgroup *memcg, - pc->mem_cgroup = memcg; - pc->flags = PCG_USED | PCG_MEM | (do_swap_account ? PCG_MEMSW : 0); - -- if (lrucare) { -- if (was_on_lru) { -- lruvec = mem_cgroup_zone_lruvec(zone, pc->mem_cgroup); -- VM_BUG_ON_PAGE(PageLRU(page), page); -- SetPageLRU(page); -- add_page_to_lru_list(page, lruvec, page_lru(page)); -- } -- spin_unlock_irq(&zone->lru_lock); -- } -+ if (lrucare) -+ unlock_page_lru(page, isolated); - - local_irq_disable(); - mem_cgroup_charge_statistics(memcg, page, nr_pages); -@@ -3450,9 +3464,17 @@ static int mem_cgroup_move_account(struct page *page, - if (nr_pages > 1 && !PageTransHuge(page)) - goto out; - -+ /* -+ * Prevent mem_cgroup_migrate() from looking at pc->mem_cgroup -+ * of its source page while we change it: page migration takes -+ * both pages off the LRU, but page cache replacement doesn't. -+ */ -+ if (!trylock_page(page)) -+ goto out; -+ - ret = -EINVAL; - if (!PageCgroupUsed(pc) || pc->mem_cgroup != from) -- goto out; -+ goto out_unlock; - - move_lock_mem_cgroup(from, &flags); - -@@ -3487,6 +3509,8 @@ static int mem_cgroup_move_account(struct page *page, - mem_cgroup_charge_statistics(from, page, -nr_pages); - memcg_check_events(from, page); - local_irq_enable(); -+out_unlock: -+ unlock_page(page); - out: - return ret; - } -@@ -6614,7 +6638,7 @@ void mem_cgroup_uncharge_list(struct list_head *page_list) - * mem_cgroup_migrate - migrate a charge to another page - * @oldpage: currently charged page - * @newpage: page to transfer the charge to -- * @lrucare: page might be on LRU already -+ * @lrucare: both pages might be on the LRU already - * - * Migrate the charge from @oldpage to @newpage. - * -@@ -6625,11 +6649,12 @@ void mem_cgroup_migrate(struct page *oldpage, struct page *newpage, - { - unsigned int nr_pages = 1; - struct page_cgroup *pc; -+ int isolated; - - VM_BUG_ON_PAGE(!PageLocked(oldpage), oldpage); - VM_BUG_ON_PAGE(!PageLocked(newpage), newpage); -- VM_BUG_ON_PAGE(PageLRU(oldpage), oldpage); -- VM_BUG_ON_PAGE(PageLRU(newpage), newpage); -+ VM_BUG_ON_PAGE(!lrucare && PageLRU(oldpage), oldpage); -+ VM_BUG_ON_PAGE(!lrucare && PageLRU(newpage), newpage); - VM_BUG_ON_PAGE(PageAnon(oldpage) != PageAnon(newpage), newpage); - - if (mem_cgroup_disabled()) -@@ -6648,8 +6673,14 @@ void mem_cgroup_migrate(struct page *oldpage, struct page *newpage, - VM_BUG_ON_PAGE(!PageTransHuge(newpage), newpage); - } - -+ if (lrucare) -+ lock_page_lru(oldpage, &isolated); -+ - pc->flags = 0; - -+ if (lrucare) -+ unlock_page_lru(oldpage, isolated); -+ - local_irq_disable(); - mem_cgroup_charge_statistics(pc->mem_cgroup, oldpage, -nr_pages); - memcg_check_events(pc->mem_cgroup, oldpage); --- -2.0.0 diff --git a/a/content_digest b/N1/content_digest index 927b725..93917b7 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -5,23 +5,22 @@ "ref\020140718071246.GA21565@dhcp22.suse.cz\0" "ref\020140718144554.GG29639@cmpxchg.org\0" "ref\0CAJfpegt9k+YULet3vhmG3br7zSiHy-DRL+MiEE=HRzcs+mLzbw@mail.gmail.com\0" - "ref\0CAJfpegt9k+YULet3vhmG3br7zSiHy-DRL+MiEE=HRzcs+mLzbw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org\0" - "From\0Johannes Weiner <hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>\0" + "From\0Johannes Weiner <hannes@cmpxchg.org>\0" "Subject\0Re: [patch 13/13] mm: memcontrol: rewrite uncharge API\0" "Date\0Sat, 19 Jul 2014 13:39:11 -0400\0" - "To\0Miklos Szeredi <miklos-sUDqSbJrdHQHWmgEVkV9KA@public.gmane.org>\0" - "Cc\0Michal Hocko <mhocko-AlSwsSmVLrQ@public.gmane.org>" - Andrew Morton <akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org> - Hugh Dickins <hughd-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org> - Tejun Heo <tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> - Vladimir Davydov <vdavydov-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org> - linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org - cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org - " Kernel Mailing List <linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>\0" + "To\0Miklos Szeredi <miklos@szeredi.hu>\0" + "Cc\0Michal Hocko <mhocko@suse.cz>" + Andrew Morton <akpm@linux-foundation.org> + Hugh Dickins <hughd@google.com> + Tejun Heo <tj@kernel.org> + Vladimir Davydov <vdavydov@parallels.com> + linux-mm@kvack.org + cgroups@vger.kernel.org + " Kernel Mailing List <linux-kernel@vger.kernel.org>\0" "\00:1\0" "b\0" "On Fri, Jul 18, 2014 at 05:12:54PM +0200, Miklos Szeredi wrote:\n" - "> On Fri, Jul 18, 2014 at 4:45 PM, Johannes Weiner <hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org> wrote:\n" + "> On Fri, Jul 18, 2014 at 4:45 PM, Johannes Weiner <hannes@cmpxchg.org> wrote:\n" "> \n" "> > I assumed the source page would always be new, according to this part\n" "> > in fuse_try_move_page():\n" @@ -56,188 +55,6 @@ "we uncharge it, and make sure that if it was on the LRU it's moved to\n" "the correct lruvec (the root memcg's):\n" "\n" - "---\n" - "From ce51bdcf02bee94a1f1049864b1665c2d9830281 Mon Sep 17 00:00:00 2001\n" - "From: Johannes Weiner <hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>\n" - "Date: Fri, 18 Jul 2014 09:48:42 -0400\n" - "Subject: [patch] mm: memcontrol: rewrite uncharge API fix - page cache\n" - " migration\n" - "\n" - "It was known that the target page in migration could be on the LRU -\n" - "clarify this in mem_cgroup_migrate() and correct the VM_BUG_ON_PAGE().\n" - "\n" - "However, during page cache replacement, the source page can also be on\n" - "the LRU, and two things need to be considered:\n" - "\n" - "1. charge moving can race and change pc->mem_cgroup from under us:\n" - "grab the page lock in mem_cgroup_move_account() to prevent that.\n" - "\n" - "2. the lruvec of the page changes as we uncharge it, and putback can\n" - "race with us: grab the lru lock and isolate the page iff on LRU to\n" - "prevent races and to ensure the page is on the right lruvec afterward.\n" - "\n" - "Reported-by: Michal Hocko <mhocko-AlSwsSmVLrQ@public.gmane.org>\n" - "Signed-off-by: Johannes Weiner <hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>\n" - "Cc: Miklos Szeredi <miklos-sUDqSbJrdHQHWmgEVkV9KA@public.gmane.org>\n" - "---\n" - " mm/memcontrol.c | 83 +++++++++++++++++++++++++++++++++++++++------------------\n" - " 1 file changed, 57 insertions(+), 26 deletions(-)\n" - "\n" - "diff --git a/mm/memcontrol.c b/mm/memcontrol.c\n" - "index 9db142d83b5c..b7c9a202dee9 100644\n" - "--- a/mm/memcontrol.c\n" - "+++ b/mm/memcontrol.c\n" - "@@ -2696,13 +2696,42 @@ struct mem_cgroup *try_get_mem_cgroup_from_page(struct page *page)\n" - " \treturn memcg;\n" - " }\n" - " \n" - "+static void lock_page_lru(struct page *page, int *isolated)\n" - "+{\n" - "+\tstruct zone *zone = page_zone(page);\n" - "+\n" - "+\tspin_lock_irq(&zone->lru_lock);\n" - "+\tif (PageLRU(page)) {\n" - "+\t\tstruct lruvec *lruvec;\n" - "+\n" - "+\t\tlruvec = mem_cgroup_page_lruvec(page, zone);\n" - "+\t\tClearPageLRU(page);\n" - "+\t\tdel_page_from_lru_list(page, lruvec, page_lru(page));\n" - "+\t\t*isolated = 1;\n" - "+\t} else\n" - "+\t\t*isolated = 0;\n" - "+}\n" - "+\n" - "+static void unlock_page_lru(struct page *page, int isolated)\n" - "+{\n" - "+\tstruct zone *zone = page_zone(page);\n" - "+\n" - "+\tif (isolated) {\n" - "+\t\tstruct lruvec *lruvec;\n" - "+\n" - "+\t\tlruvec = mem_cgroup_page_lruvec(page, zone);\n" - "+\t\tVM_BUG_ON_PAGE(PageLRU(page), page);\n" - "+\t\tSetPageLRU(page);\n" - "+\t\tadd_page_to_lru_list(page, lruvec, page_lru(page));\n" - "+\t}\n" - "+\tspin_unlock_irq(&zone->lru_lock);\n" - "+}\n" - "+\n" - " static void commit_charge(struct page *page, struct mem_cgroup *memcg,\n" - " \t\t\t unsigned int nr_pages, bool lrucare)\n" - " {\n" - " \tstruct page_cgroup *pc = lookup_page_cgroup(page);\n" - "-\tstruct zone *uninitialized_var(zone);\n" - "-\tbool was_on_lru = false;\n" - "-\tstruct lruvec *lruvec;\n" - "+\tint isolated;\n" - " \n" - " \tVM_BUG_ON_PAGE(PageCgroupUsed(pc), page);\n" - " \t/*\n" - "@@ -2714,16 +2743,8 @@ static void commit_charge(struct page *page, struct mem_cgroup *memcg,\n" - " \t * In some cases, SwapCache and FUSE(splice_buf->radixtree), the page\n" - " \t * may already be on some other mem_cgroup's LRU. Take care of it.\n" - " \t */\n" - "-\tif (lrucare) {\n" - "-\t\tzone = page_zone(page);\n" - "-\t\tspin_lock_irq(&zone->lru_lock);\n" - "-\t\tif (PageLRU(page)) {\n" - "-\t\t\tlruvec = mem_cgroup_zone_lruvec(zone, pc->mem_cgroup);\n" - "-\t\t\tClearPageLRU(page);\n" - "-\t\t\tdel_page_from_lru_list(page, lruvec, page_lru(page));\n" - "-\t\t\twas_on_lru = true;\n" - "-\t\t}\n" - "-\t}\n" - "+\tif (lrucare)\n" - "+\t\tlock_page_lru(page, &isolated);\n" - " \n" - " \t/*\n" - " \t * Nobody should be changing or seriously looking at\n" - "@@ -2742,15 +2763,8 @@ static void commit_charge(struct page *page, struct mem_cgroup *memcg,\n" - " \tpc->mem_cgroup = memcg;\n" - " \tpc->flags = PCG_USED | PCG_MEM | (do_swap_account ? PCG_MEMSW : 0);\n" - " \n" - "-\tif (lrucare) {\n" - "-\t\tif (was_on_lru) {\n" - "-\t\t\tlruvec = mem_cgroup_zone_lruvec(zone, pc->mem_cgroup);\n" - "-\t\t\tVM_BUG_ON_PAGE(PageLRU(page), page);\n" - "-\t\t\tSetPageLRU(page);\n" - "-\t\t\tadd_page_to_lru_list(page, lruvec, page_lru(page));\n" - "-\t\t}\n" - "-\t\tspin_unlock_irq(&zone->lru_lock);\n" - "-\t}\n" - "+\tif (lrucare)\n" - "+\t\tunlock_page_lru(page, isolated);\n" - " \n" - " \tlocal_irq_disable();\n" - " \tmem_cgroup_charge_statistics(memcg, page, nr_pages);\n" - "@@ -3450,9 +3464,17 @@ static int mem_cgroup_move_account(struct page *page,\n" - " \tif (nr_pages > 1 && !PageTransHuge(page))\n" - " \t\tgoto out;\n" - " \n" - "+\t/*\n" - "+\t * Prevent mem_cgroup_migrate() from looking at pc->mem_cgroup\n" - "+\t * of its source page while we change it: page migration takes\n" - "+\t * both pages off the LRU, but page cache replacement doesn't.\n" - "+\t */\n" - "+\tif (!trylock_page(page))\n" - "+\t\tgoto out;\n" - "+\n" - " \tret = -EINVAL;\n" - " \tif (!PageCgroupUsed(pc) || pc->mem_cgroup != from)\n" - "-\t\tgoto out;\n" - "+\t\tgoto out_unlock;\n" - " \n" - " \tmove_lock_mem_cgroup(from, &flags);\n" - " \n" - "@@ -3487,6 +3509,8 @@ static int mem_cgroup_move_account(struct page *page,\n" - " \tmem_cgroup_charge_statistics(from, page, -nr_pages);\n" - " \tmemcg_check_events(from, page);\n" - " \tlocal_irq_enable();\n" - "+out_unlock:\n" - "+\tunlock_page(page);\n" - " out:\n" - " \treturn ret;\n" - " }\n" - "@@ -6614,7 +6638,7 @@ void mem_cgroup_uncharge_list(struct list_head *page_list)\n" - " * mem_cgroup_migrate - migrate a charge to another page\n" - " * @oldpage: currently charged page\n" - " * @newpage: page to transfer the charge to\n" - "- * @lrucare: page might be on LRU already\n" - "+ * @lrucare: both pages might be on the LRU already\n" - " *\n" - " * Migrate the charge from @oldpage to @newpage.\n" - " *\n" - "@@ -6625,11 +6649,12 @@ void mem_cgroup_migrate(struct page *oldpage, struct page *newpage,\n" - " {\n" - " \tunsigned int nr_pages = 1;\n" - " \tstruct page_cgroup *pc;\n" - "+\tint isolated;\n" - " \n" - " \tVM_BUG_ON_PAGE(!PageLocked(oldpage), oldpage);\n" - " \tVM_BUG_ON_PAGE(!PageLocked(newpage), newpage);\n" - "-\tVM_BUG_ON_PAGE(PageLRU(oldpage), oldpage);\n" - "-\tVM_BUG_ON_PAGE(PageLRU(newpage), newpage);\n" - "+\tVM_BUG_ON_PAGE(!lrucare && PageLRU(oldpage), oldpage);\n" - "+\tVM_BUG_ON_PAGE(!lrucare && PageLRU(newpage), newpage);\n" - " \tVM_BUG_ON_PAGE(PageAnon(oldpage) != PageAnon(newpage), newpage);\n" - " \n" - " \tif (mem_cgroup_disabled())\n" - "@@ -6648,8 +6673,14 @@ void mem_cgroup_migrate(struct page *oldpage, struct page *newpage,\n" - " \t\tVM_BUG_ON_PAGE(!PageTransHuge(newpage), newpage);\n" - " \t}\n" - " \n" - "+\tif (lrucare)\n" - "+\t\tlock_page_lru(oldpage, &isolated);\n" - "+\n" - " \tpc->flags = 0;\n" - " \n" - "+\tif (lrucare)\n" - "+\t\tunlock_page_lru(oldpage, isolated);\n" - "+\n" - " \tlocal_irq_disable();\n" - " \tmem_cgroup_charge_statistics(pc->mem_cgroup, oldpage, -nr_pages);\n" - " \tmemcg_check_events(pc->mem_cgroup, oldpage);\n" - "-- \n" - 2.0.0 + --- -836d08a9163a7b598eb2b7a17ac03c244d29bb4ffa71a5f570a887053e952890 +aa230dea925f4d33cecbf23d17ae5415058a969c91caafb804646638afebf284
diff --git a/a/1.txt b/N2/1.txt index c3f12d6..1f2c68b 100644 --- a/a/1.txt +++ b/N2/1.txt @@ -1,5 +1,5 @@ On Fri, Jul 18, 2014 at 05:12:54PM +0200, Miklos Szeredi wrote: -> On Fri, Jul 18, 2014 at 4:45 PM, Johannes Weiner <hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org> wrote: +> On Fri, Jul 18, 2014 at 4:45 PM, Johannes Weiner <hannes@cmpxchg.org> wrote: > > > I assumed the source page would always be new, according to this part > > in fuse_try_move_page(): @@ -35,8 +35,8 @@ we uncharge it, and make sure that if it was on the LRU it's moved to the correct lruvec (the root memcg's): --- -From ce51bdcf02bee94a1f1049864b1665c2d9830281 Mon Sep 17 00:00:00 2001 -From: Johannes Weiner <hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org> +>From ce51bdcf02bee94a1f1049864b1665c2d9830281 Mon Sep 17 00:00:00 2001 +From: Johannes Weiner <hannes@cmpxchg.org> Date: Fri, 18 Jul 2014 09:48:42 -0400 Subject: [patch] mm: memcontrol: rewrite uncharge API fix - page cache migration @@ -54,9 +54,9 @@ grab the page lock in mem_cgroup_move_account() to prevent that. race with us: grab the lru lock and isolate the page iff on LRU to prevent races and to ensure the page is on the right lruvec afterward. -Reported-by: Michal Hocko <mhocko-AlSwsSmVLrQ@public.gmane.org> -Signed-off-by: Johannes Weiner <hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org> -Cc: Miklos Szeredi <miklos-sUDqSbJrdHQHWmgEVkV9KA@public.gmane.org> +Reported-by: Michal Hocko <mhocko@suse.cz> +Signed-off-by: Johannes Weiner <hannes@cmpxchg.org> +Cc: Miklos Szeredi <miklos@szeredi.hu> --- mm/memcontrol.c | 83 +++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 57 insertions(+), 26 deletions(-) diff --git a/a/content_digest b/N2/content_digest index 927b725..5c64427 100644 --- a/a/content_digest +++ b/N2/content_digest @@ -5,23 +5,22 @@ "ref\020140718071246.GA21565@dhcp22.suse.cz\0" "ref\020140718144554.GG29639@cmpxchg.org\0" "ref\0CAJfpegt9k+YULet3vhmG3br7zSiHy-DRL+MiEE=HRzcs+mLzbw@mail.gmail.com\0" - "ref\0CAJfpegt9k+YULet3vhmG3br7zSiHy-DRL+MiEE=HRzcs+mLzbw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org\0" - "From\0Johannes Weiner <hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>\0" + "From\0Johannes Weiner <hannes@cmpxchg.org>\0" "Subject\0Re: [patch 13/13] mm: memcontrol: rewrite uncharge API\0" "Date\0Sat, 19 Jul 2014 13:39:11 -0400\0" - "To\0Miklos Szeredi <miklos-sUDqSbJrdHQHWmgEVkV9KA@public.gmane.org>\0" - "Cc\0Michal Hocko <mhocko-AlSwsSmVLrQ@public.gmane.org>" - Andrew Morton <akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org> - Hugh Dickins <hughd-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org> - Tejun Heo <tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> - Vladimir Davydov <vdavydov-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org> - linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org - cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org - " Kernel Mailing List <linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>\0" + "To\0Miklos Szeredi <miklos@szeredi.hu>\0" + "Cc\0Michal Hocko <mhocko@suse.cz>" + Andrew Morton <akpm@linux-foundation.org> + Hugh Dickins <hughd@google.com> + Tejun Heo <tj@kernel.org> + Vladimir Davydov <vdavydov@parallels.com> + linux-mm@kvack.org + cgroups@vger.kernel.org + " Kernel Mailing List <linux-kernel@vger.kernel.org>\0" "\00:1\0" "b\0" "On Fri, Jul 18, 2014 at 05:12:54PM +0200, Miklos Szeredi wrote:\n" - "> On Fri, Jul 18, 2014 at 4:45 PM, Johannes Weiner <hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org> wrote:\n" + "> On Fri, Jul 18, 2014 at 4:45 PM, Johannes Weiner <hannes@cmpxchg.org> wrote:\n" "> \n" "> > I assumed the source page would always be new, according to this part\n" "> > in fuse_try_move_page():\n" @@ -57,8 +56,8 @@ "the correct lruvec (the root memcg's):\n" "\n" "---\n" - "From ce51bdcf02bee94a1f1049864b1665c2d9830281 Mon Sep 17 00:00:00 2001\n" - "From: Johannes Weiner <hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>\n" + ">From ce51bdcf02bee94a1f1049864b1665c2d9830281 Mon Sep 17 00:00:00 2001\n" + "From: Johannes Weiner <hannes@cmpxchg.org>\n" "Date: Fri, 18 Jul 2014 09:48:42 -0400\n" "Subject: [patch] mm: memcontrol: rewrite uncharge API fix - page cache\n" " migration\n" @@ -76,9 +75,9 @@ "race with us: grab the lru lock and isolate the page iff on LRU to\n" "prevent races and to ensure the page is on the right lruvec afterward.\n" "\n" - "Reported-by: Michal Hocko <mhocko-AlSwsSmVLrQ@public.gmane.org>\n" - "Signed-off-by: Johannes Weiner <hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>\n" - "Cc: Miklos Szeredi <miklos-sUDqSbJrdHQHWmgEVkV9KA@public.gmane.org>\n" + "Reported-by: Michal Hocko <mhocko@suse.cz>\n" + "Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>\n" + "Cc: Miklos Szeredi <miklos@szeredi.hu>\n" "---\n" " mm/memcontrol.c | 83 +++++++++++++++++++++++++++++++++++++++------------------\n" " 1 file changed, 57 insertions(+), 26 deletions(-)\n" @@ -240,4 +239,4 @@ "-- \n" 2.0.0 -836d08a9163a7b598eb2b7a17ac03c244d29bb4ffa71a5f570a887053e952890 +3776e6291b49a8a3c85e3d0527db5ecf0aedc49f1de347fd29ef009366cb1e9c
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.