Index: linux-2.6.21-rc3/include/linux/quicklist.h =================================================================== --- linux-2.6.21-rc3.orig/include/linux/quicklist.h 2007-03-10 11:21:04.000000000 -0800 +++ linux-2.6.21-rc3/include/linux/quicklist.h 2007-03-10 11:24:27.000000000 -0800 @@ -23,10 +23,12 @@ static inline void *quicklist_alloc(int __get_cpu_var(quicklist)[nr] = *p; p[0] = NULL; __get_cpu_var(quicklist_size)[nr]--; + printk(KERN_ERR "quicklist_alloc quicklist %p\n", p); } else { p = (void *)__get_free_page(flags | __GFP_ZERO); if (ctor && p) ctor(p); + printk(KERN_ERR "quicklist_alloc direct %p\n", p); } put_cpu(); return p; @@ -39,11 +41,13 @@ static inline void quicklist_free(int nr void **p = pp; if (unlikely(nid != numa_node_id())) { + printk(KERN_ERR "quicklist_free direct %p\n", p); if (dtor) dtor(p); free_page((unsigned long)p); return; } + printk(KERN_ERR "quicklist_free quicklist %p", p); p[0] = get_cpu_var(quicklist)[nr]; __get_cpu_var(quicklist)[nr] = p; Index: linux-2.6.21-rc3/mm/quicklist.c =================================================================== --- linux-2.6.21-rc3.orig/mm/quicklist.c 2007-03-10 11:18:51.000000000 -0800 +++ linux-2.6.21-rc3/mm/quicklist.c 2007-03-10 11:20:57.000000000 -0800 @@ -53,7 +53,11 @@ void quicklist_check(void) pages_to_free = min_pages_to_free(q); while (pages_to_free > 0) { - free_page((unsigned long)quicklist_alloc(q, 0, NULL)); + void *p = quicklist_alloc(q, 0, NULL); + + printk(KERN_ERR "quicklist_check %p free. Total size=%d\n", + p, quicklist_total_size()); + free_page((unsigned long)p); pages_to_free--; } }