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

Reply via email to