diff -up linux-2.6.18-308.1.1.0.1.el5.x86_64/fs/jbd/journal.c.orig linux-2.6.18-308.1.1.0.1.el5.x86_64/fs/jbd/journal.c
--- linux-2.6.18-308.1.1.0.1.el5.x86_64/fs/jbd/journal.c.orig	2012-04-26 15:54:07.000000000 +0800
+++ linux-2.6.18-308.1.1.0.1.el5.x86_64/fs/jbd/journal.c	2012-04-26 15:56:31.000000000 +0800
@@ -1653,13 +1653,13 @@ void * __jbd_kmalloc (const char *where,
  * cause bh to cross page boundary.
  */
 
-#define JBD_MAX_SLABS 5
-#define JBD_SLAB_INDEX(size)  (size >> 11)
+#define JBD_MAX_SLABS 9
+#define JBD_SLAB_INDEX(size)  (size >> 10)
 
 static DECLARE_RWSEM(jbd_slab_lock); /* protect jbd_slab[] */
 static kmem_cache_t *jbd_slab[JBD_MAX_SLABS];
 static const char *jbd_slab_names[JBD_MAX_SLABS] = {
-	"jbd_1k", "jbd_2k", "jbd_4k", NULL, "jbd_8k"
+	"jbd_512B", "jbd_1k", "jbd_2k", NULL, "jbd_4k", NULL, NULL, NULL, "jbd_8k"
 };
 
 static void journal_destroy_jbd_slabs(void)
