Index: linux-2.6/fs/buffer.c =================================================================== --- linux-2.6.orig/fs/buffer.c 2007-05-03 18:10:22.000000000 -0700 +++ linux-2.6/fs/buffer.c 2007-05-03 18:11:18.000000000 -0700 @@ -2945,9 +2945,12 @@ static void recalc_bh_state(void) struct buffer_head *alloc_buffer_head(gfp_t gfp_flags) { - struct buffer_head *ret = kmem_cache_alloc(bh_cachep, gfp_flags); - if (ret) { - get_cpu_var(bh_accounting).nr++; + struct buffer_head *ret = kmem_cache_zalloc(bh_cachep, gfp_flags); + if (ret) + INIT_LIST_HEAD(&ret->b_assoc_buffers); +} + +get_cpu_var(bh_accounting).nr++; recalc_bh_state(); put_cpu_var(bh_accounting); } @@ -2965,18 +2968,6 @@ void free_buffer_head(struct buffer_head } EXPORT_SYMBOL(free_buffer_head); -static void -init_buffer_head(void *data, struct kmem_cache *cachep, unsigned long flags) -{ - if ((flags & (SLAB_CTOR_VERIFY|SLAB_CTOR_CONSTRUCTOR)) == - SLAB_CTOR_CONSTRUCTOR) { - struct buffer_head * bh = (struct buffer_head *)data; - - memset(bh, 0, sizeof(*bh)); - INIT_LIST_HEAD(&bh->b_assoc_buffers); - } -} - static void buffer_exit_cpu(int cpu) { int i; @@ -3007,8 +2998,7 @@ void __init buffer_init(void) sizeof(struct buffer_head), 0, (SLAB_RECLAIM_ACCOUNT|SLAB_PANIC| SLAB_MEM_SPREAD), - init_buffer_head, - NULL); + NULL, NULL); /* * Limit the bh occupancy to 10% of ZONE_NORMAL