On (06/05/08 14:58), James Bottomley didst pronounce:
Yes, that appears to be the original intention.
No, but you filter the one list based on the highest zone that can be
accesssed.
To be fair, a few weeks ago you would have been right. Since then zonelists
have changed though so that there are only two zonelists per node in
git-latest. One which is for general allocations and one for GFP_THISNODE. The
zonelist is filtered based on the GFP flags, hence the iterator. I copied the
parisc code with the compile-fix into mm/page_alloc.c and called it just to
be sure and with qemu, I see
[ 0.628960] Zone list for zone 0 on node 0: [0/DMA]
[ 0.628960] Zone list for zone 1 on node 0: [0/Normal] [0/DMA]
[ 0.628960] Zone list for zone 2 on node 0: [0/HighMem] [0/Normal] [0/DMA]
[ 0.628960] Zone list for zone 3 on node 0: [0/Movable] [0/HighMem] [0/Normal] [0/DMA]
which looks right (movablecore was specified hence the existance of the
movable zone).
This would read past the end of the node_zonelists array which is only
MAX_ZONELISTS (2 for CONFIG_NUMA) in size.
--
Mel Gorman
Part-time Phd Student Linux Technology Center
University of Limerick IBM Dublin Software Lab
--