* [PART4 Patch v2 0/2] memory-hotplug: allow online/offline memory to result movable node @ 2012-11-16 11:58 Wen Congyang 2012-11-16 11:58 ` [PART4 Patch v2 1/2] numa: add CONFIG_MOVABLE_NODE for movable-dedicated node Wen Congyang 2012-11-16 11:58 ` [PART4 Patch v2 2/2] memory_hotplug: allow online/offline memory to result movable node Wen Congyang 0 siblings, 2 replies; 7+ messages in thread From: Wen Congyang @ 2012-11-16 11:58 UTC (permalink / raw) To: linux-kernel, linux-mm Cc: Rob Landley, Andrew Morton, Yasuaki Ishimatsu, Lai Jiangshan, Jiang Liu, KOSAKI Motohiro, Minchan Kim, Mel Gorman, David Rientjes, Yinghai Lu, Rusty Russell, Wen Congyang This patch is part4 of the following patchset: https://lkml.org/lkml/2012/10/29/319 Part1 is here: https://lkml.org/lkml/2012/10/31/30 Part2 is here: https://lkml.org/lkml/2012/10/31/73 Part3 is here: https://lkml.org/lkml/2012/11/15/111 Part5 is here: https://lkml.org/lkml/2012/10/31/145 Part6 is here: https://lkml.org/lkml/2012/10/31/248 You must apply part1-3 before applying this patchset. Note: part1-3 are in mm tree now. part5 are being reimplemented(We will post it some days later). part6 is still in discussion. we need a node which only contains movable memory. This feature is very important for node hotplug. If a node has normal/highmem, the memory may be used by the kernel and can't be offlined. If the node only contains movable memory, we can offline the memory and the node. Changes from v1 to v2: 1. Add Tested-by: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com> 2. Add my Signed-off-by, because I am on the the patch delivery path. Lai Jiangshan (2): numa: add CONFIG_MOVABLE_NODE for movable-dedicated node memory_hotplug: allow online/offline memory to result movable node drivers/base/node.c | 6 ++++++ include/linux/nodemask.h | 4 ++++ mm/Kconfig | 8 ++++++++ mm/memory_hotplug.c | 16 ++++++++++++++++ mm/page_alloc.c | 3 +++ 5 files changed, 37 insertions(+) -- 1.8.0 -- 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> ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PART4 Patch v2 1/2] numa: add CONFIG_MOVABLE_NODE for movable-dedicated node 2012-11-16 11:58 [PART4 Patch v2 0/2] memory-hotplug: allow online/offline memory to result movable node Wen Congyang @ 2012-11-16 11:58 ` Wen Congyang 2012-11-20 22:25 ` Andrew Morton 2012-11-16 11:58 ` [PART4 Patch v2 2/2] memory_hotplug: allow online/offline memory to result movable node Wen Congyang 1 sibling, 1 reply; 7+ messages in thread From: Wen Congyang @ 2012-11-16 11:58 UTC (permalink / raw) To: linux-kernel, linux-mm Cc: Rob Landley, Andrew Morton, Yasuaki Ishimatsu, Lai Jiangshan, Jiang Liu, KOSAKI Motohiro, Minchan Kim, Mel Gorman, David Rientjes, Yinghai Lu, Rusty Russell, Wen Congyang From: Lai Jiangshan <laijs@cn.fujitsu.com> All are prepared, we can actually introduce N_MEMORY. add CONFIG_MOVABLE_NODE make we can use it for movable-dedicated node Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com> Tested-by: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com> Signed-off-by: Wen Congyang <wency@cn.fujitsu.com> --- drivers/base/node.c | 6 ++++++ include/linux/nodemask.h | 4 ++++ mm/Kconfig | 8 ++++++++ mm/page_alloc.c | 3 +++ 4 files changed, 21 insertions(+) diff --git a/drivers/base/node.c b/drivers/base/node.c index 4c3aa7c..9cdd66f 100644 --- a/drivers/base/node.c +++ b/drivers/base/node.c @@ -620,6 +620,9 @@ static struct node_attr node_state_attr[] = { #ifdef CONFIG_HIGHMEM [N_HIGH_MEMORY] = _NODE_ATTR(has_high_memory, N_HIGH_MEMORY), #endif +#ifdef CONFIG_MOVABLE_NODE + [N_MEMORY] = _NODE_ATTR(has_memory, N_MEMORY), +#endif [N_CPU] = _NODE_ATTR(has_cpu, N_CPU), }; @@ -630,6 +633,9 @@ static struct attribute *node_state_attrs[] = { #ifdef CONFIG_HIGHMEM &node_state_attr[N_HIGH_MEMORY].attr.attr, #endif +#ifdef CONFIG_MOVABLE_NODE + &node_state_attr[N_MEMORY].attr.attr, +#endif &node_state_attr[N_CPU].attr.attr, NULL }; diff --git a/include/linux/nodemask.h b/include/linux/nodemask.h index c6ebdc9..4e2cbfa 100644 --- a/include/linux/nodemask.h +++ b/include/linux/nodemask.h @@ -380,7 +380,11 @@ enum node_states { #else N_HIGH_MEMORY = N_NORMAL_MEMORY, #endif +#ifdef CONFIG_MOVABLE_NODE + N_MEMORY, /* The node has memory(regular, high, movable) */ +#else N_MEMORY = N_HIGH_MEMORY, +#endif N_CPU, /* The node has one or more cpus */ NR_NODE_STATES }; diff --git a/mm/Kconfig b/mm/Kconfig index a3f8ddd..957ebd5 100644 --- a/mm/Kconfig +++ b/mm/Kconfig @@ -143,6 +143,14 @@ config NO_BOOTMEM config MEMORY_ISOLATION boolean +config MOVABLE_NODE + boolean "Enable to assign a node has only movable memory" + depends on HAVE_MEMBLOCK + depends on NO_BOOTMEM + depends on X86_64 + depends on NUMA + default y + # eventually, we can have this option just 'select SPARSEMEM' config MEMORY_HOTPLUG bool "Allow for memory hot-add" diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 4054aaf..1b6725a 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -90,6 +90,9 @@ nodemask_t node_states[NR_NODE_STATES] __read_mostly = { #ifdef CONFIG_HIGHMEM [N_HIGH_MEMORY] = { { [0] = 1UL } }, #endif +#ifdef CONFIG_MOVABLE_NODE + [N_MEMORY] = { { [0] = 1UL } }, +#endif [N_CPU] = { { [0] = 1UL } }, #endif /* NUMA */ }; -- 1.8.0 -- 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> ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PART4 Patch v2 1/2] numa: add CONFIG_MOVABLE_NODE for movable-dedicated node 2012-11-16 11:58 ` [PART4 Patch v2 1/2] numa: add CONFIG_MOVABLE_NODE for movable-dedicated node Wen Congyang @ 2012-11-20 22:25 ` Andrew Morton 2012-11-21 3:27 ` Wen Congyang 0 siblings, 1 reply; 7+ messages in thread From: Andrew Morton @ 2012-11-20 22:25 UTC (permalink / raw) To: Wen Congyang Cc: linux-kernel, linux-mm, Rob Landley, Yasuaki Ishimatsu, Lai Jiangshan, Jiang Liu, KOSAKI Motohiro, Minchan Kim, Mel Gorman, David Rientjes, Yinghai Lu, Rusty Russell On Fri, 16 Nov 2012 19:58:09 +0800 Wen Congyang <wency@cn.fujitsu.com> wrote: > From: Lai Jiangshan <laijs@cn.fujitsu.com> > > All are prepared, we can actually introduce N_MEMORY. > add CONFIG_MOVABLE_NODE make we can use it for movable-dedicated node This description is far too short on details. I grabbed this from the [0/n] email: : We need a node which only contains movable memory. This feature is very : important for node hotplug. If a node has normal/highmem, the memory may : be used by the kernel and can't be offlined. If the node only contains : movable memory, we can offline the memory and the node. which helps a bit, but it's still pretty thin. Why is this option made configurable? Why not enable it unconditionally? Please send a patch which adds the Kconfig help text for CONFIG_MOVABLE_NODE. Let's make that text nice and detailed. The name MOVABLE_NODE is not a good one. It means "a node which is movable", whereas the concept is actually "a node whcih contains only movable memory". I suppose we could change it to something like CONFIG_MOVABLE_MEMORY_ONLY_NODE or similar. But I suppose that CONFIG_MOVABLE_NODE is good enough, as long as it is well-described in associated comments or help text. This is not the case at present. > +#ifdef CONFIG_MOVABLE_NODE > + N_MEMORY, /* The node has memory(regular, high, movable) */ > +#else I think the comment should be "The node has only movable memory"? -- 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> ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PART4 Patch v2 1/2] numa: add CONFIG_MOVABLE_NODE for movable-dedicated node 2012-11-20 22:25 ` Andrew Morton @ 2012-11-21 3:27 ` Wen Congyang 0 siblings, 0 replies; 7+ messages in thread From: Wen Congyang @ 2012-11-21 3:27 UTC (permalink / raw) To: Andrew Morton Cc: linux-kernel, linux-mm, Rob Landley, Yasuaki Ishimatsu, Lai Jiangshan, Jiang Liu, KOSAKI Motohiro, Minchan Kim, Mel Gorman, David Rientjes, Yinghai Lu, Rusty Russell At 11/21/2012 06:25 AM, Andrew Morton Wrote: > On Fri, 16 Nov 2012 19:58:09 +0800 > Wen Congyang <wency@cn.fujitsu.com> wrote: > >> From: Lai Jiangshan <laijs@cn.fujitsu.com> >> >> All are prepared, we can actually introduce N_MEMORY. >> add CONFIG_MOVABLE_NODE make we can use it for movable-dedicated node > > This description is far too short on details. > > I grabbed this from the [0/n] email: > > : We need a node which only contains movable memory. This feature is very > : important for node hotplug. If a node has normal/highmem, the memory may > : be used by the kernel and can't be offlined. If the node only contains > : movable memory, we can offline the memory and the node. > > which helps a bit, but it's still pretty thin. > > Why is this option made configurable? Why not enable it unconditionally? > > Please send a patch which adds the Kconfig help text for > CONFIG_MOVABLE_NODE. Let's make that text nice and detailed. > > The name MOVABLE_NODE is not a good one. It means "a node which is > movable", whereas the concept is actually "a node whcih contains only > movable memory". I suppose we could change it to something like > CONFIG_MOVABLE_MEMORY_ONLY_NODE or similar. But I suppose that > CONFIG_MOVABLE_NODE is good enough, as long as it is well-described in > associated comments or help text. This is not the case at present. > >> +#ifdef CONFIG_MOVABLE_NODE >> + N_MEMORY, /* The node has memory(regular, high, movable) */ >> +#else > > I think the comment should be "The node has only movable memory"? No, the comment is right. In the kernel, we need the following two mask: 1. the node contains memory that the kernel can use(N_HIGH_MEMORY) 2. the node contains memory (N_MEMORY) There is no code need the mask: the node contains only movable memory now. Thanks Wen Congyang > > > -- 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> ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PART4 Patch v2 2/2] memory_hotplug: allow online/offline memory to result movable node 2012-11-16 11:58 [PART4 Patch v2 0/2] memory-hotplug: allow online/offline memory to result movable node Wen Congyang 2012-11-16 11:58 ` [PART4 Patch v2 1/2] numa: add CONFIG_MOVABLE_NODE for movable-dedicated node Wen Congyang @ 2012-11-16 11:58 ` Wen Congyang 2012-11-20 22:29 ` Andrew Morton 1 sibling, 1 reply; 7+ messages in thread From: Wen Congyang @ 2012-11-16 11:58 UTC (permalink / raw) To: linux-kernel, linux-mm Cc: Rob Landley, Andrew Morton, Yasuaki Ishimatsu, Lai Jiangshan, Jiang Liu, KOSAKI Motohiro, Minchan Kim, Mel Gorman, David Rientjes, Yinghai Lu, Rusty Russell, Wen Congyang From: Lai Jiangshan <laijs@cn.fujitsu.com> Now, memory management can handle movable node or nodes which don't have any normal memory, so we can dynamic configure and add movable node by: online a ZONE_MOVABLE memory from a previous offline node offline the last normal memory which result a non-normal-memory-node movable-node is very important for power-saving, hardware partitioning and high-available-system(hardware fault management). Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com> Tested-by: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com> Signed-off-by: Wen Congyang <wency@cn.fujitsu.com> --- mm/memory_hotplug.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index d07c66f..4aceb03 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c @@ -589,11 +589,19 @@ static int online_pages_range(unsigned long start_pfn, unsigned long nr_pages, return 0; } +#ifdef CONFIG_MOVABLE_NODE +/* when CONFIG_MOVABLE_NODE, we allow online node don't have normal memory */ +static bool can_online_high_movable(struct zone *zone) +{ + return true; +} +#else /* #ifdef CONFIG_MOVABLE_NODE */ /* ensure every online node has NORMAL memory */ static bool can_online_high_movable(struct zone *zone) { return node_state(zone_to_nid(zone), N_NORMAL_MEMORY); } +#endif /* #ifdef CONFIG_MOVABLE_NODE */ /* check which state of node_states will be changed when online memory */ static void node_states_check_changes_online(unsigned long nr_pages, @@ -1097,6 +1105,13 @@ check_pages_isolated(unsigned long start_pfn, unsigned long end_pfn) return offlined; } +#ifdef CONFIG_MOVABLE_NODE +/* when CONFIG_MOVABLE_NODE, we allow online node don't have normal memory */ +static bool can_offline_normal(struct zone *zone, unsigned long nr_pages) +{ + return true; +} +#else /* #ifdef CONFIG_MOVABLE_NODE */ /* ensure the node has NORMAL memory if it is still online */ static bool can_offline_normal(struct zone *zone, unsigned long nr_pages) { @@ -1120,6 +1135,7 @@ static bool can_offline_normal(struct zone *zone, unsigned long nr_pages) */ return present_pages == 0; } +#endif /* #ifdef CONFIG_MOVABLE_NODE */ /* check which state of node_states will be changed when offline memory */ static void node_states_check_changes_offline(unsigned long nr_pages, -- 1.8.0 -- 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> ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PART4 Patch v2 2/2] memory_hotplug: allow online/offline memory to result movable node 2012-11-16 11:58 ` [PART4 Patch v2 2/2] memory_hotplug: allow online/offline memory to result movable node Wen Congyang @ 2012-11-20 22:29 ` Andrew Morton 2012-12-17 2:23 ` Tang Chen 0 siblings, 1 reply; 7+ messages in thread From: Andrew Morton @ 2012-11-20 22:29 UTC (permalink / raw) To: Wen Congyang Cc: linux-kernel, linux-mm, Rob Landley, Yasuaki Ishimatsu, Lai Jiangshan, Jiang Liu, KOSAKI Motohiro, Minchan Kim, Mel Gorman, David Rientjes, Yinghai Lu, Rusty Russell On Fri, 16 Nov 2012 19:58:10 +0800 Wen Congyang <wency@cn.fujitsu.com> wrote: > From: Lai Jiangshan <laijs@cn.fujitsu.com> > > Now, memory management can handle movable node or nodes which don't have > any normal memory, so we can dynamic configure and add movable node by: > online a ZONE_MOVABLE memory from a previous offline node > offline the last normal memory which result a non-normal-memory-node > > movable-node is very important for power-saving, > hardware partitioning and high-available-system(hardware fault management). > > ... > > --- a/mm/memory_hotplug.c > +++ b/mm/memory_hotplug.c > @@ -589,11 +589,19 @@ static int online_pages_range(unsigned long start_pfn, unsigned long nr_pages, > return 0; > } > > +#ifdef CONFIG_MOVABLE_NODE > +/* when CONFIG_MOVABLE_NODE, we allow online node don't have normal memory */ The comment is hard to understand. Should it read "When CONFIG_MOVABLE_NODE, we permit onlining of a node which doesn't have normal memory"? > +static bool can_online_high_movable(struct zone *zone) > +{ > + return true; > +} > +#else /* #ifdef CONFIG_MOVABLE_NODE */ > /* ensure every online node has NORMAL memory */ > static bool can_online_high_movable(struct zone *zone) > { > return node_state(zone_to_nid(zone), N_NORMAL_MEMORY); > } > +#endif /* #ifdef CONFIG_MOVABLE_NODE */ > > /* check which state of node_states will be changed when online memory */ > static void node_states_check_changes_online(unsigned long nr_pages, > @@ -1097,6 +1105,13 @@ check_pages_isolated(unsigned long start_pfn, unsigned long end_pfn) > return offlined; > } > > +#ifdef CONFIG_MOVABLE_NODE > +/* when CONFIG_MOVABLE_NODE, we allow online node don't have normal memory */ Ditto, after replacing "online" with offlining". > +static bool can_offline_normal(struct zone *zone, unsigned long nr_pages) > +{ > + return true; > +} > +#else /* #ifdef CONFIG_MOVABLE_NODE */ > /* ensure the node has NORMAL memory if it is still online */ > static bool can_offline_normal(struct zone *zone, unsigned long nr_pages) > { > @@ -1120,6 +1135,7 @@ static bool can_offline_normal(struct zone *zone, unsigned long nr_pages) > */ > return present_pages == 0; > } > +#endif /* #ifdef CONFIG_MOVABLE_NODE */ Please, spend more time over the accuracy and completeness of the changelog and comments? That will result in better and more maintainable code. And it results in *much* more effective code reviewing. -- 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> ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PART4 Patch v2 2/2] memory_hotplug: allow online/offline memory to result movable node 2012-11-20 22:29 ` Andrew Morton @ 2012-12-17 2:23 ` Tang Chen 0 siblings, 0 replies; 7+ messages in thread From: Tang Chen @ 2012-12-17 2:23 UTC (permalink / raw) To: Andrew Morton Cc: Wen Congyang, linux-kernel, linux-mm, Rob Landley, Yasuaki Ishimatsu, Lai Jiangshan, Jiang Liu, KOSAKI Motohiro, Minchan Kim, Mel Gorman, David Rientjes, Yinghai Lu, Rusty Russell [-- Attachment #1: Type: text/plain, Size: 3009 bytes --] Hi Andrew, So sorry for such a long delay. I missed this one. Please check the attached patch if you still need it. All comments are followed. Thanks. :) On 11/21/2012 06:29 AM, Andrew Morton wrote: > On Fri, 16 Nov 2012 19:58:10 +0800 > Wen Congyang<wency@cn.fujitsu.com> wrote: > >> From: Lai Jiangshan<laijs@cn.fujitsu.com> >> >> Now, memory management can handle movable node or nodes which don't have >> any normal memory, so we can dynamic configure and add movable node by: >> online a ZONE_MOVABLE memory from a previous offline node >> offline the last normal memory which result a non-normal-memory-node >> >> movable-node is very important for power-saving, >> hardware partitioning and high-available-system(hardware fault management). >> >> ... >> >> --- a/mm/memory_hotplug.c >> +++ b/mm/memory_hotplug.c >> @@ -589,11 +589,19 @@ static int online_pages_range(unsigned long start_pfn, unsigned long nr_pages, >> return 0; >> } >> >> +#ifdef CONFIG_MOVABLE_NODE >> +/* when CONFIG_MOVABLE_NODE, we allow online node don't have normal memory */ > > The comment is hard to understand. Should it read "When > CONFIG_MOVABLE_NODE, we permit onlining of a node which doesn't have > normal memory"? > >> +static bool can_online_high_movable(struct zone *zone) >> +{ >> + return true; >> +} >> +#else /* #ifdef CONFIG_MOVABLE_NODE */ >> /* ensure every online node has NORMAL memory */ >> static bool can_online_high_movable(struct zone *zone) >> { >> return node_state(zone_to_nid(zone), N_NORMAL_MEMORY); >> } >> +#endif /* #ifdef CONFIG_MOVABLE_NODE */ >> >> /* check which state of node_states will be changed when online memory */ >> static void node_states_check_changes_online(unsigned long nr_pages, >> @@ -1097,6 +1105,13 @@ check_pages_isolated(unsigned long start_pfn, unsigned long end_pfn) >> return offlined; >> } >> >> +#ifdef CONFIG_MOVABLE_NODE >> +/* when CONFIG_MOVABLE_NODE, we allow online node don't have normal memory */ > > Ditto, after replacing "online" with offlining". > >> +static bool can_offline_normal(struct zone *zone, unsigned long nr_pages) >> +{ >> + return true; >> +} >> +#else /* #ifdef CONFIG_MOVABLE_NODE */ >> /* ensure the node has NORMAL memory if it is still online */ >> static bool can_offline_normal(struct zone *zone, unsigned long nr_pages) >> { >> @@ -1120,6 +1135,7 @@ static bool can_offline_normal(struct zone *zone, unsigned long nr_pages) >> */ >> return present_pages == 0; >> } >> +#endif /* #ifdef CONFIG_MOVABLE_NODE */ > > Please, spend more time over the accuracy and completeness of the > changelog and comments? That will result in better and more > maintainable code. And it results in *much* more effective code > reviewing. > > > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ > [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: 0002-memory_hotplug-allow-online-offline-memory-to-result.patch --] [-- Type: text/x-patch; name="0002-memory_hotplug-allow-online-offline-memory-to-result.patch", Size: 0 bytes --] ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2012-12-17 2:25 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-11-16 11:58 [PART4 Patch v2 0/2] memory-hotplug: allow online/offline memory to result movable node Wen Congyang 2012-11-16 11:58 ` [PART4 Patch v2 1/2] numa: add CONFIG_MOVABLE_NODE for movable-dedicated node Wen Congyang 2012-11-20 22:25 ` Andrew Morton 2012-11-21 3:27 ` Wen Congyang 2012-11-16 11:58 ` [PART4 Patch v2 2/2] memory_hotplug: allow online/offline memory to result movable node Wen Congyang 2012-11-20 22:29 ` Andrew Morton 2012-12-17 2:23 ` Tang Chen
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).