patch-2_6_7-vs1_9_1_12
[linux-2.6.git] / fs / block_dev.c
index 1b43058..f308981 100644 (file)
@@ -238,7 +238,10 @@ static struct inode *bdev_alloc_inode(struct super_block *sb)
 
 static void bdev_destroy_inode(struct inode *inode)
 {
-       kmem_cache_free(bdev_cachep, BDEV_I(inode));
+       struct bdev_inode *bdi = BDEV_I(inode);
+
+       bdi->bdev.bd_inode_backing_dev_info = NULL;
+       kmem_cache_free(bdev_cachep, bdi);
 }
 
 static void init_once(void * foo, kmem_cache_t * cachep, unsigned long flags)
@@ -303,14 +306,9 @@ struct super_block *blockdev_superblock;
 void __init bdev_cache_init(void)
 {
        int err;
-       bdev_cachep = kmem_cache_create("bdev_cache",
-                                       sizeof(struct bdev_inode),
-                                       0,
-                                       SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT,
-                                       init_once,
-                                       NULL);
-       if (!bdev_cachep)
-               panic("Cannot create bdev_cache SLAB cache");
+       bdev_cachep = kmem_cache_create("bdev_cache", sizeof(struct bdev_inode),
+                       0, SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT|SLAB_PANIC,
+                       init_once, NULL);
        err = register_filesystem(&bd_type);
        if (err)
                panic("Cannot register bdev pseudo-fs");