Re: bind_zonelist() - are we definitely sizing this correctly?

From: Mel Gorman
Date: Thu Jul 26 2007 - 10:26:01 EST


On (26/07/07 15:17), Mel Gorman didst pronounce:
> I was looking closer at bind_zonelist() and it has the following snippet
>
> struct zonelist *zl;
> int num, max, nd;
> enum zone_type k;
>
> max = 1 + MAX_NR_ZONES * nodes_weight(*nodes);
> max++; /* space for zlcache_ptr (see mmzone.h) */
> zl = kmalloc(sizeof(struct zone *) * max, GFP_KERNEL);
> if (!zl)
> return ERR_PTR(-ENOMEM);
>
> That set off alarm bells because we are allocating based on the size of a
> zone, not the size of the zonelist.
>

Never mind me, I'm a tool as it's now semi-obvious. When statically defined,
zlcache_ptr is pointing to something useful as it's setup at boottime. When
dynamically allocated in bind_zonelist, the zlcache_ptr is set to NULL so
it never gets used by zlc_setup().

This could have done with a comment.

--
Mel Gorman
Part-time Phd Student Linux Technology Center
University of Limerick IBM Dublin Software Lab
-
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/