* [PATCH] mm: compaction: fix echo 1 > compact_memory return error issue @ 2013-01-06 7:44 Jason Liu 2013-01-06 7:59 ` Wanpeng Li ` (3 more replies) 0 siblings, 4 replies; 14+ messages in thread From: Jason Liu @ 2013-01-06 7:44 UTC (permalink / raw) To: linux-kernel; +Cc: mgorman, akpm, riel, minchan, kamezawa.hiroyu, linux-mm when run the folloing command under shell, it will return error sh/$ echo 1 > /proc/sys/vm/compact_memory sh/$ sh: write error: Bad address After strace, I found the following log: ... write(1, "1\n", 2) = 3 write(1, "", 4294967295) = -1 EFAULT (Bad address) write(2, "echo: write error: Bad address\n", 31echo: write error: Bad address ) = 31 This tells system return 3(COMPACT_COMPLETE) after write data to compact_memory. The fix is to make the system just return 0 instead 3(COMPACT_COMPLETE) from sysctl_compaction_handler after compaction_nodes finished. Suggested-by:David Rientjes <rientjes@google.com> Cc:Mel Gorman <mgorman@suse.de> Cc:Andrew Morton <akpm@linux-foundation.org> Cc:Rik van Riel <riel@redhat.com> Cc:Minchan Kim <minchan@kernel.org> Cc:KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Signed-off-by: Jason Liu <r64343@freescale.com> --- mm/compaction.c | 6 ++---- 1 files changed, 2 insertions(+), 4 deletions(-) diff --git a/mm/compaction.c b/mm/compaction.c index 6b807e4..f8f5c11 100644 --- a/mm/compaction.c +++ b/mm/compaction.c @@ -1210,7 +1210,7 @@ static int compact_node(int nid) } /* Compact all nodes in the system */ -static int compact_nodes(void) +static void compact_nodes(void) { int nid; @@ -1219,8 +1219,6 @@ static int compact_nodes(void) for_each_online_node(nid) compact_node(nid); - - return COMPACT_COMPLETE; } /* The written value is actually unused, all memory is compacted */ @@ -1231,7 +1229,7 @@ int sysctl_compaction_handler(struct ctl_table *table, int write, void __user *buffer, size_t *length, loff_t *ppos) { if (write) - return compact_nodes(); + compact_nodes(); return 0; } -- 1.7.5.4 -- 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] 14+ messages in thread
* Re: [PATCH] mm: compaction: fix echo 1 > compact_memory return error issue 2013-01-06 7:44 [PATCH] mm: compaction: fix echo 1 > compact_memory return error issue Jason Liu @ 2013-01-06 7:59 ` Wanpeng Li 2013-01-06 7:59 ` Wanpeng Li ` (2 subsequent siblings) 3 siblings, 0 replies; 14+ messages in thread From: Wanpeng Li @ 2013-01-06 7:59 UTC (permalink / raw) To: Jason Liu Cc: linux-kernel, mgorman, akpm, riel, minchan, kamezawa.hiroyu, linux-mm On Sun, Jan 06, 2013 at 03:44:33PM +0800, Jason Liu wrote: Hi Jason, >when run the folloing command under shell, it will return error >sh/$ echo 1 > /proc/sys/vm/compact_memory >sh/$ sh: write error: Bad address > How can you modify the value through none privileged user since the mode == 0200? >After strace, I found the following log: >... >write(1, "1\n", 2) = 3 >write(1, "", 4294967295) = -1 EFAULT (Bad address) >write(2, "echo: write error: Bad address\n", 31echo: write error: Bad address >) = 31 > >This tells system return 3(COMPACT_COMPLETE) after write data to compact_memory. > >The fix is to make the system just return 0 instead 3(COMPACT_COMPLETE) from >sysctl_compaction_handler after compaction_nodes finished. What's the special scenario you are in? I couldn't figure out the similar error against latest 3.8-rc2, how could you reproduce it? Regards, Wanpeng Li > >Suggested-by:David Rientjes <rientjes@google.com> >Cc:Mel Gorman <mgorman@suse.de> >Cc:Andrew Morton <akpm@linux-foundation.org> >Cc:Rik van Riel <riel@redhat.com> >Cc:Minchan Kim <minchan@kernel.org> >Cc:KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> >Signed-off-by: Jason Liu <r64343@freescale.com> >--- > mm/compaction.c | 6 ++---- > 1 files changed, 2 insertions(+), 4 deletions(-) > >diff --git a/mm/compaction.c b/mm/compaction.c >index 6b807e4..f8f5c11 100644 >--- a/mm/compaction.c >+++ b/mm/compaction.c >@@ -1210,7 +1210,7 @@ static int compact_node(int nid) > } > > /* Compact all nodes in the system */ >-static int compact_nodes(void) >+static void compact_nodes(void) > { > int nid; > >@@ -1219,8 +1219,6 @@ static int compact_nodes(void) > > for_each_online_node(nid) > compact_node(nid); >- >- return COMPACT_COMPLETE; > } > > /* The written value is actually unused, all memory is compacted */ >@@ -1231,7 +1229,7 @@ int sysctl_compaction_handler(struct ctl_table *table, int write, > void __user *buffer, size_t *length, loff_t *ppos) > { > if (write) >- return compact_nodes(); >+ compact_nodes(); > > return 0; > } >-- >1.7.5.4 > > >-- >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> -- 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] 14+ messages in thread
* Re: [PATCH] mm: compaction: fix echo 1 > compact_memory return error issue 2013-01-06 7:44 [PATCH] mm: compaction: fix echo 1 > compact_memory return error issue Jason Liu 2013-01-06 7:59 ` Wanpeng Li @ 2013-01-06 7:59 ` Wanpeng Li 2013-01-06 8:11 ` Liu Hui-R64343 2013-01-07 13:57 ` Mel Gorman 2013-01-08 3:15 ` David Rientjes 3 siblings, 1 reply; 14+ messages in thread From: Wanpeng Li @ 2013-01-06 7:59 UTC (permalink / raw) To: Jason Liu Cc: linux-kernel, mgorman, akpm, riel, minchan, kamezawa.hiroyu, linux-mm On Sun, Jan 06, 2013 at 03:44:33PM +0800, Jason Liu wrote: Hi Jason, >when run the folloing command under shell, it will return error >sh/$ echo 1 > /proc/sys/vm/compact_memory >sh/$ sh: write error: Bad address > How can you modify the value through none privileged user since the mode == 0200? >After strace, I found the following log: >... >write(1, "1\n", 2) = 3 >write(1, "", 4294967295) = -1 EFAULT (Bad address) >write(2, "echo: write error: Bad address\n", 31echo: write error: Bad address >) = 31 > >This tells system return 3(COMPACT_COMPLETE) after write data to compact_memory. > >The fix is to make the system just return 0 instead 3(COMPACT_COMPLETE) from >sysctl_compaction_handler after compaction_nodes finished. What's the special scenario you are in? I couldn't figure out the similar error against latest 3.8-rc2, how could you reproduce it? Regards, Wanpeng Li > >Suggested-by:David Rientjes <rientjes@google.com> >Cc:Mel Gorman <mgorman@suse.de> >Cc:Andrew Morton <akpm@linux-foundation.org> >Cc:Rik van Riel <riel@redhat.com> >Cc:Minchan Kim <minchan@kernel.org> >Cc:KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> >Signed-off-by: Jason Liu <r64343@freescale.com> >--- > mm/compaction.c | 6 ++---- > 1 files changed, 2 insertions(+), 4 deletions(-) > >diff --git a/mm/compaction.c b/mm/compaction.c >index 6b807e4..f8f5c11 100644 >--- a/mm/compaction.c >+++ b/mm/compaction.c >@@ -1210,7 +1210,7 @@ static int compact_node(int nid) > } > > /* Compact all nodes in the system */ >-static int compact_nodes(void) >+static void compact_nodes(void) > { > int nid; > >@@ -1219,8 +1219,6 @@ static int compact_nodes(void) > > for_each_online_node(nid) > compact_node(nid); >- >- return COMPACT_COMPLETE; > } > > /* The written value is actually unused, all memory is compacted */ >@@ -1231,7 +1229,7 @@ int sysctl_compaction_handler(struct ctl_table *table, int write, > void __user *buffer, size_t *length, loff_t *ppos) > { > if (write) >- return compact_nodes(); >+ compact_nodes(); > > return 0; > } >-- >1.7.5.4 > > >-- >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> -- 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] 14+ messages in thread
* RE: [PATCH] mm: compaction: fix echo 1 > compact_memory return error issue 2013-01-06 7:59 ` Wanpeng Li @ 2013-01-06 8:11 ` Liu Hui-R64343 2013-01-06 8:46 ` Wanpeng Li 2013-01-06 8:46 ` Wanpeng Li 0 siblings, 2 replies; 14+ messages in thread From: Liu Hui-R64343 @ 2013-01-06 8:11 UTC (permalink / raw) To: Wanpeng Li Cc: linux-kernel@vger.kernel.org, mgorman@suse.de, akpm@linux-foundation.org, riel@redhat.com, minchan@kernel.org, kamezawa.hiroyu@jp.fujitsu.com, linux-mm@kvack.org >-----Original Message----- >From: Wanpeng Li [mailto:liwanp@linux.vnet.ibm.com] >Sent: Sunday, January 06, 2013 4:00 PM >To: Liu Hui-R64343 >Cc: linux-kernel@vger.kernel.org; mgorman@suse.de; akpm@linux- >foundation.org; riel@redhat.com; minchan@kernel.org; >kamezawa.hiroyu@jp.fujitsu.com; linux-mm@kvack.org >Subject: Re: [PATCH] mm: compaction: fix echo 1 > compact_memory return >error issue > >On Sun, Jan 06, 2013 at 03:44:33PM +0800, Jason Liu wrote: > >Hi Jason, > >>when run the folloing command under shell, it will return error sh/$ >>echo 1 > /proc/sys/vm/compact_memory sh/$ sh: write error: Bad address >> > >How can you modify the value through none privileged user since the mode >== 0200? I write it through privileged user(root). I'm using the GNOME_Mobile rootfs. > >>After strace, I found the following log: >>... >>write(1, "1\n", 2) = 3 >>write(1, "", 4294967295) = -1 EFAULT (Bad address) >>write(2, "echo: write error: Bad address\n", 31echo: write error: Bad >>address >>) = 31 >> >>This tells system return 3(COMPACT_COMPLETE) after write data to >compact_memory. >> >>The fix is to make the system just return 0 instead 3(COMPACT_COMPLETE) >>from sysctl_compaction_handler after compaction_nodes finished. > >What's the special scenario you are in? I couldn't figure out the similar error >against latest 3.8-rc2, how could you reproduce it? I'm using the BusyBox v1.20.2 () built-in shell (ash), it reproduces the issue: 100%. root@freescale /$ sh BusyBox v1.20.2 () built-in shell (ash) Enter 'help' for a list of built-in commands. Could you run strace and see the log: strace echo 1 > /proc/sys/vm/compact_memory > >Regards, >Wanpeng Li > >> >>Suggested-by:David Rientjes <rientjes@google.com> Cc:Mel Gorman >><mgorman@suse.de> Cc:Andrew Morton <akpm@linux-foundation.org> >Cc:Rik >>van Riel <riel@redhat.com> Cc:Minchan Kim <minchan@kernel.org> >>Cc:KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> >>Signed-off-by: Jason Liu <r64343@freescale.com> >>--- >> mm/compaction.c | 6 ++---- >> 1 files changed, 2 insertions(+), 4 deletions(-) >> >>diff --git a/mm/compaction.c b/mm/compaction.c index 6b807e4..f8f5c11 >>100644 >>--- a/mm/compaction.c >>+++ b/mm/compaction.c >>@@ -1210,7 +1210,7 @@ static int compact_node(int nid) } >> >> /* Compact all nodes in the system */ >>-static int compact_nodes(void) >>+static void compact_nodes(void) >> { >> int nid; >> >>@@ -1219,8 +1219,6 @@ static int compact_nodes(void) >> >> for_each_online_node(nid) >> compact_node(nid); >>- >>- return COMPACT_COMPLETE; >> } >> >> /* The written value is actually unused, all memory is compacted */ @@ >>-1231,7 +1229,7 @@ int sysctl_compaction_handler(struct ctl_table *table, >int write, >> void __user *buffer, size_t *length, loff_t *ppos) { >> if (write) >>- return compact_nodes(); >>+ compact_nodes(); >> >> return 0; >> } >>-- >>1.7.5.4 >> >> >>-- >>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> > -- 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] 14+ messages in thread
* Re: [PATCH] mm: compaction: fix echo 1 > compact_memory return error issue 2013-01-06 8:11 ` Liu Hui-R64343 @ 2013-01-06 8:46 ` Wanpeng Li 2013-01-06 8:48 ` Liu Hui-R64343 2013-01-06 8:46 ` Wanpeng Li 1 sibling, 1 reply; 14+ messages in thread From: Wanpeng Li @ 2013-01-06 8:46 UTC (permalink / raw) To: Liu Hui-R64343 Cc: linux-kernel, mgorman, akpm, riel, minchan, kamezawa.hiroyu, linux-mm On Sun, Jan 06, 2013 at 08:11:58AM +0000, Liu Hui-R64343 wrote: >>-----Original Message----- >>From: Wanpeng Li [mailto:liwanp@linux.vnet.ibm.com] >>Sent: Sunday, January 06, 2013 4:00 PM >>To: Liu Hui-R64343 >>Cc: linux-kernel@vger.kernel.org; mgorman@suse.de; akpm@linux- >>foundation.org; riel@redhat.com; minchan@kernel.org; >>kamezawa.hiroyu@jp.fujitsu.com; linux-mm@kvack.org >>Subject: Re: [PATCH] mm: compaction: fix echo 1 > compact_memory return >>error issue >> >>On Sun, Jan 06, 2013 at 03:44:33PM +0800, Jason Liu wrote: >> >>Hi Jason, >> >>>when run the folloing command under shell, it will return error sh/$ >>>echo 1 > /proc/sys/vm/compact_memory sh/$ sh: write error: Bad address >>> >> >>How can you modify the value through none privileged user since the mode >>== 0200? > >I write it through privileged user(root). I'm using the GNOME_Mobile rootfs. > >> >>>After strace, I found the following log: >>>... >>>write(1, "1\n", 2) = 3 >>>write(1, "", 4294967295) = -1 EFAULT (Bad address) >>>write(2, "echo: write error: Bad address\n", 31echo: write error: Bad >>>address >>>) = 31 >>> >>>This tells system return 3(COMPACT_COMPLETE) after write data to >>compact_memory. >>> >>>The fix is to make the system just return 0 instead 3(COMPACT_COMPLETE) >>>from sysctl_compaction_handler after compaction_nodes finished. >> >>What's the special scenario you are in? I couldn't figure out the similar error >>against latest 3.8-rc2, how could you reproduce it? > >I'm using the BusyBox v1.20.2 () built-in shell (ash), it reproduces the issue: 100%. > >root@freescale /$ sh > > >BusyBox v1.20.2 () built-in shell (ash) >Enter 'help' for a list of built-in commands. > >Could you run strace and see the log: strace echo 1 > /proc/sys/vm/compact_memory > I test it on my desktop against latest 3.8-rc2, can't repoduce it. :) write(1, "1\n", 2) = 3 close(1) = 0 munmap(0xb779c000, 4096) = 0 close(2) = 0 exit_group(0) = ? +++ exited with 0 +++ Regards, Wanpeng Li >> >>Regards, >>Wanpeng Li >> >>> >>>Suggested-by:David Rientjes <rientjes@google.com> Cc:Mel Gorman >>><mgorman@suse.de> Cc:Andrew Morton <akpm@linux-foundation.org> >>Cc:Rik >>>van Riel <riel@redhat.com> Cc:Minchan Kim <minchan@kernel.org> >>>Cc:KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> >>>Signed-off-by: Jason Liu <r64343@freescale.com> >>>--- >>> mm/compaction.c | 6 ++---- >>> 1 files changed, 2 insertions(+), 4 deletions(-) >>> >>>diff --git a/mm/compaction.c b/mm/compaction.c index 6b807e4..f8f5c11 >>>100644 >>>--- a/mm/compaction.c >>>+++ b/mm/compaction.c >>>@@ -1210,7 +1210,7 @@ static int compact_node(int nid) } >>> >>> /* Compact all nodes in the system */ >>>-static int compact_nodes(void) >>>+static void compact_nodes(void) >>> { >>> int nid; >>> >>>@@ -1219,8 +1219,6 @@ static int compact_nodes(void) >>> >>> for_each_online_node(nid) >>> compact_node(nid); >>>- >>>- return COMPACT_COMPLETE; >>> } >>> >>> /* The written value is actually unused, all memory is compacted */ @@ >>>-1231,7 +1229,7 @@ int sysctl_compaction_handler(struct ctl_table *table, >>int write, >>> void __user *buffer, size_t *length, loff_t *ppos) { >>> if (write) >>>- return compact_nodes(); >>>+ compact_nodes(); >>> >>> return 0; >>> } >>>-- >>>1.7.5.4 >>> >>> >>>-- >>>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> >> > -- 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] 14+ messages in thread
* RE: [PATCH] mm: compaction: fix echo 1 > compact_memory return error issue 2013-01-06 8:46 ` Wanpeng Li @ 2013-01-06 8:48 ` Liu Hui-R64343 2013-01-06 9:19 ` Simon Jeons 0 siblings, 1 reply; 14+ messages in thread From: Liu Hui-R64343 @ 2013-01-06 8:48 UTC (permalink / raw) To: Wanpeng Li Cc: linux-kernel@vger.kernel.org, mgorman@suse.de, akpm@linux-foundation.org, riel@redhat.com, minchan@kernel.org, kamezawa.hiroyu@jp.fujitsu.com, linux-mm@kvack.org >-----Original Message----- >From: Wanpeng Li [mailto:liwanp@linux.vnet.ibm.com] >Sent: Sunday, January 06, 2013 4:46 PM >To: Liu Hui-R64343 >Cc: linux-kernel@vger.kernel.org; mgorman@suse.de; akpm@linux- >foundation.org; riel@redhat.com; minchan@kernel.org; >kamezawa.hiroyu@jp.fujitsu.com; linux-mm@kvack.org >Subject: Re: [PATCH] mm: compaction: fix echo 1 > compact_memory return >error issue > >On Sun, Jan 06, 2013 at 08:11:58AM +0000, Liu Hui-R64343 wrote: >>>-----Original Message----- >>>From: Wanpeng Li [mailto:liwanp@linux.vnet.ibm.com] >>>Sent: Sunday, January 06, 2013 4:00 PM >>>To: Liu Hui-R64343 >>>Cc: linux-kernel@vger.kernel.org; mgorman@suse.de; akpm@linux- >>>foundation.org; riel@redhat.com; minchan@kernel.org; >>>kamezawa.hiroyu@jp.fujitsu.com; linux-mm@kvack.org >>>Subject: Re: [PATCH] mm: compaction: fix echo 1 > compact_memory >>>return error issue >>> >>>On Sun, Jan 06, 2013 at 03:44:33PM +0800, Jason Liu wrote: >>> >>>Hi Jason, >>> >>>>when run the folloing command under shell, it will return error sh/$ >>>>echo 1 > /proc/sys/vm/compact_memory sh/$ sh: write error: Bad >>>>address >>>> >>> >>>How can you modify the value through none privileged user since the >>>mode == 0200? >> >>I write it through privileged user(root). I'm using the GNOME_Mobile rootfs. >> >>> >>>>After strace, I found the following log: >>>>... >>>>write(1, "1\n", 2) = 3 >>>>write(1, "", 4294967295) = -1 EFAULT (Bad address) >>>>write(2, "echo: write error: Bad address\n", 31echo: write error: Bad >>>>address >>>>) = 31 >>>> >>>>This tells system return 3(COMPACT_COMPLETE) after write data to >>>compact_memory. >>>> >>>>The fix is to make the system just return 0 instead >>>>3(COMPACT_COMPLETE) from sysctl_compaction_handler after >compaction_nodes finished. >>> >>>What's the special scenario you are in? I couldn't figure out the >>>similar error against latest 3.8-rc2, how could you reproduce it? >> >>I'm using the BusyBox v1.20.2 () built-in shell (ash), it reproduces the issue: >100%. >> >>root@freescale /$ sh >> >> >>BusyBox v1.20.2 () built-in shell (ash) Enter 'help' for a list of >>built-in commands. >> >>Could you run strace and see the log: strace echo 1 > >>/proc/sys/vm/compact_memory >> > >I test it on my desktop against latest 3.8-rc2, can't repoduce it. :) > >write(1, "1\n", 2) = 3 Here it tells it. >close(1) = 0 >munmap(0xb779c000, 4096) = 0 >close(2) = 0 >exit_group(0) = ? >+++ exited with 0 +++ > >Regards, >Wanpeng Li > >>> >>>Regards, >>>Wanpeng Li >>> >>>> >>>>Suggested-by:David Rientjes <rientjes@google.com> Cc:Mel Gorman >>>><mgorman@suse.de> Cc:Andrew Morton <akpm@linux-foundation.org> >>>Cc:Rik >>>>van Riel <riel@redhat.com> Cc:Minchan Kim <minchan@kernel.org> >>>>Cc:KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> >>>>Signed-off-by: Jason Liu <r64343@freescale.com> >>>>--- >>>> mm/compaction.c | 6 ++---- >>>> 1 files changed, 2 insertions(+), 4 deletions(-) >>>> >>>>diff --git a/mm/compaction.c b/mm/compaction.c index 6b807e4..f8f5c11 >>>>100644 >>>>--- a/mm/compaction.c >>>>+++ b/mm/compaction.c >>>>@@ -1210,7 +1210,7 @@ static int compact_node(int nid) } >>>> >>>> /* Compact all nodes in the system */ -static int >>>>compact_nodes(void) >>>>+static void compact_nodes(void) >>>> { >>>> int nid; >>>> >>>>@@ -1219,8 +1219,6 @@ static int compact_nodes(void) >>>> >>>> for_each_online_node(nid) >>>> compact_node(nid); >>>>- >>>>- return COMPACT_COMPLETE; >>>> } >>>> >>>> /* The written value is actually unused, all memory is compacted */ >>>>@@ >>>>-1231,7 +1229,7 @@ int sysctl_compaction_handler(struct ctl_table >>>>*table, >>>int write, >>>> void __user *buffer, size_t *length, loff_t *ppos) { >>>> if (write) >>>>- return compact_nodes(); >>>>+ compact_nodes(); >>>> >>>> return 0; >>>> } >>>>-- >>>>1.7.5.4 >>>> >>>> >>>>-- >>>>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> >>> >> > -- 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] 14+ messages in thread
* Re: [PATCH] mm: compaction: fix echo 1 > compact_memory return error issue 2013-01-06 8:48 ` Liu Hui-R64343 @ 2013-01-06 9:19 ` Simon Jeons 2013-01-06 9:22 ` Liu Hui-R64343 2013-01-06 16:01 ` Michal Nazarewicz 0 siblings, 2 replies; 14+ messages in thread From: Simon Jeons @ 2013-01-06 9:19 UTC (permalink / raw) To: Liu Hui-R64343 Cc: Wanpeng Li, linux-kernel@vger.kernel.org, mgorman@suse.de, akpm@linux-foundation.org, riel@redhat.com, minchan@kernel.org, kamezawa.hiroyu@jp.fujitsu.com, linux-mm@kvack.org On Sun, 2013-01-06 at 08:48 +0000, Liu Hui-R64343 wrote: > >-----Original Message----- > >From: Wanpeng Li [mailto:liwanp@linux.vnet.ibm.com] > >Sent: Sunday, January 06, 2013 4:46 PM > >To: Liu Hui-R64343 > >Cc: linux-kernel@vger.kernel.org; mgorman@suse.de; akpm@linux- > >foundation.org; riel@redhat.com; minchan@kernel.org; > >kamezawa.hiroyu@jp.fujitsu.com; linux-mm@kvack.org > >Subject: Re: [PATCH] mm: compaction: fix echo 1 > compact_memory return > >error issue > > > >On Sun, Jan 06, 2013 at 08:11:58AM +0000, Liu Hui-R64343 wrote: > >>>-----Original Message----- > >>>From: Wanpeng Li [mailto:liwanp@linux.vnet.ibm.com] > >>>Sent: Sunday, January 06, 2013 4:00 PM > >>>To: Liu Hui-R64343 > >>>Cc: linux-kernel@vger.kernel.org; mgorman@suse.de; akpm@linux- > >>>foundation.org; riel@redhat.com; minchan@kernel.org; > >>>kamezawa.hiroyu@jp.fujitsu.com; linux-mm@kvack.org > >>>Subject: Re: [PATCH] mm: compaction: fix echo 1 > compact_memory > >>>return error issue > >>> > >>>On Sun, Jan 06, 2013 at 03:44:33PM +0800, Jason Liu wrote: > >>> > >>>Hi Jason, > >>> > >>>>when run the folloing command under shell, it will return error sh/$ > >>>>echo 1 > /proc/sys/vm/compact_memory sh/$ sh: write error: Bad > >>>>address > >>>> > >>> > >>>How can you modify the value through none privileged user since the > >>>mode == 0200? > >> > >>I write it through privileged user(root). I'm using the GNOME_Mobile rootfs. > >> > >>> > >>>>After strace, I found the following log: > >>>>... > >>>>write(1, "1\n", 2) = 3 > >>>>write(1, "", 4294967295) = -1 EFAULT (Bad address) > >>>>write(2, "echo: write error: Bad address\n", 31echo: write error: Bad > >>>>address > >>>>) = 31 > >>>> > >>>>This tells system return 3(COMPACT_COMPLETE) after write data to > >>>compact_memory. > >>>> > >>>>The fix is to make the system just return 0 instead > >>>>3(COMPACT_COMPLETE) from sysctl_compaction_handler after > >compaction_nodes finished. > >>> > >>>What's the special scenario you are in? I couldn't figure out the > >>>similar error against latest 3.8-rc2, how could you reproduce it? > >> > >>I'm using the BusyBox v1.20.2 () built-in shell (ash), it reproduces the issue: > >100%. > >> > >>root@freescale /$ sh > >> > >> > >>BusyBox v1.20.2 () built-in shell (ash) Enter 'help' for a list of > >>built-in commands. > >> > >>Could you run strace and see the log: strace echo 1 > > >>/proc/sys/vm/compact_memory > >> > > > >I test it on my desktop against latest 3.8-rc2, can't repoduce it. :) > > > >write(1, "1\n", 2) = 3 > > Here it tells it. Why this value trouble you? > > >close(1) = 0 > >munmap(0xb779c000, 4096) = 0 > >close(2) = 0 > >exit_group(0) = ? > >+++ exited with 0 +++ > > > >Regards, > >Wanpeng Li > > > >>> > >>>Regards, > >>>Wanpeng Li > >>> > >>>> > >>>>Suggested-by:David Rientjes <rientjes@google.com> Cc:Mel Gorman > >>>><mgorman@suse.de> Cc:Andrew Morton <akpm@linux-foundation.org> > >>>Cc:Rik > >>>>van Riel <riel@redhat.com> Cc:Minchan Kim <minchan@kernel.org> > >>>>Cc:KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> > >>>>Signed-off-by: Jason Liu <r64343@freescale.com> > >>>>--- > >>>> mm/compaction.c | 6 ++---- > >>>> 1 files changed, 2 insertions(+), 4 deletions(-) > >>>> > >>>>diff --git a/mm/compaction.c b/mm/compaction.c index 6b807e4..f8f5c11 > >>>>100644 > >>>>--- a/mm/compaction.c > >>>>+++ b/mm/compaction.c > >>>>@@ -1210,7 +1210,7 @@ static int compact_node(int nid) } > >>>> > >>>> /* Compact all nodes in the system */ -static int > >>>>compact_nodes(void) > >>>>+static void compact_nodes(void) > >>>> { > >>>> int nid; > >>>> > >>>>@@ -1219,8 +1219,6 @@ static int compact_nodes(void) > >>>> > >>>> for_each_online_node(nid) > >>>> compact_node(nid); > >>>>- > >>>>- return COMPACT_COMPLETE; > >>>> } > >>>> > >>>> /* The written value is actually unused, all memory is compacted */ > >>>>@@ > >>>>-1231,7 +1229,7 @@ int sysctl_compaction_handler(struct ctl_table > >>>>*table, > >>>int write, > >>>> void __user *buffer, size_t *length, loff_t *ppos) { > >>>> if (write) > >>>>- return compact_nodes(); > >>>>+ compact_nodes(); > >>>> > >>>> return 0; > >>>> } > >>>>-- > >>>>1.7.5.4 > >>>> > >>>> > >>>>-- > >>>>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> > >>> > >> > > > > > -- > 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> -- 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] 14+ messages in thread
* RE: [PATCH] mm: compaction: fix echo 1 > compact_memory return error issue 2013-01-06 9:19 ` Simon Jeons @ 2013-01-06 9:22 ` Liu Hui-R64343 2013-01-06 16:01 ` Michal Nazarewicz 1 sibling, 0 replies; 14+ messages in thread From: Liu Hui-R64343 @ 2013-01-06 9:22 UTC (permalink / raw) To: Simon Jeons Cc: Wanpeng Li, linux-kernel@vger.kernel.org, mgorman@suse.de, akpm@linux-foundation.org, riel@redhat.com, minchan@kernel.org, kamezawa.hiroyu@jp.fujitsu.com, linux-mm@kvack.org >-----Original Message----- >From: Simon Jeons [mailto:simon.jeons@gmail.com] >Sent: Sunday, January 06, 2013 5:20 PM >To: Liu Hui-R64343 >Cc: Wanpeng Li; linux-kernel@vger.kernel.org; mgorman@suse.de; >akpm@linux-foundation.org; riel@redhat.com; minchan@kernel.org; >kamezawa.hiroyu@jp.fujitsu.com; linux-mm@kvack.org >Subject: Re: [PATCH] mm: compaction: fix echo 1 > compact_memory return >error issue > >On Sun, 2013-01-06 at 08:48 +0000, Liu Hui-R64343 wrote: >> >-----Original Message----- >> >From: Wanpeng Li [mailto:liwanp@linux.vnet.ibm.com] >> >Sent: Sunday, January 06, 2013 4:46 PM >> >To: Liu Hui-R64343 >> >Cc: linux-kernel@vger.kernel.org; mgorman@suse.de; akpm@linux- >> >foundation.org; riel@redhat.com; minchan@kernel.org; >> >kamezawa.hiroyu@jp.fujitsu.com; linux-mm@kvack.org >> >Subject: Re: [PATCH] mm: compaction: fix echo 1 > compact_memory >> >return error issue >> > >> >On Sun, Jan 06, 2013 at 08:11:58AM +0000, Liu Hui-R64343 wrote: >> >>>-----Original Message----- >> >>>From: Wanpeng Li [mailto:liwanp@linux.vnet.ibm.com] >> >>>Sent: Sunday, January 06, 2013 4:00 PM >> >>>To: Liu Hui-R64343 >> >>>Cc: linux-kernel@vger.kernel.org; mgorman@suse.de; akpm@linux- >> >>>foundation.org; riel@redhat.com; minchan@kernel.org; >> >>>kamezawa.hiroyu@jp.fujitsu.com; linux-mm@kvack.org >> >>>Subject: Re: [PATCH] mm: compaction: fix echo 1 > compact_memory >> >>>return error issue >> >>> >> >>>On Sun, Jan 06, 2013 at 03:44:33PM +0800, Jason Liu wrote: >> >>> >> >>>Hi Jason, >> >>> >> >>>>when run the folloing command under shell, it will return error >> >>>>sh/$ echo 1 > /proc/sys/vm/compact_memory sh/$ sh: write error: >> >>>>Bad address >> >>>> >> >>> >> >>>How can you modify the value through none privileged user since the >> >>>mode == 0200? >> >> >> >>I write it through privileged user(root). I'm using the GNOME_Mobile >rootfs. >> >> >> >>> >> >>>>After strace, I found the following log: >> >>>>... >> >>>>write(1, "1\n", 2) = 3 >> >>>>write(1, "", 4294967295) = -1 EFAULT (Bad address) >> >>>>write(2, "echo: write error: Bad address\n", 31echo: write error: >> >>>>Bad address >> >>>>) = 31 >> >>>> >> >>>>This tells system return 3(COMPACT_COMPLETE) after write data to >> >>>compact_memory. >> >>>> >> >>>>The fix is to make the system just return 0 instead >> >>>>3(COMPACT_COMPLETE) from sysctl_compaction_handler after >> >compaction_nodes finished. >> >>> >> >>>What's the special scenario you are in? I couldn't figure out the >> >>>similar error against latest 3.8-rc2, how could you reproduce it? >> >> >> >>I'm using the BusyBox v1.20.2 () built-in shell (ash), it reproduces the >issue: >> >100%. >> >> >> >>root@freescale /$ sh >> >> >> >> >> >>BusyBox v1.20.2 () built-in shell (ash) Enter 'help' for a list of >> >>built-in commands. >> >> >> >>Could you run strace and see the log: strace echo 1 > >> >>/proc/sys/vm/compact_memory >> >> >> > >> >I test it on my desktop against latest 3.8-rc2, can't repoduce it. :) >> > >> >write(1, "1\n", 2) = 3 >> >> Here it tells it. > >Why this value trouble you? root@freescale /$strace echo 1 > /proc/sys/vm/compact_memory write(1, "1\n", 2) = 3 write(1, "", 4294967295) = -1 EFAULT (Bad address) write(2, "echo: write error: Bad address\n", 31echo: write error: Bad address ) = 31 root@freescale /$ sh BusyBox v1.20.2 () built-in shell (ash) Enter 'help' for a list of built-in commands. root@freescale /$ echo 1 > /proc/sys/vm/compact_memory sh: write error: Bad address > >> >> >close(1) = 0 >> >munmap(0xb779c000, 4096) = 0 >> >close(2) = 0 >> >exit_group(0) = ? >> >+++ exited with 0 +++ >> > >> >Regards, >> >Wanpeng Li >> > >> >>> >> >>>Regards, >> >>>Wanpeng Li >> >>> >> >>>> >> >>>>Suggested-by:David Rientjes <rientjes@google.com> Cc:Mel Gorman >> >>>><mgorman@suse.de> Cc:Andrew Morton <akpm@linux- >foundation.org> >> >>>Cc:Rik >> >>>>van Riel <riel@redhat.com> Cc:Minchan Kim <minchan@kernel.org> >> >>>>Cc:KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> >> >>>>Signed-off-by: Jason Liu <r64343@freescale.com> >> >>>>--- >> >>>> mm/compaction.c | 6 ++---- >> >>>> 1 files changed, 2 insertions(+), 4 deletions(-) >> >>>> >> >>>>diff --git a/mm/compaction.c b/mm/compaction.c index >> >>>>6b807e4..f8f5c11 >> >>>>100644 >> >>>>--- a/mm/compaction.c >> >>>>+++ b/mm/compaction.c >> >>>>@@ -1210,7 +1210,7 @@ static int compact_node(int nid) } >> >>>> >> >>>> /* Compact all nodes in the system */ -static int >> >>>>compact_nodes(void) >> >>>>+static void compact_nodes(void) >> >>>> { >> >>>> int nid; >> >>>> >> >>>>@@ -1219,8 +1219,6 @@ static int compact_nodes(void) >> >>>> >> >>>> for_each_online_node(nid) >> >>>> compact_node(nid); >> >>>>- >> >>>>- return COMPACT_COMPLETE; >> >>>> } >> >>>> >> >>>> /* The written value is actually unused, all memory is compacted >> >>>>*/ @@ >> >>>>-1231,7 +1229,7 @@ int sysctl_compaction_handler(struct ctl_table >> >>>>*table, >> >>>int write, >> >>>> void __user *buffer, size_t *length, loff_t *ppos) >{ >> >>>> if (write) >> >>>>- return compact_nodes(); >> >>>>+ compact_nodes(); >> >>>> >> >>>> return 0; >> >>>> } >> >>>>-- >> >>>>1.7.5.4 >> >>>> >> >>>> >> >>>>-- >> >>>>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> >> >>> >> >> >> > >> >> >> -- >> 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] 14+ messages in thread
* Re: [PATCH] mm: compaction: fix echo 1 > compact_memory return error issue 2013-01-06 9:19 ` Simon Jeons 2013-01-06 9:22 ` Liu Hui-R64343 @ 2013-01-06 16:01 ` Michal Nazarewicz 1 sibling, 0 replies; 14+ messages in thread From: Michal Nazarewicz @ 2013-01-06 16:01 UTC (permalink / raw) To: Simon Jeons, Liu Hui-R64343 Cc: Wanpeng Li, linux-kernel@vger.kernel.org, mgorman@suse.de, akpm@linux-foundation.org, riel@redhat.com, minchan@kernel.org, kamezawa.hiroyu@jp.fujitsu.com, linux-mm@kvack.org [-- Attachment #1: Type: text/plain, Size: 561 bytes --] On Sun, Jan 06 2013, Simon Jeons wrote: >> >write(1, "1\n", 2) = 3 >> Here it tells it. > On Sun, 2013-01-06 at 08:48 +0000, Liu Hui-R64343 wrote: > Why this value trouble you? Because write() is supposed to return the number of bytes successfully written. -- Best regards, _ _ .o. | Liege of Serenely Enlightened Majesty of o' \,=./ `o ..o | Computer Science, Michał “mina86” Nazarewicz (o o) ooo +----<email/xmpp: mpn@google.com>--------------ooO--(_)--Ooo-- [-- Attachment #2.1: Type: text/plain, Size: 0 bytes --] [-- Attachment #2.2: Type: application/pgp-signature, Size: 835 bytes --] ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] mm: compaction: fix echo 1 > compact_memory return error issue 2013-01-06 8:11 ` Liu Hui-R64343 2013-01-06 8:46 ` Wanpeng Li @ 2013-01-06 8:46 ` Wanpeng Li 1 sibling, 0 replies; 14+ messages in thread From: Wanpeng Li @ 2013-01-06 8:46 UTC (permalink / raw) To: Liu Hui-R64343 Cc: linux-kernel, mgorman, akpm, riel, minchan, kamezawa.hiroyu, linux-mm On Sun, Jan 06, 2013 at 08:11:58AM +0000, Liu Hui-R64343 wrote: >>-----Original Message----- >>From: Wanpeng Li [mailto:liwanp@linux.vnet.ibm.com] >>Sent: Sunday, January 06, 2013 4:00 PM >>To: Liu Hui-R64343 >>Cc: linux-kernel@vger.kernel.org; mgorman@suse.de; akpm@linux- >>foundation.org; riel@redhat.com; minchan@kernel.org; >>kamezawa.hiroyu@jp.fujitsu.com; linux-mm@kvack.org >>Subject: Re: [PATCH] mm: compaction: fix echo 1 > compact_memory return >>error issue >> >>On Sun, Jan 06, 2013 at 03:44:33PM +0800, Jason Liu wrote: >> >>Hi Jason, >> >>>when run the folloing command under shell, it will return error sh/$ >>>echo 1 > /proc/sys/vm/compact_memory sh/$ sh: write error: Bad address >>> >> >>How can you modify the value through none privileged user since the mode >>== 0200? > >I write it through privileged user(root). I'm using the GNOME_Mobile rootfs. > >> >>>After strace, I found the following log: >>>... >>>write(1, "1\n", 2) = 3 >>>write(1, "", 4294967295) = -1 EFAULT (Bad address) >>>write(2, "echo: write error: Bad address\n", 31echo: write error: Bad >>>address >>>) = 31 >>> >>>This tells system return 3(COMPACT_COMPLETE) after write data to >>compact_memory. >>> >>>The fix is to make the system just return 0 instead 3(COMPACT_COMPLETE) >>>from sysctl_compaction_handler after compaction_nodes finished. >> >>What's the special scenario you are in? I couldn't figure out the similar error >>against latest 3.8-rc2, how could you reproduce it? > >I'm using the BusyBox v1.20.2 () built-in shell (ash), it reproduces the issue: 100%. > >root@freescale /$ sh > > >BusyBox v1.20.2 () built-in shell (ash) >Enter 'help' for a list of built-in commands. > >Could you run strace and see the log: strace echo 1 > /proc/sys/vm/compact_memory > I test it on my desktop against latest 3.8-rc2, can't repoduce it. :) write(1, "1\n", 2) = 3 close(1) = 0 munmap(0xb779c000, 4096) = 0 close(2) = 0 exit_group(0) = ? +++ exited with 0 +++ Regards, Wanpeng Li >> >>Regards, >>Wanpeng Li >> >>> >>>Suggested-by:David Rientjes <rientjes@google.com> Cc:Mel Gorman >>><mgorman@suse.de> Cc:Andrew Morton <akpm@linux-foundation.org> >>Cc:Rik >>>van Riel <riel@redhat.com> Cc:Minchan Kim <minchan@kernel.org> >>>Cc:KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> >>>Signed-off-by: Jason Liu <r64343@freescale.com> >>>--- >>> mm/compaction.c | 6 ++---- >>> 1 files changed, 2 insertions(+), 4 deletions(-) >>> >>>diff --git a/mm/compaction.c b/mm/compaction.c index 6b807e4..f8f5c11 >>>100644 >>>--- a/mm/compaction.c >>>+++ b/mm/compaction.c >>>@@ -1210,7 +1210,7 @@ static int compact_node(int nid) } >>> >>> /* Compact all nodes in the system */ >>>-static int compact_nodes(void) >>>+static void compact_nodes(void) >>> { >>> int nid; >>> >>>@@ -1219,8 +1219,6 @@ static int compact_nodes(void) >>> >>> for_each_online_node(nid) >>> compact_node(nid); >>>- >>>- return COMPACT_COMPLETE; >>> } >>> >>> /* The written value is actually unused, all memory is compacted */ @@ >>>-1231,7 +1229,7 @@ int sysctl_compaction_handler(struct ctl_table *table, >>int write, >>> void __user *buffer, size_t *length, loff_t *ppos) { >>> if (write) >>>- return compact_nodes(); >>>+ compact_nodes(); >>> >>> return 0; >>> } >>>-- >>>1.7.5.4 >>> >>> >>>-- >>>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> >> > -- 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] 14+ messages in thread
* Re: [PATCH] mm: compaction: fix echo 1 > compact_memory return error issue 2013-01-06 7:44 [PATCH] mm: compaction: fix echo 1 > compact_memory return error issue Jason Liu 2013-01-06 7:59 ` Wanpeng Li 2013-01-06 7:59 ` Wanpeng Li @ 2013-01-07 13:57 ` Mel Gorman 2013-01-07 21:33 ` Andrew Morton 2013-01-08 3:15 ` David Rientjes 3 siblings, 1 reply; 14+ messages in thread From: Mel Gorman @ 2013-01-07 13:57 UTC (permalink / raw) To: Jason Liu; +Cc: linux-kernel, akpm, riel, minchan, kamezawa.hiroyu, linux-mm On Sun, Jan 06, 2013 at 03:44:33PM +0800, Jason Liu wrote: > when run the folloing command under shell, it will return error > sh/$ echo 1 > /proc/sys/vm/compact_memory > sh/$ sh: write error: Bad address > > After strace, I found the following log: > ... > write(1, "1\n", 2) = 3 > write(1, "", 4294967295) = -1 EFAULT (Bad address) > write(2, "echo: write error: Bad address\n", 31echo: write error: Bad address > ) = 31 > > This tells system return 3(COMPACT_COMPLETE) after write data to compact_memory. > > The fix is to make the system just return 0 instead 3(COMPACT_COMPLETE) from > sysctl_compaction_handler after compaction_nodes finished. > > Suggested-by:David Rientjes <rientjes@google.com> > Cc:Mel Gorman <mgorman@suse.de> > Cc:Andrew Morton <akpm@linux-foundation.org> > Cc:Rik van Riel <riel@redhat.com> > Cc:Minchan Kim <minchan@kernel.org> > Cc:KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> > Signed-off-by: Jason Liu <r64343@freescale.com> Acked-by: Mel Gorman <mgorman@suse.de> -- Mel Gorman SUSE Labs -- 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] 14+ messages in thread
* Re: [PATCH] mm: compaction: fix echo 1 > compact_memory return error issue 2013-01-07 13:57 ` Mel Gorman @ 2013-01-07 21:33 ` Andrew Morton 2013-01-08 3:16 ` David Rientjes 0 siblings, 1 reply; 14+ messages in thread From: Andrew Morton @ 2013-01-07 21:33 UTC (permalink / raw) To: Mel Gorman Cc: Jason Liu, linux-kernel, riel, minchan, kamezawa.hiroyu, linux-mm On Mon, 7 Jan 2013 13:57:21 +0000 Mel Gorman <mgorman@suse.de> wrote: > On Sun, Jan 06, 2013 at 03:44:33PM +0800, Jason Liu wrote: > > when run the folloing command under shell, it will return error > > sh/$ echo 1 > /proc/sys/vm/compact_memory > > sh/$ sh: write error: Bad address > > > > After strace, I found the following log: > > ... > > write(1, "1\n", 2) = 3 > > write(1, "", 4294967295) = -1 EFAULT (Bad address) > > write(2, "echo: write error: Bad address\n", 31echo: write error: Bad address > > ) = 31 > > > > This tells system return 3(COMPACT_COMPLETE) after write data to compact_memory. > > > > The fix is to make the system just return 0 instead 3(COMPACT_COMPLETE) from > > sysctl_compaction_handler after compaction_nodes finished. > > > > Suggested-by:David Rientjes <rientjes@google.com> > > Cc:Mel Gorman <mgorman@suse.de> > > Cc:Andrew Morton <akpm@linux-foundation.org> > > Cc:Rik van Riel <riel@redhat.com> > > Cc:Minchan Kim <minchan@kernel.org> > > Cc:KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> > > Signed-off-by: Jason Liu <r64343@freescale.com> > > Acked-by: Mel Gorman <mgorman@suse.de> We have a whole pile of things around there which return information-free integers. Should we do this? --- a/mm/compaction.c~mm-compaction-fix-echo-1-compact_memory-return-error-issue-fix +++ a/mm/compaction.c @@ -1150,7 +1150,7 @@ unsigned long try_to_compact_pages(struc /* Compact all zones within a node */ -static int __compact_pgdat(pg_data_t *pgdat, struct compact_control *cc) +static void __compact_pgdat(pg_data_t *pgdat, struct compact_control *cc) { int zoneid; struct zone *zone; @@ -1183,11 +1183,9 @@ static int __compact_pgdat(pg_data_t *pg VM_BUG_ON(!list_empty(&cc->freepages)); VM_BUG_ON(!list_empty(&cc->migratepages)); } - - return 0; } -int compact_pgdat(pg_data_t *pgdat, int order) +void compact_pgdat(pg_data_t *pgdat, int order) { struct compact_control cc = { .order = order, @@ -1195,10 +1193,10 @@ int compact_pgdat(pg_data_t *pgdat, int .page = NULL, }; - return __compact_pgdat(pgdat, &cc); + __compact_pgdat(pgdat, &cc); } -static int compact_node(int nid) +static void compact_node(int nid) { struct compact_control cc = { .order = -1, @@ -1206,7 +1204,7 @@ static int compact_node(int nid) .page = NULL, }; - return __compact_pgdat(NODE_DATA(nid), &cc); + __compact_pgdat(NODE_DATA(nid), &cc); } /* Compact all nodes in the system */ diff -puN include/linux/compaction.h~mm-compaction-fix-echo-1-compact_memory-return-error-issue-fix include/linux/compaction.h --- a/include/linux/compaction.h~mm-compaction-fix-echo-1-compact_memory-return-error-issue-fix +++ a/include/linux/compaction.h @@ -23,7 +23,7 @@ extern int fragmentation_index(struct zo extern unsigned long try_to_compact_pages(struct zonelist *zonelist, int order, gfp_t gfp_mask, nodemask_t *mask, bool sync, bool *contended, struct page **page); -extern int compact_pgdat(pg_data_t *pgdat, int order); +extern void compact_pgdat(pg_data_t *pgdat, int order); extern void reset_isolation_suitable(pg_data_t *pgdat); extern unsigned long compaction_suitable(struct zone *zone, int order); @@ -80,9 +80,8 @@ static inline unsigned long try_to_compa return COMPACT_CONTINUE; } -static inline int compact_pgdat(pg_data_t *pgdat, int order) +static inline void compact_pgdat(pg_data_t *pgdat, int order) { - return COMPACT_CONTINUE; } static inline void reset_isolation_suitable(pg_data_t *pgdat) _ -- 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] 14+ messages in thread
* Re: [PATCH] mm: compaction: fix echo 1 > compact_memory return error issue 2013-01-07 21:33 ` Andrew Morton @ 2013-01-08 3:16 ` David Rientjes 0 siblings, 0 replies; 14+ messages in thread From: David Rientjes @ 2013-01-08 3:16 UTC (permalink / raw) To: Andrew Morton Cc: Mel Gorman, Jason Liu, linux-kernel, riel, minchan, kamezawa.hiroyu, linux-mm On Mon, 7 Jan 2013, Andrew Morton wrote: > --- a/mm/compaction.c~mm-compaction-fix-echo-1-compact_memory-return-error-issue-fix > +++ a/mm/compaction.c > @@ -1150,7 +1150,7 @@ unsigned long try_to_compact_pages(struc > > > /* Compact all zones within a node */ > -static int __compact_pgdat(pg_data_t *pgdat, struct compact_control *cc) > +static void __compact_pgdat(pg_data_t *pgdat, struct compact_control *cc) > { > int zoneid; > struct zone *zone; > @@ -1183,11 +1183,9 @@ static int __compact_pgdat(pg_data_t *pg > VM_BUG_ON(!list_empty(&cc->freepages)); > VM_BUG_ON(!list_empty(&cc->migratepages)); > } > - > - return 0; > } > > -int compact_pgdat(pg_data_t *pgdat, int order) > +void compact_pgdat(pg_data_t *pgdat, int order) > { > struct compact_control cc = { > .order = order, > @@ -1195,10 +1193,10 @@ int compact_pgdat(pg_data_t *pgdat, int > .page = NULL, > }; > > - return __compact_pgdat(pgdat, &cc); > + __compact_pgdat(pgdat, &cc); > } > > -static int compact_node(int nid) > +static void compact_node(int nid) > { > struct compact_control cc = { > .order = -1, > @@ -1206,7 +1204,7 @@ static int compact_node(int nid) > .page = NULL, > }; > > - return __compact_pgdat(NODE_DATA(nid), &cc); > + __compact_pgdat(NODE_DATA(nid), &cc); > } > > /* Compact all nodes in the system */ > diff -puN include/linux/compaction.h~mm-compaction-fix-echo-1-compact_memory-return-error-issue-fix include/linux/compaction.h > --- a/include/linux/compaction.h~mm-compaction-fix-echo-1-compact_memory-return-error-issue-fix > +++ a/include/linux/compaction.h > @@ -23,7 +23,7 @@ extern int fragmentation_index(struct zo > extern unsigned long try_to_compact_pages(struct zonelist *zonelist, > int order, gfp_t gfp_mask, nodemask_t *mask, > bool sync, bool *contended, struct page **page); > -extern int compact_pgdat(pg_data_t *pgdat, int order); > +extern void compact_pgdat(pg_data_t *pgdat, int order); > extern void reset_isolation_suitable(pg_data_t *pgdat); > extern unsigned long compaction_suitable(struct zone *zone, int order); > > @@ -80,9 +80,8 @@ static inline unsigned long try_to_compa > return COMPACT_CONTINUE; > } > > -static inline int compact_pgdat(pg_data_t *pgdat, int order) > +static inline void compact_pgdat(pg_data_t *pgdat, int order) > { > - return COMPACT_CONTINUE; > } > > static inline void reset_isolation_suitable(pg_data_t *pgdat) Acked-by: David Rientjes <rientjes@google.com> -- 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] 14+ messages in thread
* Re: [PATCH] mm: compaction: fix echo 1 > compact_memory return error issue 2013-01-06 7:44 [PATCH] mm: compaction: fix echo 1 > compact_memory return error issue Jason Liu ` (2 preceding siblings ...) 2013-01-07 13:57 ` Mel Gorman @ 2013-01-08 3:15 ` David Rientjes 3 siblings, 0 replies; 14+ messages in thread From: David Rientjes @ 2013-01-08 3:15 UTC (permalink / raw) To: Jason Liu Cc: linux-kernel, mgorman, akpm, riel, minchan, kamezawa.hiroyu, linux-mm On Sun, 6 Jan 2013, Jason Liu wrote: > when run the folloing command under shell, it will return error > sh/$ echo 1 > /proc/sys/vm/compact_memory > sh/$ sh: write error: Bad address > > After strace, I found the following log: > ... > write(1, "1\n", 2) = 3 > write(1, "", 4294967295) = -1 EFAULT (Bad address) > write(2, "echo: write error: Bad address\n", 31echo: write error: Bad address > ) = 31 > > This tells system return 3(COMPACT_COMPLETE) after write data to compact_memory. > > The fix is to make the system just return 0 instead 3(COMPACT_COMPLETE) from > sysctl_compaction_handler after compaction_nodes finished. > > Suggested-by:David Rientjes <rientjes@google.com> > Cc:Mel Gorman <mgorman@suse.de> > Cc:Andrew Morton <akpm@linux-foundation.org> > Cc:Rik van Riel <riel@redhat.com> > Cc:Minchan Kim <minchan@kernel.org> > Cc:KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> > Signed-off-by: Jason Liu <r64343@freescale.com> Acked-by: David Rientjes <rientjes@google.com> -- 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] 14+ messages in thread
end of thread, other threads:[~2013-01-08 3:16 UTC | newest] Thread overview: 14+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-01-06 7:44 [PATCH] mm: compaction: fix echo 1 > compact_memory return error issue Jason Liu 2013-01-06 7:59 ` Wanpeng Li 2013-01-06 7:59 ` Wanpeng Li 2013-01-06 8:11 ` Liu Hui-R64343 2013-01-06 8:46 ` Wanpeng Li 2013-01-06 8:48 ` Liu Hui-R64343 2013-01-06 9:19 ` Simon Jeons 2013-01-06 9:22 ` Liu Hui-R64343 2013-01-06 16:01 ` Michal Nazarewicz 2013-01-06 8:46 ` Wanpeng Li 2013-01-07 13:57 ` Mel Gorman 2013-01-07 21:33 ` Andrew Morton 2013-01-08 3:16 ` David Rientjes 2013-01-08 3:15 ` David Rientjes
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).