]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - fs/ocfs2/dlm/dlmfs.c
Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6
[linux-2.6-omap-h63xx.git] / fs / ocfs2 / dlm / dlmfs.c
index de952eba29a92fd3aa35240f6ebcaca83feded43..6639baab079856af2d6ff3d336450feb7303db8b 100644 (file)
@@ -42,7 +42,6 @@
 #include <linux/highmem.h>
 #include <linux/init.h>
 #include <linux/string.h>
-#include <linux/smp_lock.h>
 #include <linux/backing-dev.h>
 
 #include <asm/uaccess.h>
@@ -256,20 +255,16 @@ static ssize_t dlmfs_file_write(struct file *filp,
        return writelen;
 }
 
-static void dlmfs_init_once(void *foo,
-                           struct kmem_cache *cachep,
-                           unsigned long flags)
+static void dlmfs_init_once(struct kmem_cache *cachep,
+                           void *foo)
 {
        struct dlmfs_inode_private *ip =
                (struct dlmfs_inode_private *) foo;
 
-       if ((flags & (SLAB_CTOR_VERIFY|SLAB_CTOR_CONSTRUCTOR)) ==
-           SLAB_CTOR_CONSTRUCTOR) {
-               ip->ip_dlm = NULL;
-               ip->ip_parent = NULL;
+       ip->ip_dlm = NULL;
+       ip->ip_parent = NULL;
 
-               inode_init_once(&ip->ip_vfs_inode);
-       }
+       inode_init_once(&ip->ip_vfs_inode);
 }
 
 static struct inode *dlmfs_alloc_inode(struct super_block *sb)
@@ -592,13 +587,17 @@ static int __init init_dlmfs_fs(void)
 
        dlmfs_print_version();
 
+       status = bdi_init(&dlmfs_backing_dev_info);
+       if (status)
+               return status;
+
        dlmfs_inode_cache = kmem_cache_create("dlmfs_inode_cache",
                                sizeof(struct dlmfs_inode_private),
                                0, (SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT|
                                        SLAB_MEM_SPREAD),
-                               dlmfs_init_once, NULL);
+                               dlmfs_init_once);
        if (!dlmfs_inode_cache)
-               return -ENOMEM;
+               goto bail;
        cleanup_inode = 1;
 
        user_dlm_worker = create_singlethread_workqueue("user_dlm");
@@ -615,6 +614,7 @@ bail:
                        kmem_cache_destroy(dlmfs_inode_cache);
                if (cleanup_worker)
                        destroy_workqueue(user_dlm_worker);
+               bdi_destroy(&dlmfs_backing_dev_info);
        } else
                printk("OCFS2 User DLM kernel interface loaded\n");
        return status;
@@ -628,6 +628,8 @@ static void __exit exit_dlmfs_fs(void)
        destroy_workqueue(user_dlm_worker);
 
        kmem_cache_destroy(dlmfs_inode_cache);
+
+       bdi_destroy(&dlmfs_backing_dev_info);
 }
 
 MODULE_AUTHOR("Oracle");