orangefs: put register_chrdev immediately before register_filesystem
authorMartin Brandenburg <martin@omnibond.com>
Thu, 17 Mar 2016 17:20:35 +0000 (13:20 -0400)
committerMike Marshall <hubcap@omnibond.com>
Thu, 17 Mar 2016 18:34:10 +0000 (14:34 -0400)
Signed-off-by: Martin Brandenburg <martin@omnibond.com>
Signed-off-by: Mike Marshall <hubcap@omnibond.com>
fs/orangefs/orangefs-mod.c

index 76a1b9765e2334d12ba1e47d977f84e6c3bdf263..6f072a8c0de1732f6c7823fd5b37f81f64156bc4 100644 (file)
@@ -144,21 +144,12 @@ static int __init orangefs_init(void)
        if (ret < 0)
                goto cleanup_op;
 
-       /* Initialize the orangefsdev subsystem. */
-       ret = orangefs_dev_init();
-       if (ret < 0) {
-               gossip_err("%s: could not initialize device subsystem %d!\n",
-                          __func__,
-                          ret);
-               goto cleanup_inode;
-       }
-
        htable_ops_in_progress =
            kcalloc(hash_table_size, sizeof(struct list_head), GFP_KERNEL);
        if (!htable_ops_in_progress) {
                gossip_err("Failed to initialize op hashtable");
                ret = -ENOMEM;
-               goto cleanup_device;
+               goto cleanup_inode;
        }
 
        /* initialize a doubly linked at each hash table index */
@@ -198,6 +189,15 @@ static int __init orangefs_init(void)
        if (ret)
                goto sysfs_init_failed;
 
+       /* Initialize the orangefsdev subsystem. */
+       ret = orangefs_dev_init();
+       if (ret < 0) {
+               gossip_err("%s: could not initialize device subsystem %d!\n",
+                          __func__,
+                          ret);
+               goto cleanup_device;
+       }
+
        ret = register_filesystem(&orangefs_fs_type);
        if (ret == 0) {
                pr_info("orangefs: module version %s loaded\n", ORANGEFS_VERSION);
@@ -207,6 +207,9 @@ static int __init orangefs_init(void)
 
        orangefs_sysfs_exit();
 
+cleanup_device:
+       orangefs_dev_cleanup();
+
 sysfs_init_failed:
 
 kernel_debug_init_failed:
@@ -220,9 +223,6 @@ cleanup_key_table:
 cleanup_progress_table:
        kfree(htable_ops_in_progress);
 
-cleanup_device:
-       orangefs_dev_cleanup();
-
 cleanup_inode:
        orangefs_inode_cache_finalize();