Re: [PATCH v2 4/4] mm: make unreserve highatomic functions reliable

From: Minchan Kim
Date: Wed Oct 12 2016 - 04:04:06 EST


On Wed, Oct 12, 2016 at 09:33:28AM +0200, Michal Hocko wrote:
> On Wed 12-10-16 14:33:36, Minchan Kim wrote:
> [...]
> > @@ -2138,8 +2146,10 @@ static bool unreserve_highatomic_pageblock(const struct alloc_context *ac)
> > */
> > set_pageblock_migratetype(page, ac->migratetype);
> > ret = move_freepages_block(zone, page, ac->migratetype);
> > - spin_unlock_irqrestore(&zone->lock, flags);
> > - return ret;
> > + if (!drain && ret) {
> > + spin_unlock_irqrestore(&zone->lock, flags);
> > + return ret;
> > + }
>
> I've already mentioned that during the previous discussion. This sounds

Yeb, we did but I sent wrong version in my git tree. :(

> overly aggressive to me. Why do we want to drain the whole reserve and
> risk that we won't be able to build up a new one after OOM. Doing one
> block at the time should be sufficient IMHO.

I will resend with updating with every reveiw points.

Thanks.