Re: [PATCH] mm/hotplug: fix offline undo_isolate_page_range()

From: Oscar Salvador
Date: Wed Mar 13 2019 - 03:52:21 EST


On Tue, Mar 12, 2019 at 09:42:16PM -0400, Qian Cai wrote:
> +
> + /*
> + * Onlining will reset pagetype flags and makes migrate type
> + * MOVABLE, so just need to decrease the number of isolated
> + * pageblocks zone counter here.
> + */
> + for (pfn = start_pfn; pfn < end_pfn; pfn += pageblock_nr_pages) {
> + int i;
> +
> + for (i = 0; i < pageblock_nr_pages; i++)
> + if (pfn_valid_within(pfn + i)) {
> + zone->nr_isolate_pageblock--;
> + break;
> + }
> + }
> +

I do not really like this.

I first thought about saving the value before entering start_isolate_page_range,
but that could race with alloc_contig_range for instance.
So, why not make start_isolate_page_range to return the actual number of isolated
pageblocks?
Sure, that would mean to change a bit how we threat its return code, but
I think that it is pretty simple.
In that way, we would only have to substract the value start_isolate_page_range
gave us at the end of __offline__pages() to set nr_isolate_pageblock back to
its original value.

--
Oscar Salvador
SUSE L3