target: transport_subsystem_check_init cleanups
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>
This commit is contained in:
parent
35e0e75753
commit
dbc5623eb2
|
@ -131,14 +131,6 @@ static struct config_group *target_core_register_fabric(
|
||||||
|
|
||||||
pr_debug("Target_Core_ConfigFS: REGISTER -> group: %p name:"
|
pr_debug("Target_Core_ConfigFS: REGISTER -> group: %p name:"
|
||||||
" %s\n", group, 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
|
* Below are some hardcoded request_module() calls to automatically
|
||||||
* local fabric modules when the following is called:
|
* 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.
|
* Load up TCM subsystem plugins if they have not already been loaded.
|
||||||
*/
|
*/
|
||||||
if (transport_subsystem_check_init() < 0)
|
transport_subsystem_check_init();
|
||||||
return ERR_PTR(-EINVAL);
|
|
||||||
|
|
||||||
hba = core_alloc_hba(se_plugin_str, plugin_dep_id, 0);
|
hba = core_alloc_hba(se_plugin_str, plugin_dep_id, 0);
|
||||||
if (IS_ERR(hba))
|
if (IS_ERR(hba))
|
||||||
|
|
|
@ -234,10 +234,13 @@ void transport_init_queue_obj(struct se_queue_obj *qobj)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(transport_init_queue_obj);
|
EXPORT_SYMBOL(transport_init_queue_obj);
|
||||||
|
|
||||||
static int transport_subsystem_reqmods(void)
|
void transport_subsystem_check_init(void)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
if (sub_api_initialized)
|
||||||
|
return;
|
||||||
|
|
||||||
ret = request_module("target_core_iblock");
|
ret = request_module("target_core_iblock");
|
||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
pr_err("Unable to load target_core_iblock\n");
|
pr_err("Unable to load target_core_iblock\n");
|
||||||
|
@ -254,24 +257,8 @@ static int transport_subsystem_reqmods(void)
|
||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
pr_err("Unable to load target_core_stgt\n");
|
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;
|
sub_api_initialized = 1;
|
||||||
return 0;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct se_session *transport_init_session(void)
|
struct se_session *transport_init_session(void)
|
||||||
|
|
|
@ -113,7 +113,7 @@ extern int init_se_kmem_caches(void);
|
||||||
extern void release_se_kmem_caches(void);
|
extern void release_se_kmem_caches(void);
|
||||||
extern u32 scsi_get_new_index(scsi_index_t);
|
extern u32 scsi_get_new_index(scsi_index_t);
|
||||||
extern void transport_init_queue_obj(struct se_queue_obj *);
|
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 int transport_subsystem_register(struct se_subsystem_api *);
|
||||||
extern void transport_subsystem_release(struct se_subsystem_api *);
|
extern void transport_subsystem_release(struct se_subsystem_api *);
|
||||||
extern void transport_load_plugins(void);
|
extern void transport_load_plugins(void);
|
||||||
|
|
Reference in New Issue