target: transport_subsystem_check_init cleanups
Nicholas Bellinger [Sat, 22 Oct 2011 08:03:54 +0000 (01:03 -0700)]
Remove the now unnecessary extra call to transport_subsystem_check_init() in
target_core_register_fabric(), and also merge transport_subsystem_reqmods()
directly into transport_subsystem_check_init().

Reported-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>

drivers/target/target_core_configfs.c
drivers/target/target_core_transport.c
include/target/target_core_transport.h

index f37e2b9..1511a2f 100644 (file)
@@ -132,14 +132,6 @@ static struct config_group *target_core_register_fabric(
        pr_debug("Target_Core_ConfigFS: REGISTER -> group: %p name:"
                        " %s\n", group, name);
        /*
-        * Ensure that TCM subsystem plugins are loaded at this point for
-        * using the RAMDISK_DR virtual LUN 0 and all other struct se_port
-        * LUN symlinks.
-        */
-       if (transport_subsystem_check_init() < 0)
-               return ERR_PTR(-EINVAL);
-
-       /*
         * Below are some hardcoded request_module() calls to automatically
         * local fabric modules when the following is called:
         *
@@ -3079,8 +3071,7 @@ static struct config_group *target_core_call_addhbatotarget(
        /*
         * Load up TCM subsystem plugins if they have not already been loaded.
         */
-       if (transport_subsystem_check_init() < 0)
-               return ERR_PTR(-EINVAL);
+       transport_subsystem_check_init();
 
        hba = core_alloc_hba(se_plugin_str, plugin_dep_id, 0);
        if (IS_ERR(hba))
index 774ff00..06305be 100644 (file)
@@ -234,10 +234,13 @@ void transport_init_queue_obj(struct se_queue_obj *qobj)
 }
 EXPORT_SYMBOL(transport_init_queue_obj);
 
-static int transport_subsystem_reqmods(void)
+void transport_subsystem_check_init(void)
 {
        int ret;
 
+       if (sub_api_initialized)
+               return;
+
        ret = request_module("target_core_iblock");
        if (ret != 0)
                pr_err("Unable to load target_core_iblock\n");
@@ -254,24 +257,8 @@ static int transport_subsystem_reqmods(void)
        if (ret != 0)
                pr_err("Unable to load target_core_stgt\n");
 
-       return 0;
-}
-
-int transport_subsystem_check_init(void)
-{
-       int ret;
-
-       if (sub_api_initialized)
-               return 0;
-       /*
-        * Request the loading of known TCM subsystem plugins..
-        */
-       ret = transport_subsystem_reqmods();
-       if (ret < 0)
-               return ret;
-
        sub_api_initialized = 1;
-       return 0;
+       return;
 }
 
 struct se_session *transport_init_session(void)
index c8538c5..32c5863 100644 (file)
@@ -113,7 +113,7 @@ extern int init_se_kmem_caches(void);
 extern void release_se_kmem_caches(void);
 extern u32 scsi_get_new_index(scsi_index_t);
 extern void transport_init_queue_obj(struct se_queue_obj *);
-extern int transport_subsystem_check_init(void);
+extern void transport_subsystem_check_init(void);
 extern int transport_subsystem_register(struct se_subsystem_api *);
 extern void transport_subsystem_release(struct se_subsystem_api *);
 extern void transport_load_plugins(void);