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;
