* start_isolate_page_range() question/offline_pages() bug ?
@ 2007-11-01 19:19 Badari Pulavarty
2007-11-02 4:44 ` KAMEZAWA Hiroyuki
2007-11-02 7:58 ` KAMEZAWA Hiroyuki
0 siblings, 2 replies; 4+ messages in thread
From: Badari Pulavarty @ 2007-11-01 19:19 UTC (permalink / raw)
To: KAMEZAWA Hiroyuki; +Cc: linux-mm
Hi KAME,
While testing hotplug memory remove on x86_64, found an issue.
offline_pages()
{
...
/* set above range as isolated */
ret = start_isolate_page_range(start_pfn, end_pfn);
... does all the work and successful ...
/* reset pagetype flags */
start_isolate_page_range(start_pfn, end_pfn);
/* removal success */
}
As you can see it calls, start_isolate_page_range() again at
the end. Why ? I am assuming that, to clear MIGRATE_ISOLATE
type for those pages we marked earlier. Isn't it ? But its
wrong. The pages are already set MIGRATE_ISOLATE and it
will end up clearing ONLY the first page in the pageblock.
Shouldn't we clear MIGRATE_ISOLATE for all the pages ?
I see this issue on x86-64, because /sysfs memory block
is 128MB, but pageblock_nr_pages = 512 (2MB).
I can reproduce the problem easily.. by doing ..
echo offline > state
echo online > state
echo offline > state <--- this one will fail
echo offline > state <-- fail
echo offline > state <-- fail
Everytime we do "offline" it clears first page in 2MB
section as part of undo :(
Here is the debug:
memory offlining 58000 to 60000 started
Offlined Pages 32768
memory offlining 58000 to 60000 started
isolate failed for pfn 58200 migratetype 4
memory offlining 58000 to 60000 started
isolate failed for pfn 58400 migratetype 4
memory offlining 58000 to 60000 started
isolate failed for pfn 58600 migratetype 4
memory offlining 58000 to 60000 started
isolate failed for pfn 58800 migratetype 4
Thanks,
Badari
--
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] 4+ messages in thread
* Re: start_isolate_page_range() question/offline_pages() bug ?
2007-11-01 19:19 start_isolate_page_range() question/offline_pages() bug ? Badari Pulavarty
@ 2007-11-02 4:44 ` KAMEZAWA Hiroyuki
2007-11-02 7:58 ` KAMEZAWA Hiroyuki
1 sibling, 0 replies; 4+ messages in thread
From: KAMEZAWA Hiroyuki @ 2007-11-02 4:44 UTC (permalink / raw)
To: Badari Pulavarty; +Cc: linux-mm
Hi, Badari. Thank you for digging.
On Thu, 01 Nov 2007 11:19:28 -0800
Badari Pulavarty <pbadari@us.ibm.com> wrote:
> Hi KAME,
>
> While testing hotplug memory remove on x86_64, found an issue.
>
> offline_pages()
> {
>
> ...
>
> /* set above range as isolated */
> ret = start_isolate_page_range(start_pfn, end_pfn);
>
>
> ... does all the work and successful ...
>
> /* reset pagetype flags */
> start_isolate_page_range(start_pfn, end_pfn);
> /* removal success */
> }
>
> As you can see it calls, start_isolate_page_range() again at
> the end. Why ? I am assuming that, to clear MIGRATE_ISOLATE
> type for those pages we marked earlier. Isn't it ? But its
> wrong. The pages are already set MIGRATE_ISOLATE and it
> will end up clearing ONLY the first page in the pageblock.
> Shouldn't we clear MIGRATE_ISOLATE for all the pages ?
>
Hmm.. Maybe I wanted to call undo_isolate_page_range()
> I see this issue on x86-64, because /sysfs memory block
> is 128MB, but pageblock_nr_pages = 512 (2MB).
>
Hmm, do you have patches for x86_64 ?
> I can reproduce the problem easily.. by doing ..
>
> echo offline > state
> echo online > state
> echo offline > state <--- this one will fail
> echo offline > state <-- fail
> echo offline > state <-- fail
>
> Everytime we do "offline" it clears first page in 2MB
> section as part of undo :(
>
Hmmmm.... could you share your x86_64 patch ?
I'll dig more. below is my patch at this point.
Index: devel-2.6.23-mm1/mm/memory_hotplug.c
===================================================================
--- devel-2.6.23-mm1.orig/mm/memory_hotplug.c
+++ devel-2.6.23-mm1/mm/memory_hotplug.c
@@ -536,8 +536,8 @@ repeat:
/* Ok, all of our target is islaoted.
We cannot do rollback at this point. */
offline_isolated_pages(start_pfn, end_pfn);
- /* reset pagetype flags */
- start_isolate_page_range(start_pfn, end_pfn);
+ /* reset pagetype flags and makes migrate type to be MOVABLE */
+ undo_isolate_page_range(start_pfn, end_pfn);
/* removal success */
zone = page_zone(pfn_to_page(start_pfn));
zone->present_pages -= offlined_pages;
Index: devel-2.6.23-mm1/mm/page_isolation.c
===================================================================
--- devel-2.6.23-mm1.orig/mm/page_isolation.c
+++ devel-2.6.23-mm1/mm/page_isolation.c
@@ -55,7 +55,7 @@ start_isolate_page_range(unsigned long s
return 0;
undo:
for (pfn = start_pfn;
- pfn <= undo_pfn;
+ pfn < undo_pfn;
pfn += pageblock_nr_pages)
unset_migratetype_isolate(pfn_to_page(pfn));
--
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] 4+ messages in thread
* Re: start_isolate_page_range() question/offline_pages() bug ?
2007-11-01 19:19 start_isolate_page_range() question/offline_pages() bug ? Badari Pulavarty
2007-11-02 4:44 ` KAMEZAWA Hiroyuki
@ 2007-11-02 7:58 ` KAMEZAWA Hiroyuki
2007-11-02 16:06 ` Badari Pulavarty
1 sibling, 1 reply; 4+ messages in thread
From: KAMEZAWA Hiroyuki @ 2007-11-02 7:58 UTC (permalink / raw)
To: Badari Pulavarty; +Cc: linux-mm, Andrew Morton, GOTO
Hi, Badari, and Andrew
This is bugfix for memory hotremove.
But we'll need x86_64 memory hotremove patch set to test this easily.
Then, I'd like to schedule this with Goto's ioresource patch and
Badari's fix and this one and x86_64 memory hotremove support patch
against the next -mm.
This is quick fix. Thank you, Badari.
Regards,
-Kame
==
We should unset migrate type "ISOLATE" when we successfully removed
memory. But current code has BUG and cannot works well.
This patch also includes bugfix? to change get_pageblock_flags to
get_pageblock_migratetype().
Tested with x86_64 memory hotremove (private) patch and works well.
(It will be posted if things settled.)
Thanks to Badari Pulavarty for finding this.
Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
mm/memory_hotplug.c | 4 ++--
mm/page_isolation.c | 6 +++---
2 files changed, 5 insertions(+), 5 deletions(-)
Index: devel-2.6.23-mm1/mm/memory_hotplug.c
===================================================================
--- devel-2.6.23-mm1.orig/mm/memory_hotplug.c
+++ devel-2.6.23-mm1/mm/memory_hotplug.c
@@ -536,8 +536,8 @@ repeat:
/* Ok, all of our target is islaoted.
We cannot do rollback at this point. */
offline_isolated_pages(start_pfn, end_pfn);
- /* reset pagetype flags */
- start_isolate_page_range(start_pfn, end_pfn);
+ /* reset pagetype flags and makes migrate type to be MOVABLE */
+ undo_isolate_page_range(start_pfn, end_pfn);
/* removal success */
zone = page_zone(pfn_to_page(start_pfn));
zone->present_pages -= offlined_pages;
Index: devel-2.6.23-mm1/mm/page_isolation.c
===================================================================
--- devel-2.6.23-mm1.orig/mm/page_isolation.c
+++ devel-2.6.23-mm1/mm/page_isolation.c
@@ -55,7 +55,7 @@ start_isolate_page_range(unsigned long s
return 0;
undo:
for (pfn = start_pfn;
- pfn <= undo_pfn;
+ pfn < undo_pfn;
pfn += pageblock_nr_pages)
unset_migratetype_isolate(pfn_to_page(pfn));
@@ -76,7 +76,7 @@ undo_isolate_page_range(unsigned long st
pfn < end_pfn;
pfn += pageblock_nr_pages) {
page = __first_valid_page(pfn, pageblock_nr_pages);
- if (!page || get_pageblock_flags(page) != MIGRATE_ISOLATE)
+ if (!page || get_pageblock_migratetype(page) != MIGRATE_ISOLATE)
continue;
unset_migratetype_isolate(page);
}
@@ -126,7 +126,7 @@ int test_pages_isolated(unsigned long st
*/
for (pfn = start_pfn; pfn < end_pfn; pfn += pageblock_nr_pages) {
page = __first_valid_page(pfn, pageblock_nr_pages);
- if (page && get_pageblock_flags(page) != MIGRATE_ISOLATE)
+ if (page && get_pageblock_migratetype(page) != MIGRATE_ISOLATE)
break;
}
if (pfn < end_pfn)
--
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] 4+ messages in thread
* Re: start_isolate_page_range() question/offline_pages() bug ?
2007-11-02 7:58 ` KAMEZAWA Hiroyuki
@ 2007-11-02 16:06 ` Badari Pulavarty
0 siblings, 0 replies; 4+ messages in thread
From: Badari Pulavarty @ 2007-11-02 16:06 UTC (permalink / raw)
To: KAMEZAWA Hiroyuki; +Cc: linux-mm, Andrew Morton, GOTO
On Fri, 2007-11-02 at 16:58 +0900, KAMEZAWA Hiroyuki wrote:
> Hi, Badari, and Andrew
>
> This is bugfix for memory hotremove.
>
> But we'll need x86_64 memory hotremove patch set to test this easily.
>
> Then, I'd like to schedule this with Goto's ioresource patch and
> Badari's fix and this one and x86_64 memory hotremove support patch
> against the next -mm.
>
> This is quick fix. Thank you, Badari.
Yes. These are needed for testing x86-64 (which we don't have support
for). We can schedule these for next -mm.
I am okay with your patch & Goto's patch. Please include my changes
also.
Acked-by: Badari Pulavarty <pbadari@us.ibm.com>
Thanks,
Badari
>
> We should unset migrate type "ISOLATE" when we successfully removed
> memory. But current code has BUG and cannot works well.
>
> This patch also includes bugfix? to change get_pageblock_flags to
> get_pageblock_migratetype().
>
> Tested with x86_64 memory hotremove (private) patch and works well.
> (It will be posted if things settled.)
>
> Thanks to Badari Pulavarty for finding this.
>
> Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
>
>
> mm/memory_hotplug.c | 4 ++--
> mm/page_isolation.c | 6 +++---
> 2 files changed, 5 insertions(+), 5 deletions(-)
>
> Index: devel-2.6.23-mm1/mm/memory_hotplug.c
> ===================================================================
> --- devel-2.6.23-mm1.orig/mm/memory_hotplug.c
> +++ devel-2.6.23-mm1/mm/memory_hotplug.c
> @@ -536,8 +536,8 @@ repeat:
> /* Ok, all of our target is islaoted.
> We cannot do rollback at this point. */
> offline_isolated_pages(start_pfn, end_pfn);
> - /* reset pagetype flags */
> - start_isolate_page_range(start_pfn, end_pfn);
> + /* reset pagetype flags and makes migrate type to be MOVABLE */
> + undo_isolate_page_range(start_pfn, end_pfn);
> /* removal success */
> zone = page_zone(pfn_to_page(start_pfn));
> zone->present_pages -= offlined_pages;
> Index: devel-2.6.23-mm1/mm/page_isolation.c
> ===================================================================
> --- devel-2.6.23-mm1.orig/mm/page_isolation.c
> +++ devel-2.6.23-mm1/mm/page_isolation.c
> @@ -55,7 +55,7 @@ start_isolate_page_range(unsigned long s
> return 0;
> undo:
> for (pfn = start_pfn;
> - pfn <= undo_pfn;
> + pfn < undo_pfn;
> pfn += pageblock_nr_pages)
> unset_migratetype_isolate(pfn_to_page(pfn));
>
> @@ -76,7 +76,7 @@ undo_isolate_page_range(unsigned long st
> pfn < end_pfn;
> pfn += pageblock_nr_pages) {
> page = __first_valid_page(pfn, pageblock_nr_pages);
> - if (!page || get_pageblock_flags(page) != MIGRATE_ISOLATE)
> + if (!page || get_pageblock_migratetype(page) != MIGRATE_ISOLATE)
> continue;
> unset_migratetype_isolate(page);
> }
> @@ -126,7 +126,7 @@ int test_pages_isolated(unsigned long st
> */
> for (pfn = start_pfn; pfn < end_pfn; pfn += pageblock_nr_pages) {
> page = __first_valid_page(pfn, pageblock_nr_pages);
> - if (page && get_pageblock_flags(page) != MIGRATE_ISOLATE)
> + if (page && get_pageblock_migratetype(page) != MIGRATE_ISOLATE)
> break;
> }
> if (pfn < end_pfn)
>
--
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] 4+ messages in thread
end of thread, other threads:[~2007-11-02 14:02 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-11-01 19:19 start_isolate_page_range() question/offline_pages() bug ? Badari Pulavarty
2007-11-02 4:44 ` KAMEZAWA Hiroyuki
2007-11-02 7:58 ` KAMEZAWA Hiroyuki
2007-11-02 16:06 ` Badari Pulavarty
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox