Re: [PATCH] Simplify node/zone field in page->flags

Andrew Morton
2003-12-22T21:10:30Z

Matthew Dobson <colpatch@us.ibm.com> wrote:
>
> Currently we keep track of a pages node & zone in the top 8 bits (on
> 32-bit arches, 10 bits on 64-bit arches) of page->flags. We typically
> compute the field as follows:
> node_num * MAX_NR_ZONES + zone_num = 'nodezone'
>
> It's non-trivial to break this 'nodezone' back into node and zone
> numbers. This patch modifies the way we compute the index to be:
> (node_num << ZONE_SHIFT) | zone_num
>
> This makes it trivial to recover either the node or zone number with a
> simple bitshift. There are many places in the kernel where we do things
> like: page_zone(page)->zone_pgdat->node_id to determine the node a page
> belongs to. With this patch we save several pointer dereferences, and
> it all boils down to shifting some bits.

This conflicts with (is a superset of)

ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.0-test9/2.6.0-test9-mm5/broken-out/ZONE_SHIFT-from-NODES_SHIFT.patch

I suspect you've sent a replacement patch, yes? If Jesse is OK with the
new patch I'll do the swap, thanks.