Re: [PATCH] Mark the correct zone as full when scanning zonelists

From: KAMEZAWA Hiroyuki
Date: Thu Sep 11 2008 - 21:05:39 EST


On Thu, 11 Sep 2008 14:41:55 -0700
Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> wrote:

> On Thu, 11 Sep 2008 22:25:51 +0100
> Mel Gorman <mel@xxxxxxxxx> wrote:
>
> > The for_each_zone_zonelist() uses a struct zoneref *z cursor when scanning
> > zonelists to keep track of where in the zonelist it is. The zoneref that
> > is returned corresponds to the the next zone that is to be scanned, not
> > the current one as it originally thought of as an opaque list.
> >
> > When the page allocator is scanning a zonelist, it marks zones that it
> > temporarily full zones to eliminate near-future scanning attempts.
>
> That sentence needs help.
>
Hmm, should we rename

next_zone_zonelist() => get_appropriate_zone_from_list()

or some better name ?

> > It uses
> > the zoneref for the marking and consequently the incorrect zone gets marked
> > full. This leads to a suitable zone being skipped in the mistaken belief
> > it is full. This patch corrects the problem by changing zoneref to be the
> > current zone being scanned instead of the next one.
>
> Applicable to 2.6.26 as well, yes?
>
Maybe yes. But it's better to show where this patch really fixes.
Is this a fix for misunderstanding usage of zoneref in
mm/page_alloc.c::get_page_from_freelist() ?

== here ?==
if (NUMA_BUILD)
zlc_mark_zone_full(zonelist, z);

Thanks,
-Kame

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/