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

From: Michal Hocko
Date: Wed Mar 13 2019 - 04:01:09 EST


On Wed 13-03-19 08:52:16, Oscar Salvador wrote:
> 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.

Yup. We need to take the zone lock.

> So, why not make start_isolate_page_range to return the actual number of isolated
> pageblocks?

That makes more sense indeed.

--
Michal Hocko
SUSE Labs