diff for duplicates of <20091008162643.23192.65918.sendpatchset@localhost.localdomain> diff --git a/a/1.txt b/N1/1.txt index 6485f75..8b13789 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -1,120 +1 @@ -From rientjes@google.com Wed Oct 7 02:25:10 2009 -[PATCH 10/12] mm: clear node in N_HIGH_MEMORY and stop kswapd when all memory is offlined - -mm: clear node in N_HIGH_MEMORY and stop kswapd when all memory is offlined - -When memory is hot-removed, its node must be cleared in N_HIGH_MEMORY if -there are no present pages left. - -In such a situation, kswapd must also be stopped since it has nothing -left to do. - -Cc: Christoph Lameter <cl@linux-foundation.org> -Cc: Yasunori Goto <y-goto@jp.fujitsu.com> -Cc: Mel Gorman <mel@csn.ul.ie> -Cc: Rafael J. Wysocki <rjw@sisk.pl> -Cc: Rik van Riel <riel@redhat.com> -Signed-off-by: David Rientjes <rientjes@google.com> -Signed-off-by: Lee Schermerhorn <lee.schermerhorn@hp.com> - ---- - - include/linux/swap.h | 1 + - mm/memory_hotplug.c | 4 ++++ - mm/vmscan.c | 28 ++++++++++++++++++++++------ - 3 files changed, 27 insertions(+), 6 deletions(-) - -Index: linux-2.6.31-mmotm-090925-1435/include/linux/swap.h -=================================================================== ---- linux-2.6.31-mmotm-090925-1435.orig/include/linux/swap.h 2009-09-28 10:10:39.000000000 -0400 -+++ linux-2.6.31-mmotm-090925-1435/include/linux/swap.h 2009-10-07 16:24:43.000000000 -0400 -@@ -273,6 +273,7 @@ extern int scan_unevictable_register_nod - extern void scan_unevictable_unregister_node(struct node *node); - - extern int kswapd_run(int nid); -+extern void kswapd_stop(int nid); - - #ifdef CONFIG_MMU - /* linux/mm/shmem.c */ -Index: linux-2.6.31-mmotm-090925-1435/mm/memory_hotplug.c -=================================================================== ---- linux-2.6.31-mmotm-090925-1435.orig/mm/memory_hotplug.c 2009-09-28 10:10:39.000000000 -0400 -+++ linux-2.6.31-mmotm-090925-1435/mm/memory_hotplug.c 2009-10-07 16:24:43.000000000 -0400 -@@ -838,6 +838,10 @@ repeat: - - setup_per_zone_wmarks(); - calculate_zone_inactive_ratio(zone); -+ if (!node_present_pages(node)) { -+ node_clear_state(node, N_HIGH_MEMORY); -+ kswapd_stop(node); -+ } - - vm_total_pages = nr_free_pagecache_pages(); - writeback_set_ratelimit(); -Index: linux-2.6.31-mmotm-090925-1435/mm/vmscan.c -=================================================================== ---- linux-2.6.31-mmotm-090925-1435.orig/mm/vmscan.c 2009-09-28 10:10:43.000000000 -0400 -+++ linux-2.6.31-mmotm-090925-1435/mm/vmscan.c 2009-10-07 16:24:43.000000000 -0400 -@@ -2167,6 +2167,7 @@ static int kswapd(void *p) - order = 0; - for ( ; ; ) { - unsigned long new_order; -+ int ret; - - prepare_to_wait(&pgdat->kswapd_wait, &wait, TASK_INTERRUPTIBLE); - new_order = pgdat->kswapd_max_order; -@@ -2178,19 +2179,23 @@ static int kswapd(void *p) - */ - order = new_order; - } else { -- if (!freezing(current)) -+ if (!freezing(current) && !kthread_should_stop()) - schedule(); - - order = pgdat->kswapd_max_order; - } - finish_wait(&pgdat->kswapd_wait, &wait); - -- if (!try_to_freeze()) { -- /* We can speed up thawing tasks if we don't call -- * balance_pgdat after returning from the refrigerator -- */ -+ ret = try_to_freeze(); -+ if (kthread_should_stop()) -+ break; -+ -+ /* -+ * We can speed up thawing tasks if we don't call balance_pgdat -+ * after returning from the refrigerator -+ */ -+ if (!ret) - balance_pgdat(pgdat, order); -- } - } - return 0; - } -@@ -2445,6 +2450,17 @@ int kswapd_run(int nid) - return ret; - } - -+/* -+ * Called by memory hotplug when all memory in a node is offlined. -+ */ -+void kswapd_stop(int nid) -+{ -+ struct task_struct *kswapd = NODE_DATA(nid)->kswapd; -+ -+ if (kswapd) -+ kthread_stop(kswapd); -+} -+ - static int __init kswapd_init(void) - { - int nid; - --- -To unsubscribe, send a message with 'unsubscribe linux-mm' in -the body to majordomo@kvack.org. For more info on Linux MM, -see: http://www.linux-mm.org/ . -Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> diff --git a/a/content_digest b/N1/content_digest index a1641f3..2243b91 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -15,125 +15,5 @@ " eric.whitney@hp.com\0" "\00:1\0" "b\0" - "From rientjes@google.com Wed Oct 7 02:25:10 2009\n" - "\n" - "[PATCH 10/12] mm: clear node in N_HIGH_MEMORY and stop kswapd when all memory is offlined\n" - "\n" - "mm: clear node in N_HIGH_MEMORY and stop kswapd when all memory is offlined\n" - "\n" - "When memory is hot-removed, its node must be cleared in N_HIGH_MEMORY if\n" - "there are no present pages left.\n" - "\n" - "In such a situation, kswapd must also be stopped since it has nothing\n" - "left to do.\n" - "\n" - "Cc: Christoph Lameter <cl@linux-foundation.org>\n" - "Cc: Yasunori Goto <y-goto@jp.fujitsu.com>\n" - "Cc: Mel Gorman <mel@csn.ul.ie>\n" - "Cc: Rafael J. Wysocki <rjw@sisk.pl>\n" - "Cc: Rik van Riel <riel@redhat.com>\n" - "Signed-off-by: David Rientjes <rientjes@google.com>\n" - "Signed-off-by: Lee Schermerhorn <lee.schermerhorn@hp.com>\n" - "\n" - "---\n" - "\n" - " include/linux/swap.h | 1 +\n" - " mm/memory_hotplug.c | 4 ++++\n" - " mm/vmscan.c | 28 ++++++++++++++++++++++------\n" - " 3 files changed, 27 insertions(+), 6 deletions(-)\n" - "\n" - "Index: linux-2.6.31-mmotm-090925-1435/include/linux/swap.h\n" - "===================================================================\n" - "--- linux-2.6.31-mmotm-090925-1435.orig/include/linux/swap.h\t2009-09-28 10:10:39.000000000 -0400\n" - "+++ linux-2.6.31-mmotm-090925-1435/include/linux/swap.h\t2009-10-07 16:24:43.000000000 -0400\n" - "@@ -273,6 +273,7 @@ extern int scan_unevictable_register_nod\n" - " extern void scan_unevictable_unregister_node(struct node *node);\n" - " \n" - " extern int kswapd_run(int nid);\n" - "+extern void kswapd_stop(int nid);\n" - " \n" - " #ifdef CONFIG_MMU\n" - " /* linux/mm/shmem.c */\n" - "Index: linux-2.6.31-mmotm-090925-1435/mm/memory_hotplug.c\n" - "===================================================================\n" - "--- linux-2.6.31-mmotm-090925-1435.orig/mm/memory_hotplug.c\t2009-09-28 10:10:39.000000000 -0400\n" - "+++ linux-2.6.31-mmotm-090925-1435/mm/memory_hotplug.c\t2009-10-07 16:24:43.000000000 -0400\n" - "@@ -838,6 +838,10 @@ repeat:\n" - " \n" - " \tsetup_per_zone_wmarks();\n" - " \tcalculate_zone_inactive_ratio(zone);\n" - "+\tif (!node_present_pages(node)) {\n" - "+\t\tnode_clear_state(node, N_HIGH_MEMORY);\n" - "+\t\tkswapd_stop(node);\n" - "+\t}\n" - " \n" - " \tvm_total_pages = nr_free_pagecache_pages();\n" - " \twriteback_set_ratelimit();\n" - "Index: linux-2.6.31-mmotm-090925-1435/mm/vmscan.c\n" - "===================================================================\n" - "--- linux-2.6.31-mmotm-090925-1435.orig/mm/vmscan.c\t2009-09-28 10:10:43.000000000 -0400\n" - "+++ linux-2.6.31-mmotm-090925-1435/mm/vmscan.c\t2009-10-07 16:24:43.000000000 -0400\n" - "@@ -2167,6 +2167,7 @@ static int kswapd(void *p)\n" - " \torder = 0;\n" - " \tfor ( ; ; ) {\n" - " \t\tunsigned long new_order;\n" - "+\t\tint ret;\n" - " \n" - " \t\tprepare_to_wait(&pgdat->kswapd_wait, &wait, TASK_INTERRUPTIBLE);\n" - " \t\tnew_order = pgdat->kswapd_max_order;\n" - "@@ -2178,19 +2179,23 @@ static int kswapd(void *p)\n" - " \t\t\t */\n" - " \t\t\torder = new_order;\n" - " \t\t} else {\n" - "-\t\t\tif (!freezing(current))\n" - "+\t\t\tif (!freezing(current) && !kthread_should_stop())\n" - " \t\t\t\tschedule();\n" - " \n" - " \t\t\torder = pgdat->kswapd_max_order;\n" - " \t\t}\n" - " \t\tfinish_wait(&pgdat->kswapd_wait, &wait);\n" - " \n" - "-\t\tif (!try_to_freeze()) {\n" - "-\t\t\t/* We can speed up thawing tasks if we don't call\n" - "-\t\t\t * balance_pgdat after returning from the refrigerator\n" - "-\t\t\t */\n" - "+\t\tret = try_to_freeze();\n" - "+\t\tif (kthread_should_stop())\n" - "+\t\t\tbreak;\n" - "+\n" - "+\t\t/*\n" - "+\t\t * We can speed up thawing tasks if we don't call balance_pgdat\n" - "+\t\t * after returning from the refrigerator\n" - "+\t\t */\n" - "+\t\tif (!ret)\n" - " \t\t\tbalance_pgdat(pgdat, order);\n" - "-\t\t}\n" - " \t}\n" - " \treturn 0;\n" - " }\n" - "@@ -2445,6 +2450,17 @@ int kswapd_run(int nid)\n" - " \treturn ret;\n" - " }\n" - " \n" - "+/*\n" - "+ * Called by memory hotplug when all memory in a node is offlined.\n" - "+ */\n" - "+void kswapd_stop(int nid)\n" - "+{\n" - "+\tstruct task_struct *kswapd = NODE_DATA(nid)->kswapd;\n" - "+\n" - "+\tif (kswapd)\n" - "+\t\tkthread_stop(kswapd);\n" - "+}\n" - "+\n" - " static int __init kswapd_init(void)\n" - " {\n" - " \tint nid;\n" - "\n" - "--\n" - "To unsubscribe, send a message with 'unsubscribe linux-mm' in\n" - "the body to majordomo@kvack.org. For more info on Linux MM,\n" - "see: http://www.linux-mm.org/ .\n" - "Don't email: <a href=mailto:\"dont@kvack.org\"> email@kvack.org </a>" -b5af038df593f122d242652889d481e4fa1c5243fc1bc6d812cdcd87ebb687b8 +a00cf96809acf4d9eb4988ae5c93b3d5b2ef94d27fbabc0f85e117d0eb4ec510
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.