2012-10-23 09:37:43

by Michal Hocko

[permalink] [raw]
Subject: [PATCH] mm: make zone_pcp_reset independ on MEMORY_HOTREMOVE

340175b7 (mm/hotplug: free zone->pageset when a zone becomes empty)
introduced zone_pcp_reset and hided it inside CONFIG_MEMORY_HOTREMOVE.
The function is since 506e5fb7 (memory-hotplug: allocate zone's pcp
before onlining pages) called also called from online_pages which
is called outside CONFIG_MEMORY_HOTREMOVE which causes a linkage error.

The function, although not used outside of MEMORY_{HOTPLUT,HOTREMOVE},
seems like universal enough so let's keep it at its current location
and only remove the HOTREMOVE guard.

Signed-off-by: Michal Hocko <[email protected]>
Cc: David Rientjes <[email protected]>
Cc: Jiang Liu <[email protected]>
Cc: Len Brown <[email protected]>
Cc: Benjamin Herrenschmidt <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Christoph Lameter <[email protected]>
Cc: Minchan Kim <[email protected]>
Cc: KOSAKI Motohiro <[email protected]>
Cc: Yasuaki Ishimatsu <[email protected]>
Cc: Dave Hansen <[email protected]>
Cc: Mel Gorman <[email protected]>
---
mm/page_alloc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index e29912e..30e359c 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -5981,7 +5981,6 @@ void __meminit zone_pcp_update(struct zone *zone)
}
#endif

-#ifdef CONFIG_MEMORY_HOTREMOVE
void zone_pcp_reset(struct zone *zone)
{
unsigned long flags;
@@ -6001,6 +6000,7 @@ void zone_pcp_reset(struct zone *zone)
local_irq_restore(flags);
}

+#ifdef CONFIG_MEMORY_HOTREMOVE
/*
* All pages in the range must be isolated before calling this.
*/
--
1.7.10.4


2012-10-23 10:08:58

by Wen Congyang

[permalink] [raw]
Subject: Re: [PATCH] mm: make zone_pcp_reset independ on MEMORY_HOTREMOVE

At 10/23/2012 05:37 PM, Michal Hocko Wrote:
> 340175b7 (mm/hotplug: free zone->pageset when a zone becomes empty)
> introduced zone_pcp_reset and hided it inside CONFIG_MEMORY_HOTREMOVE.
> The function is since 506e5fb7 (memory-hotplug: allocate zone's pcp
> before onlining pages) called also called from online_pages which

This patch is still in -mm tree, and I have received a report from
Liu Yuanhan.

> is called outside CONFIG_MEMORY_HOTREMOVE which causes a linkage error.
>
> The function, although not used outside of MEMORY_{HOTPLUT,HOTREMOVE},
> seems like universal enough so let's keep it at its current location
> and only remove the HOTREMOVE guard.
>
> Signed-off-by: Michal Hocko <[email protected]>
> Cc: David Rientjes <[email protected]>
> Cc: Jiang Liu <[email protected]>
> Cc: Len Brown <[email protected]>
> Cc: Benjamin Herrenschmidt <[email protected]>
> Cc: Paul Mackerras <[email protected]>
> Cc: Christoph Lameter <[email protected]>
> Cc: Minchan Kim <[email protected]>
> Cc: KOSAKI Motohiro <[email protected]>
> Cc: Yasuaki Ishimatsu <[email protected]>
> Cc: Dave Hansen <[email protected]>
> Cc: Mel Gorman <[email protected]>
> ---
> mm/page_alloc.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> index e29912e..30e359c 100644
> --- a/mm/page_alloc.c
> +++ b/mm/page_alloc.c
> @@ -5981,7 +5981,6 @@ void __meminit zone_pcp_update(struct zone *zone)
> }
> #endif
>
> -#ifdef CONFIG_MEMORY_HOTREMOVE
> void zone_pcp_reset(struct zone *zone)
> {
> unsigned long flags;
> @@ -6001,6 +6000,7 @@ void zone_pcp_reset(struct zone *zone)
> local_irq_restore(flags);
> }
>
> +#ifdef CONFIG_MEMORY_HOTREMOVE
> /*
> * All pages in the range must be isolated before calling this.
> */

This patch looks find to me.

Reviewed-by: Wen Congyang <[email protected]>

2012-10-23 10:21:33

by Michal Hocko

[permalink] [raw]
Subject: Re: [PATCH] mm: make zone_pcp_reset independ on MEMORY_HOTREMOVE

On Tue 23-10-12 18:14:28, Wen Congyang wrote:
> At 10/23/2012 05:37 PM, Michal Hocko Wrote:
> > 340175b7 (mm/hotplug: free zone->pageset when a zone becomes empty)
> > introduced zone_pcp_reset and hided it inside CONFIG_MEMORY_HOTREMOVE.
> > The function is since 506e5fb7 (memory-hotplug: allocate zone's pcp
> > before onlining pages) called also called from online_pages which
>
> This patch is still in -mm tree, and I have received a report from
> Liu Yuanhan.

Yes you are right. I will resend it and ask Andrew to fold it into the
offending patch. Thanks for catching that!

> > is called outside CONFIG_MEMORY_HOTREMOVE which causes a linkage error.
> >
> > The function, although not used outside of MEMORY_{HOTPLUT,HOTREMOVE},
> > seems like universal enough so let's keep it at its current location
> > and only remove the HOTREMOVE guard.
> >
> > Signed-off-by: Michal Hocko <[email protected]>
> > Cc: David Rientjes <[email protected]>
> > Cc: Jiang Liu <[email protected]>
> > Cc: Len Brown <[email protected]>
> > Cc: Benjamin Herrenschmidt <[email protected]>
> > Cc: Paul Mackerras <[email protected]>
> > Cc: Christoph Lameter <[email protected]>
> > Cc: Minchan Kim <[email protected]>
> > Cc: KOSAKI Motohiro <[email protected]>
> > Cc: Yasuaki Ishimatsu <[email protected]>
> > Cc: Dave Hansen <[email protected]>
> > Cc: Mel Gorman <[email protected]>
> > ---
> > mm/page_alloc.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> > index e29912e..30e359c 100644
> > --- a/mm/page_alloc.c
> > +++ b/mm/page_alloc.c
> > @@ -5981,7 +5981,6 @@ void __meminit zone_pcp_update(struct zone *zone)
> > }
> > #endif
> >
> > -#ifdef CONFIG_MEMORY_HOTREMOVE
> > void zone_pcp_reset(struct zone *zone)
> > {
> > unsigned long flags;
> > @@ -6001,6 +6000,7 @@ void zone_pcp_reset(struct zone *zone)
> > local_irq_restore(flags);
> > }
> >
> > +#ifdef CONFIG_MEMORY_HOTREMOVE
> > /*
> > * All pages in the range must be isolated before calling this.
> > */
>
> This patch looks find to me.
>
> Reviewed-by: Wen Congyang <[email protected]>
>

--
Michal Hocko
SUSE Labs

2012-10-23 10:34:47

by Yasuaki Ishimatsu

[permalink] [raw]
Subject: Re: [PATCH] mm: make zone_pcp_reset independ on MEMORY_HOTREMOVE

2012/10/23 18:37, Michal Hocko wrote:
> 340175b7 (mm/hotplug: free zone->pageset when a zone becomes empty)
> introduced zone_pcp_reset and hided it inside CONFIG_MEMORY_HOTREMOVE.
> The function is since 506e5fb7 (memory-hotplug: allocate zone's pcp
> before onlining pages) called also called from online_pages which
> is called outside CONFIG_MEMORY_HOTREMOVE which causes a linkage error.
>
> The function, although not used outside of MEMORY_{HOTPLUT,HOTREMOVE},
> seems like universal enough so let's keep it at its current location
> and only remove the HOTREMOVE guard.
>
> Signed-off-by: Michal Hocko <[email protected]>
> Cc: David Rientjes <[email protected]>
> Cc: Jiang Liu <[email protected]>
> Cc: Len Brown <[email protected]>
> Cc: Benjamin Herrenschmidt <[email protected]>
> Cc: Paul Mackerras <[email protected]>
> Cc: Christoph Lameter <[email protected]>
> Cc: Minchan Kim <[email protected]>
> Cc: KOSAKI Motohiro <[email protected]>
> Cc: Yasuaki Ishimatsu <[email protected]>

Looks goot to me.

Reviewd-by: Yasuaki Ishimatsu <[email protected]>

Thanks,
Yasuki Ishimatsu

> Cc: Dave Hansen <[email protected]>
> Cc: Mel Gorman <[email protected]>
> ---
> mm/page_alloc.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> index e29912e..30e359c 100644
> --- a/mm/page_alloc.c
> +++ b/mm/page_alloc.c
> @@ -5981,7 +5981,6 @@ void __meminit zone_pcp_update(struct zone *zone)
> }
> #endif
>
> -#ifdef CONFIG_MEMORY_HOTREMOVE
> void zone_pcp_reset(struct zone *zone)
> {
> unsigned long flags;
> @@ -6001,6 +6000,7 @@ void zone_pcp_reset(struct zone *zone)
> local_irq_restore(flags);
> }
>
> +#ifdef CONFIG_MEMORY_HOTREMOVE
> /*
> * All pages in the range must be isolated before calling this.
> */
>