Josef Whiter wrote:
On Fri, Feb 23, 2007 at 04:19:37PM -0500, Dave Anderson wrote:
> Josef Whiter wrote:
>
> > On Fri, Feb 23, 2007 at 04:00:09PM -0500, Dave Anderson wrote:
> > > if you do this with your kernel:
> > >
> > > # gdb vmlinux
> > > ...
> > > (gdb) ptype struct zone
> > >
> > > What do you see?
> > >
> >
> > (gdb) ptype struct zone
> > type = struct zone {
> > long unsigned int pages_min;
> > long unsigned int pages_low;
> > long unsigned int pages_high;
> > long unsigned int lowmem_reserve[3];
> > struct per_cpu_pageset pageset[32];
> > spinlock_t lock;
> > struct free_area free_area[11];
> > struct zone_padding _pad1_;
> > spinlock_t lru_lock;
> > struct list_head active_list;
> > struct list_head inactive_list;
> > long unsigned int nr_scan_active;
> > long unsigned int nr_scan_inactive;
> > long unsigned int pages_scanned;
> > int all_unreclaimable;
> > atomic_t reclaim_in_progress;
> > atomic_long_t vm_stat[14];
> > int prev_priority;
> > struct zone_padding _pad2_;
> > wait_queue_head_t *wait_table;
> > long unsigned int wait_table_hash_nr_entries;
> > long unsigned int wait_table_bits;
> > struct pglist_data *zone_pgdat;
> > long unsigned int zone_start_pfn;
> > long unsigned int spanned_pages;
> > long unsigned int present_pages;
> > const char *name;
> > }
> >
> > It looks like free_pages has been removed altogether.
>
> That appears to be a very recent change -- 2.6.20.1 still has it:
>
> struct zone {
> /* Fields commonly accessed by the page allocator */
> unsigned long free_pages;
> unsigned long pages_min, pages_low, pages_high;
> ...
>
> What version are you using? Are you running 2.6.21-rc1?
>
No, I pulled linus's git tree down maybe a week ago, so its close to -rc1.
Josef
Ok -- it should be easy enough to fix, the free_pages count looks to
have been moved into the zone's embedded vm_stat[] array.
Thanks for reporting this.
Dave