diff -Naurp -X /home/jbarnes/dontdiff 210-nr-free-pages-fix.patch/fs/dcache.c 220-hash-table-fixes.patch/fs/dcache.c --- 210-nr-free-pages-fix.patch/fs/dcache.c Tue Dec 30 16:38:57 2003 +++ 220-hash-table-fixes.patch/fs/dcache.c Tue Dec 30 16:40:04 2003 @@ -1530,9 +1530,8 @@ out: static void __init dcache_init(unsigned long mempages) { struct hlist_head *d; - unsigned long order; unsigned int nr_hash; - int i; + int i, order; /* * A constructor could be added for stable state like the lists, @@ -1552,12 +1551,17 @@ static void __init dcache_init(unsigned set_shrinker(DEFAULT_SEEKS, shrink_dcache_memory); +#if 0 #if PAGE_SHIFT < 13 mempages >>= (13 - PAGE_SHIFT); #endif mempages *= sizeof(struct hlist_head); for (order = 0; ((1UL << order) << PAGE_SHIFT) < mempages; order++) ; +#endif + mempages >>= (23 - (PAGE_SHIFT - 1)); + order = max(2, fls(mempages)); + order = min(12, order); do { unsigned long tmp; @@ -1575,7 +1579,7 @@ static void __init dcache_init(unsigned __get_free_pages(GFP_ATOMIC, order); } while (dentry_hashtable == NULL && --order >= 0); - printk(KERN_INFO "Dentry cache hash table entries: %d (order: %ld, %ld bytes)\n", + printk(KERN_INFO "Dentry cache hash table entries: %d (order: %d, %ld bytes)\n", nr_hash, order, (PAGE_SIZE << order)); if (!dentry_hashtable) diff -Naurp -X /home/jbarnes/dontdiff 210-nr-free-pages-fix.patch/fs/inode.c 220-hash-table-fixes.patch/fs/inode.c --- 210-nr-free-pages-fix.patch/fs/inode.c Wed Dec 17 18:59:55 2003 +++ 220-hash-table-fixes.patch/fs/inode.c Tue Dec 30 16:40:04 2003 @@ -1333,17 +1333,21 @@ void wake_up_inode(struct inode *inode) void __init inode_init(unsigned long mempages) { struct hlist_head *head; - unsigned long order; unsigned int nr_hash; - int i; + int i, order; for (i = 0; i < ARRAY_SIZE(i_wait_queue_heads); i++) init_waitqueue_head(&i_wait_queue_heads[i].wqh); +#if 0 mempages >>= (14 - PAGE_SHIFT); mempages *= sizeof(struct hlist_head); for (order = 0; ((1UL << order) << PAGE_SHIFT) < mempages; order++) ; +#endif + mempages >>= (23 - (PAGE_SHIFT - 1)); + order = max(2, fls(mempages)); + order = min(12, order); do { unsigned long tmp;