diff for duplicates of <4F6C3BB2.6090108@jp.fujitsu.com> diff --git a/a/1.txt b/N1/1.txt index 6303260..771cbf8 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -28,223 +28,3 @@ Thank you for your good eyes.. I feel I can't trust my eyes ;( == -From d7ed385bad22d352bb28aeb9380591b72ec5bec5 Mon Sep 17 00:00:00 2001 -From: KAMEZAWA Hiroyuki <kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org> -Date: Wed, 21 Mar 2012 19:03:40 +0900 -Subject: [PATCH] memcg: fix/change behavior of shared anon at moving task. - -This patch changes memcg's behavior at task_move(). - -At task_move(), the kernel scans a task's page table and move -the changes for mapped pages from source cgroup to target cgroup. -There has been a bug at handling shared anonymous pages for a long time. - -Before patch: - - The spec says 'shared anonymous pages are not moved.' - - The implementation was 'shared anonymoys pages may be moved'. - If page_mapcount <=2, shared anonymous pages's charge were moved. - -After patch: - - The spec says 'all anonymous pages are moved'. - - The implementation is 'all anonymous pages are moved'. - -Considering usage of memcg, this will not affect user's experience. -'shared anonymous' pages only exists between a tree of processes -which don't do exec(). Moving one of process without exec() seems -not sane. For example, libcgroup will not be affected by this change. -(Anyway, no one noticed the implementation for a long time...) - -Below is a discussion log: - - - current spec/implementation are complex - - Now, shared file caches are moved - - It adds unclear check as page_mapcount(). To do correct check, - we should check swap users, etc. - - No one notice this implementation behavior. So, no one get benefit - from the design. - - In general, once task is moved to a cgroup for running, it will not - be moved.... - - Finally, we have control knob as memory.move_charge_at_immigrate. - -Here is a patch to allow moving shared pages, completely. This makes -memcg simpler and fix current broken code. - -Changelog: - - fixed CONFFIG_SWAP... -Changelog: - - fixed comment around find_get_page() - - changed CONFIG_SWAP handling - - updated patch description - -Suggested-by: Hugh Dickins <hughd-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org> -Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org> ---- - Documentation/cgroups/memory.txt | 9 ++++----- - include/linux/swap.h | 9 --------- - mm/memcontrol.c | 22 ++++++++++++++-------- - mm/swapfile.c | 31 ------------------------------- - 4 files changed, 18 insertions(+), 53 deletions(-) - -diff --git a/Documentation/cgroups/memory.txt b/Documentation/cgroups/memory.txt -index 4c95c00..84d4f00 100644 ---- a/Documentation/cgroups/memory.txt -+++ b/Documentation/cgroups/memory.txt -@@ -185,12 +185,14 @@ behind this approach is that a cgroup that aggressively uses a shared - page will eventually get charged for it (once it is uncharged from - the cgroup that brought it in -- this will happen on memory pressure). - -+But see section 8.2: when moving a task to another cgroup, its pages may -+be recharged to the new cgroup, if move_charge_at_immigrate has been chosen. -+ - Exception: If CONFIG_CGROUP_CGROUP_MEM_RES_CTLR_SWAP is not used. - When you do swapoff and make swapped-out pages of shmem(tmpfs) to - be backed into memory in force, charges for pages are accounted against the - caller of swapoff rather than the users of shmem. - -- - 2.4 Swap Extension (CONFIG_CGROUP_MEM_RES_CTLR_SWAP) - - Swap Extension allows you to record charge for swap. A swapped-in page is -@@ -623,8 +625,7 @@ memory cgroup. - bit | what type of charges would be moved ? - -----+------------------------------------------------------------------------ - 0 | A charge of an anonymous page(or swap of it) used by the target task. -- | Those pages and swaps must be used only by the target task. You must -- | enable Swap Extension(see 2.4) to enable move of swap charges. -+ | You must enable Swap Extension(see 2.4) to enable move of swap charges. - -----+------------------------------------------------------------------------ - 1 | A charge of file pages(normal file, tmpfs file(e.g. ipc shared memory) - | and swaps of tmpfs file) mmapped by the target task. Unlike the case of -@@ -637,8 +638,6 @@ memory cgroup. - - 8.3 TODO - --- Implement madvise(2) to let users decide the vma to be moved or not to be -- moved. - - All of moving charge operations are done under cgroup_mutex. It's not good - behavior to hold the mutex too long, so we may need some trick. - -diff --git a/include/linux/swap.h b/include/linux/swap.h -index 6e66c03..70d2c74 100644 ---- a/include/linux/swap.h -+++ b/include/linux/swap.h -@@ -387,7 +387,6 @@ static inline void deactivate_swap_token(struct mm_struct *mm, bool swap_token) - #ifdef CONFIG_CGROUP_MEM_RES_CTLR - extern void - mem_cgroup_uncharge_swapcache(struct page *page, swp_entry_t ent, bool swapout); --extern int mem_cgroup_count_swap_user(swp_entry_t ent, struct page **pagep); - #else - static inline void - mem_cgroup_uncharge_swapcache(struct page *page, swp_entry_t ent, bool swapout) -@@ -532,14 +531,6 @@ mem_cgroup_uncharge_swapcache(struct page *page, swp_entry_t ent) - { - } - --#ifdef CONFIG_CGROUP_MEM_RES_CTLR --static inline int --mem_cgroup_count_swap_user(swp_entry_t ent, struct page **pagep) --{ -- return 0; --} --#endif -- - #endif /* CONFIG_SWAP */ - #endif /* __KERNEL__*/ - #endif /* _LINUX_SWAP_H */ -diff --git a/mm/memcontrol.c b/mm/memcontrol.c -index b2ee6df..962b97a 100644 ---- a/mm/memcontrol.c -+++ b/mm/memcontrol.c -@@ -5147,7 +5147,7 @@ static struct page *mc_handle_present_pte(struct vm_area_struct *vma, - return NULL; - if (PageAnon(page)) { - /* we don't move shared anon */ -- if (!move_anon() || page_mapcount(page) > 2) -+ if (!move_anon()) - return NULL; - } else if (!move_file()) - /* we ignore mapcount for file pages */ -@@ -5158,26 +5158,32 @@ static struct page *mc_handle_present_pte(struct vm_area_struct *vma, - return page; - } - -+#ifdef CONFIG_SWAP - static struct page *mc_handle_swap_pte(struct vm_area_struct *vma, - unsigned long addr, pte_t ptent, swp_entry_t *entry) - { -- int usage_count; - struct page *page = NULL; - swp_entry_t ent = pte_to_swp_entry(ptent); - - if (!move_anon() || non_swap_entry(ent)) - return NULL; -- usage_count = mem_cgroup_count_swap_user(ent, &page); -- if (usage_count > 1) { /* we don't move shared anon */ -- if (page) -- put_page(page); -- return NULL; -- } -+ /* -+ * Because lookup_swap_cache() updates some statistics counter, -+ * we call find_get_page() with swapper_space directly. -+ */ -+ page = find_get_page(&swapper_space, ent.val); - if (do_swap_account) - entry->val = ent.val; - - return page; - } -+#else -+static struct page *mc_handle_swap_pte(struct vm_area_struct *vma, -+ unsigned long addr, pte_t ptent, swp_entry_t *entry) -+{ -+ return NULL; -+} -+#endif - - static struct page *mc_handle_file_pte(struct vm_area_struct *vma, - unsigned long addr, pte_t ptent, swp_entry_t *entry) -diff --git a/mm/swapfile.c b/mm/swapfile.c -index dae42f3..fedeb6b 100644 ---- a/mm/swapfile.c -+++ b/mm/swapfile.c -@@ -717,37 +717,6 @@ int free_swap_and_cache(swp_entry_t entry) - return p != NULL; - } - --#ifdef CONFIG_CGROUP_MEM_RES_CTLR --/** -- * mem_cgroup_count_swap_user - count the user of a swap entry -- * @ent: the swap entry to be checked -- * @pagep: the pointer for the swap cache page of the entry to be stored -- * -- * Returns the number of the user of the swap entry. The number is valid only -- * for swaps of anonymous pages. -- * If the entry is found on swap cache, the page is stored to pagep with -- * refcount of it being incremented. -- */ --int mem_cgroup_count_swap_user(swp_entry_t ent, struct page **pagep) --{ -- struct page *page; -- struct swap_info_struct *p; -- int count = 0; -- -- page = find_get_page(&swapper_space, ent.val); -- if (page) -- count += page_mapcount(page); -- p = swap_info_get(ent); -- if (p) { -- count += swap_count(p->swap_map[swp_offset(ent)]); -- spin_unlock(&swap_lock); -- } -- -- *pagep = page; -- return count; --} --#endif -- - #ifdef CONFIG_HIBERNATION - /* - * Find the swap type that corresponds to given device (if any). --- -1.7.4.1 diff --git a/a/content_digest b/N1/content_digest index 4f1676e..582a1de 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -4,19 +4,18 @@ "ref\020120322173000.f078a43f.akpm@linux-foundation.org\0" "ref\04F6BC94C.80301@jp.fujitsu.com\0" "ref\020120323085301.GA1739@cmpxchg.org\0" - "ref\020120323085301.GA1739-druUgvl0LCNAfugRpC6u6w@public.gmane.org\0" - "From\0KAMEZAWA Hiroyuki <kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>\0" + "From\0KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>\0" "Subject\0Re: [PATCH] memcg: change behavior of moving charges at task move\0" "Date\0Fri, 23 Mar 2012 18:00:34 +0900\0" - "To\0Johannes Weiner <hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>\0" - "Cc\0Andrew Morton <akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>" - linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org <linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org> - Linux Kernel <linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org> - cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org <cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org> - Hugh Dickins <hughd-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org> - n-horiguchi-PaJj6Psr51x8UrSeD/g0lQ@public.gmane.org <n-horiguchi-PaJj6Psr51x8UrSeD/g0lQ@public.gmane.org> - Michal Hocko <mhocko-AlSwsSmVLrQ@public.gmane.org> - " Glauber Costa <glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>\0" + "To\0Johannes Weiner <hannes@cmpxchg.org>\0" + "Cc\0Andrew Morton <akpm@linux-foundation.org>" + linux-mm@kvack.org <linux-mm@kvack.org> + Linux Kernel <linux-kernel@vger.kernel.org> + cgroups@vger.kernel.org <cgroups@vger.kernel.org> + Hugh Dickins <hughd@google.com> + n-horiguchi@ah.jp.nec.com <n-horiguchi@ah.jp.nec.com> + Michal Hocko <mhocko@suse.cz> + " Glauber Costa <glommer@parallels.com>\0" "\00:1\0" "b\0" "(2012/03/23 17:53), Johannes Weiner wrote:\n" @@ -48,226 +47,6 @@ "Thank you for your good eyes.. I feel I can't trust my eyes ;(\n" "\n" "\n" - "==\n" - "From d7ed385bad22d352bb28aeb9380591b72ec5bec5 Mon Sep 17 00:00:00 2001\n" - "From: KAMEZAWA Hiroyuki <kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>\n" - "Date: Wed, 21 Mar 2012 19:03:40 +0900\n" - "Subject: [PATCH] memcg: fix/change behavior of shared anon at moving task.\n" - "\n" - "This patch changes memcg's behavior at task_move().\n" - "\n" - "At task_move(), the kernel scans a task's page table and move\n" - "the changes for mapped pages from source cgroup to target cgroup.\n" - "There has been a bug at handling shared anonymous pages for a long time.\n" - "\n" - "Before patch:\n" - " - The spec says 'shared anonymous pages are not moved.'\n" - " - The implementation was 'shared anonymoys pages may be moved'.\n" - " If page_mapcount <=2, shared anonymous pages's charge were moved.\n" - "\n" - "After patch:\n" - " - The spec says 'all anonymous pages are moved'.\n" - " - The implementation is 'all anonymous pages are moved'.\n" - "\n" - "Considering usage of memcg, this will not affect user's experience.\n" - "'shared anonymous' pages only exists between a tree of processes\n" - "which don't do exec(). Moving one of process without exec() seems\n" - "not sane. For example, libcgroup will not be affected by this change.\n" - "(Anyway, no one noticed the implementation for a long time...)\n" - "\n" - "Below is a discussion log:\n" - "\n" - " - current spec/implementation are complex\n" - " - Now, shared file caches are moved\n" - " - It adds unclear check as page_mapcount(). To do correct check,\n" - " we should check swap users, etc.\n" - " - No one notice this implementation behavior. So, no one get benefit\n" - " from the design.\n" - " - In general, once task is moved to a cgroup for running, it will not\n" - " be moved....\n" - " - Finally, we have control knob as memory.move_charge_at_immigrate.\n" - "\n" - "Here is a patch to allow moving shared pages, completely. This makes\n" - "memcg simpler and fix current broken code.\n" - "\n" - "Changelog:\n" - " - fixed CONFFIG_SWAP...\n" - "Changelog:\n" - " - fixed comment around find_get_page()\n" - " - changed CONFIG_SWAP handling\n" - " - updated patch description\n" - "\n" - "Suggested-by: Hugh Dickins <hughd-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>\n" - "Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>\n" - "---\n" - " Documentation/cgroups/memory.txt | 9 ++++-----\n" - " include/linux/swap.h | 9 ---------\n" - " mm/memcontrol.c | 22 ++++++++++++++--------\n" - " mm/swapfile.c | 31 -------------------------------\n" - " 4 files changed, 18 insertions(+), 53 deletions(-)\n" - "\n" - "diff --git a/Documentation/cgroups/memory.txt b/Documentation/cgroups/memory.txt\n" - "index 4c95c00..84d4f00 100644\n" - "--- a/Documentation/cgroups/memory.txt\n" - "+++ b/Documentation/cgroups/memory.txt\n" - "@@ -185,12 +185,14 @@ behind this approach is that a cgroup that aggressively uses a shared\n" - " page will eventually get charged for it (once it is uncharged from\n" - " the cgroup that brought it in -- this will happen on memory pressure).\n" - " \n" - "+But see section 8.2: when moving a task to another cgroup, its pages may\n" - "+be recharged to the new cgroup, if move_charge_at_immigrate has been chosen.\n" - "+\n" - " Exception: If CONFIG_CGROUP_CGROUP_MEM_RES_CTLR_SWAP is not used.\n" - " When you do swapoff and make swapped-out pages of shmem(tmpfs) to\n" - " be backed into memory in force, charges for pages are accounted against the\n" - " caller of swapoff rather than the users of shmem.\n" - " \n" - "-\n" - " 2.4 Swap Extension (CONFIG_CGROUP_MEM_RES_CTLR_SWAP)\n" - " \n" - " Swap Extension allows you to record charge for swap. A swapped-in page is\n" - "@@ -623,8 +625,7 @@ memory cgroup.\n" - " bit | what type of charges would be moved ?\n" - " -----+------------------------------------------------------------------------\n" - " 0 | A charge of an anonymous page(or swap of it) used by the target task.\n" - "- | Those pages and swaps must be used only by the target task. You must\n" - "- | enable Swap Extension(see 2.4) to enable move of swap charges.\n" - "+ | You must enable Swap Extension(see 2.4) to enable move of swap charges.\n" - " -----+------------------------------------------------------------------------\n" - " 1 | A charge of file pages(normal file, tmpfs file(e.g. ipc shared memory)\n" - " | and swaps of tmpfs file) mmapped by the target task. Unlike the case of\n" - "@@ -637,8 +638,6 @@ memory cgroup.\n" - " \n" - " 8.3 TODO\n" - " \n" - "-- Implement madvise(2) to let users decide the vma to be moved or not to be\n" - "- moved.\n" - " - All of moving charge operations are done under cgroup_mutex. It's not good\n" - " behavior to hold the mutex too long, so we may need some trick.\n" - " \n" - "diff --git a/include/linux/swap.h b/include/linux/swap.h\n" - "index 6e66c03..70d2c74 100644\n" - "--- a/include/linux/swap.h\n" - "+++ b/include/linux/swap.h\n" - "@@ -387,7 +387,6 @@ static inline void deactivate_swap_token(struct mm_struct *mm, bool swap_token)\n" - " #ifdef CONFIG_CGROUP_MEM_RES_CTLR\n" - " extern void\n" - " mem_cgroup_uncharge_swapcache(struct page *page, swp_entry_t ent, bool swapout);\n" - "-extern int mem_cgroup_count_swap_user(swp_entry_t ent, struct page **pagep);\n" - " #else\n" - " static inline void\n" - " mem_cgroup_uncharge_swapcache(struct page *page, swp_entry_t ent, bool swapout)\n" - "@@ -532,14 +531,6 @@ mem_cgroup_uncharge_swapcache(struct page *page, swp_entry_t ent)\n" - " {\n" - " }\n" - " \n" - "-#ifdef CONFIG_CGROUP_MEM_RES_CTLR\n" - "-static inline int\n" - "-mem_cgroup_count_swap_user(swp_entry_t ent, struct page **pagep)\n" - "-{\n" - "-\treturn 0;\n" - "-}\n" - "-#endif\n" - "-\n" - " #endif /* CONFIG_SWAP */\n" - " #endif /* __KERNEL__*/\n" - " #endif /* _LINUX_SWAP_H */\n" - "diff --git a/mm/memcontrol.c b/mm/memcontrol.c\n" - "index b2ee6df..962b97a 100644\n" - "--- a/mm/memcontrol.c\n" - "+++ b/mm/memcontrol.c\n" - "@@ -5147,7 +5147,7 @@ static struct page *mc_handle_present_pte(struct vm_area_struct *vma,\n" - " \t\treturn NULL;\n" - " \tif (PageAnon(page)) {\n" - " \t\t/* we don't move shared anon */\n" - "-\t\tif (!move_anon() || page_mapcount(page) > 2)\n" - "+\t\tif (!move_anon())\n" - " \t\t\treturn NULL;\n" - " \t} else if (!move_file())\n" - " \t\t/* we ignore mapcount for file pages */\n" - "@@ -5158,26 +5158,32 @@ static struct page *mc_handle_present_pte(struct vm_area_struct *vma,\n" - " \treturn page;\n" - " }\n" - " \n" - "+#ifdef CONFIG_SWAP\n" - " static struct page *mc_handle_swap_pte(struct vm_area_struct *vma,\n" - " \t\t\tunsigned long addr, pte_t ptent, swp_entry_t *entry)\n" - " {\n" - "-\tint usage_count;\n" - " \tstruct page *page = NULL;\n" - " \tswp_entry_t ent = pte_to_swp_entry(ptent);\n" - " \n" - " \tif (!move_anon() || non_swap_entry(ent))\n" - " \t\treturn NULL;\n" - "-\tusage_count = mem_cgroup_count_swap_user(ent, &page);\n" - "-\tif (usage_count > 1) { /* we don't move shared anon */\n" - "-\t\tif (page)\n" - "-\t\t\tput_page(page);\n" - "-\t\treturn NULL;\n" - "-\t}\n" - "+\t/*\n" - "+\t * Because lookup_swap_cache() updates some statistics counter,\n" - "+\t * we call find_get_page() with swapper_space directly.\n" - "+\t */\n" - "+\tpage = find_get_page(&swapper_space, ent.val);\n" - " \tif (do_swap_account)\n" - " \t\tentry->val = ent.val;\n" - " \n" - " \treturn page;\n" - " }\n" - "+#else\n" - "+static struct page *mc_handle_swap_pte(struct vm_area_struct *vma,\n" - "+\t\t\tunsigned long addr, pte_t ptent, swp_entry_t *entry)\n" - "+{\n" - "+\treturn NULL;\n" - "+}\n" - "+#endif\n" - " \n" - " static struct page *mc_handle_file_pte(struct vm_area_struct *vma,\n" - " \t\t\tunsigned long addr, pte_t ptent, swp_entry_t *entry)\n" - "diff --git a/mm/swapfile.c b/mm/swapfile.c\n" - "index dae42f3..fedeb6b 100644\n" - "--- a/mm/swapfile.c\n" - "+++ b/mm/swapfile.c\n" - "@@ -717,37 +717,6 @@ int free_swap_and_cache(swp_entry_t entry)\n" - " \treturn p != NULL;\n" - " }\n" - " \n" - "-#ifdef CONFIG_CGROUP_MEM_RES_CTLR\n" - "-/**\n" - "- * mem_cgroup_count_swap_user - count the user of a swap entry\n" - "- * @ent: the swap entry to be checked\n" - "- * @pagep: the pointer for the swap cache page of the entry to be stored\n" - "- *\n" - "- * Returns the number of the user of the swap entry. The number is valid only\n" - "- * for swaps of anonymous pages.\n" - "- * If the entry is found on swap cache, the page is stored to pagep with\n" - "- * refcount of it being incremented.\n" - "- */\n" - "-int mem_cgroup_count_swap_user(swp_entry_t ent, struct page **pagep)\n" - "-{\n" - "-\tstruct page *page;\n" - "-\tstruct swap_info_struct *p;\n" - "-\tint count = 0;\n" - "-\n" - "-\tpage = find_get_page(&swapper_space, ent.val);\n" - "-\tif (page)\n" - "-\t\tcount += page_mapcount(page);\n" - "-\tp = swap_info_get(ent);\n" - "-\tif (p) {\n" - "-\t\tcount += swap_count(p->swap_map[swp_offset(ent)]);\n" - "-\t\tspin_unlock(&swap_lock);\n" - "-\t}\n" - "-\n" - "-\t*pagep = page;\n" - "-\treturn count;\n" - "-}\n" - "-#endif\n" - "-\n" - " #ifdef CONFIG_HIBERNATION\n" - " /*\n" - " * Find the swap type that corresponds to given device (if any).\n" - "-- \n" - 1.7.4.1 + == -64f2ec14ad2e1d296de14a2ff94e39d40a6e5b3968f41944f26b7fb5d8812f28 +7d76cc8fc2cd55f2e1ced24d14ae705ac2b31a8f4d64d0ef27be32f62e90473c
diff --git a/a/1.txt b/N2/1.txt index 6303260..4c28470 100644 --- a/a/1.txt +++ b/N2/1.txt @@ -28,8 +28,8 @@ Thank you for your good eyes.. I feel I can't trust my eyes ;( == -From d7ed385bad22d352bb28aeb9380591b72ec5bec5 Mon Sep 17 00:00:00 2001 -From: KAMEZAWA Hiroyuki <kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org> +>From d7ed385bad22d352bb28aeb9380591b72ec5bec5 Mon Sep 17 00:00:00 2001 +From: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Date: Wed, 21 Mar 2012 19:03:40 +0900 Subject: [PATCH] memcg: fix/change behavior of shared anon at moving task. @@ -76,8 +76,8 @@ Changelog: - changed CONFIG_SWAP handling - updated patch description -Suggested-by: Hugh Dickins <hughd-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org> -Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org> +Suggested-by: Hugh Dickins <hughd@google.com> +Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> --- Documentation/cgroups/memory.txt | 9 ++++----- include/linux/swap.h | 9 --------- diff --git a/a/content_digest b/N2/content_digest index 4f1676e..5e9be8d 100644 --- a/a/content_digest +++ b/N2/content_digest @@ -4,19 +4,18 @@ "ref\020120322173000.f078a43f.akpm@linux-foundation.org\0" "ref\04F6BC94C.80301@jp.fujitsu.com\0" "ref\020120323085301.GA1739@cmpxchg.org\0" - "ref\020120323085301.GA1739-druUgvl0LCNAfugRpC6u6w@public.gmane.org\0" - "From\0KAMEZAWA Hiroyuki <kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>\0" + "From\0KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>\0" "Subject\0Re: [PATCH] memcg: change behavior of moving charges at task move\0" "Date\0Fri, 23 Mar 2012 18:00:34 +0900\0" - "To\0Johannes Weiner <hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>\0" - "Cc\0Andrew Morton <akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>" - linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org <linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org> - Linux Kernel <linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org> - cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org <cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org> - Hugh Dickins <hughd-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org> - n-horiguchi-PaJj6Psr51x8UrSeD/g0lQ@public.gmane.org <n-horiguchi-PaJj6Psr51x8UrSeD/g0lQ@public.gmane.org> - Michal Hocko <mhocko-AlSwsSmVLrQ@public.gmane.org> - " Glauber Costa <glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>\0" + "To\0Johannes Weiner <hannes@cmpxchg.org>\0" + "Cc\0Andrew Morton <akpm@linux-foundation.org>" + linux-mm@kvack.org <linux-mm@kvack.org> + Linux Kernel <linux-kernel@vger.kernel.org> + cgroups@vger.kernel.org <cgroups@vger.kernel.org> + Hugh Dickins <hughd@google.com> + n-horiguchi@ah.jp.nec.com <n-horiguchi@ah.jp.nec.com> + Michal Hocko <mhocko@suse.cz> + " Glauber Costa <glommer@parallels.com>\0" "\00:1\0" "b\0" "(2012/03/23 17:53), Johannes Weiner wrote:\n" @@ -49,8 +48,8 @@ "\n" "\n" "==\n" - "From d7ed385bad22d352bb28aeb9380591b72ec5bec5 Mon Sep 17 00:00:00 2001\n" - "From: KAMEZAWA Hiroyuki <kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>\n" + ">From d7ed385bad22d352bb28aeb9380591b72ec5bec5 Mon Sep 17 00:00:00 2001\n" + "From: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>\n" "Date: Wed, 21 Mar 2012 19:03:40 +0900\n" "Subject: [PATCH] memcg: fix/change behavior of shared anon at moving task.\n" "\n" @@ -97,8 +96,8 @@ " - changed CONFIG_SWAP handling\n" " - updated patch description\n" "\n" - "Suggested-by: Hugh Dickins <hughd-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>\n" - "Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>\n" + "Suggested-by: Hugh Dickins <hughd@google.com>\n" + "Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>\n" "---\n" " Documentation/cgroups/memory.txt | 9 ++++-----\n" " include/linux/swap.h | 9 ---------\n" @@ -270,4 +269,4 @@ "-- \n" 1.7.4.1 -64f2ec14ad2e1d296de14a2ff94e39d40a6e5b3968f41944f26b7fb5d8812f28 +43536566c82ab7a817f6f9a284a1e60296411f0869024ef6eb7d1cb75fc87bc8
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.