From: Christoph Hellwig <hch@infradead.org>
To: nab@linux-iscsi.org
Cc: linux-scsi@vger.kernel.org
Subject: [PATCH 5/9] target: clean up transport_subsystem_register
Date: Mon, 08 Nov 2010 10:56:06 -0500 [thread overview]
Message-ID: <20101108155647.982654567@canuck.infradead.org> (raw)
In-Reply-To: 20101108155601.872926000@canuck.infradead.org
[-- Attachment #1: lio-simplify-transport_subsystem_register --]
[-- Type: text/plain, Size: 11843 bytes --]
Move initialization of the list into transport_subsystem_register, set the
owner field in the operations vector like for most others, remove the
external_submod field and replace it by not having an owner pointer.
Remove unessecary initializations to zero for se_subsystem_api fields.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Index: lio-core-2.6/drivers/target/target_core_file.c
===================================================================
--- lio-core-2.6.orig/drivers/target/target_core_file.c 2010-11-08 15:37:15.944863013 +0100
+++ lio-core-2.6/drivers/target/target_core_file.c 2010-11-08 15:49:05.428196347 +0100
@@ -953,9 +953,9 @@ static sector_t fd_get_blocks(struct se_
static struct se_subsystem_api fileio_template = {
.name = "fileio",
+ .owner = THIS_MODULE,
.type = FILEIO,
.transport_type = TRANSPORT_PLUGIN_VHBA_PDEV,
- .external_submod = 1,
.attach_hba = fd_attach_hba,
.detach_hba = fd_detach_hba,
.cdb_none = fd_CDB_none,
@@ -973,7 +973,6 @@ static struct se_subsystem_api fileio_te
.transport_complete = fd_transport_complete,
.allocate_request = fd_allocate_request,
.do_task = fd_do_task,
- .do_discard = NULL,
.do_sync_cache = fd_emulate_sync_cache,
.free_task = fd_free_task,
.check_configfs_dev_params = fd_check_configfs_dev_params,
@@ -989,23 +988,14 @@ static struct se_subsystem_api fileio_te
.get_device_type = fd_get_device_type,
.get_dma_length = fd_get_dma_length,
.get_blocks = fd_get_blocks,
- .write_pending = NULL,
};
-int __init fileio_module_init(void)
+static int __init fileio_module_init(void)
{
- int ret;
-
- INIT_LIST_HEAD(&fileio_template.sub_api_list);
-
- ret = transport_subsystem_register(&fileio_template, THIS_MODULE);
- if (ret < 0)
- return ret;
-
- return 0;
+ return transport_subsystem_register(&fileio_template);
}
-void fileio_module_exit(void)
+static void fileio_module_exit(void)
{
transport_subsystem_release(&fileio_template);
}
Index: lio-core-2.6/drivers/target/target_core_hba.c
===================================================================
--- lio-core-2.6.orig/drivers/target/target_core_hba.c 2010-11-08 15:41:43.444863012 +0100
+++ lio-core-2.6/drivers/target/target_core_hba.c 2010-11-08 15:48:43.508196346 +0100
@@ -100,23 +100,17 @@ int se_core_add_hba(
return -EINVAL;
hba->transport = t;
+
/*
* Get TCM subsystem api struct module reference to struct se_hba
*/
- if (t->external_submod) {
- if (!(t->sub_owner)) {
- printk(KERN_ERR "Pointer to struct module does not"
- " exist for %s\n", t->name);
- hba->transport = NULL;
- transport_core_put_sub(t);
- return -EINVAL;
- }
+ if (t->owner) {
/*
* Grab a struct module reference count for subsystem plugin
*/
- if (!(try_module_get(t->sub_owner))) {
- printk(KERN_ERR "try_module_get() failed for"
- " t->sub_owner\n");
+ if (!try_module_get(t->owner)) {
+ printk(KERN_ERR "try_module_get() failed for %s\n",
+ t->owner->name);
hba->transport = NULL;
transport_core_put_sub(t);
return -EINVAL;
@@ -126,8 +120,8 @@ int se_core_add_hba(
ret = t->attach_hba(hba, plugin_dep_id);
if (ret < 0) {
hba->transport = NULL;
- if (t->external_submod)
- module_put(t->sub_owner);
+ if (t->owner)
+ module_put(t->owner);
transport_core_put_sub(t);
return ret;
}
@@ -157,8 +151,8 @@ static int se_core_shutdown_hba(
/*
* Release TCM subsystem api struct module reference from struct se_hba
*/
- if (t->external_submod)
- module_put(t->sub_owner);
+ if (t->owner)
+ module_put(t->owner);
return 0;
}
Index: lio-core-2.6/drivers/target/target_core_iblock.c
===================================================================
--- lio-core-2.6.orig/drivers/target/target_core_iblock.c 2010-11-08 15:38:27.891529681 +0100
+++ lio-core-2.6/drivers/target/target_core_iblock.c 2010-11-08 15:48:47.868196356 +0100
@@ -921,9 +921,9 @@ static void iblock_bio_done(struct bio *
static struct se_subsystem_api iblock_template = {
.name = "iblock",
+ .owner = THIS_MODULE,
.type = IBLOCK,
.transport_type = TRANSPORT_PLUGIN_VHBA_PDEV,
- .external_submod = 1,
.cdb_none = iblock_CDB_none,
.cdb_read_non_SG = iblock_CDB_read_non_SG,
.cdb_read_SG = iblock_CDB_read_SG,
@@ -957,23 +957,14 @@ static struct se_subsystem_api iblock_te
.get_device_type = iblock_get_device_type,
.get_dma_length = iblock_get_dma_length,
.get_blocks = iblock_get_blocks,
- .write_pending = NULL,
};
-int __init iblock_module_init(void)
+static int __init iblock_module_init(void)
{
- int ret;
-
- INIT_LIST_HEAD(&iblock_template.sub_api_list);
-
- ret = transport_subsystem_register(&iblock_template, THIS_MODULE);
- if (ret < 0)
- return ret;
-
- return 0;
+ return transport_subsystem_register(&iblock_template);
}
-void iblock_module_exit(void)
+static void iblock_module_exit(void)
{
transport_subsystem_release(&iblock_template);
}
Index: lio-core-2.6/drivers/target/target_core_pscsi.c
===================================================================
--- lio-core-2.6.orig/drivers/target/target_core_pscsi.c 2010-11-08 15:38:27.901529680 +0100
+++ lio-core-2.6/drivers/target/target_core_pscsi.c 2010-11-08 15:48:49.844863013 +0100
@@ -1485,9 +1485,9 @@ static void pscsi_req_done(struct reques
static struct se_subsystem_api pscsi_template = {
.name = "pscsi",
+ .owner = THIS_MODULE,
.type = PSCSI,
.transport_type = TRANSPORT_PLUGIN_PHBA_PDEV,
- .external_submod = 1,
.cdb_none = pscsi_CDB_none,
.cdb_read_non_SG = pscsi_CDB_read_non_SG,
.cdb_read_SG = pscsi_CDB_read_SG,
@@ -1516,23 +1516,14 @@ static struct se_subsystem_api pscsi_tem
.get_device_rev = pscsi_get_device_rev,
.get_device_type = pscsi_get_device_type,
.get_dma_length = pscsi_get_dma_length,
- .write_pending = NULL,
};
-int __init pscsi_module_init(void)
+static int __init pscsi_module_init(void)
{
- int ret;
-
- INIT_LIST_HEAD(&pscsi_template.sub_api_list);
-
- ret = transport_subsystem_register(&pscsi_template, THIS_MODULE);
- if (ret < 0)
- return ret;
-
- return 0;
+ return transport_subsystem_register(&pscsi_template);
}
-void pscsi_module_exit(void)
+static void pscsi_module_exit(void)
{
transport_subsystem_release(&pscsi_template);
}
Index: lio-core-2.6/drivers/target/target_core_rd.c
===================================================================
--- lio-core-2.6.orig/drivers/target/target_core_rd.c 2010-11-08 15:38:27.911529679 +0100
+++ lio-core-2.6/drivers/target/target_core_rd.c 2010-11-08 15:49:00.321529680 +0100
@@ -1283,7 +1283,6 @@ static struct se_subsystem_api rd_dr_tem
.name = "rd_dr",
.type = RAMDISK_DR,
.transport_type = TRANSPORT_PLUGIN_VHBA_VDEV,
- .external_submod = 0,
.cdb_none = rd_CDB_none,
.cdb_read_non_SG = rd_CDB_read_non_SG,
.cdb_read_SG = rd_CDB_read_SG,
@@ -1314,14 +1313,12 @@ static struct se_subsystem_api rd_dr_tem
.get_dma_length = rd_get_dma_length,
.get_blocks = rd_get_blocks,
.do_se_mem_map = rd_DIRECT_do_se_mem_map,
- .write_pending = NULL,
};
static struct se_subsystem_api rd_mcp_template = {
.name = "rd_mcp",
.type = RAMDISK_MCP,
.transport_type = TRANSPORT_PLUGIN_VHBA_VDEV,
- .external_submod = 0,
.cdb_none = rd_CDB_none,
.cdb_read_non_SG = rd_CDB_read_non_SG,
.cdb_read_SG = rd_CDB_read_SG,
@@ -1348,21 +1345,17 @@ static struct se_subsystem_api rd_mcp_te
.get_device_rev = rd_get_device_rev,
.get_device_type = rd_get_device_type,
.get_dma_length = rd_get_dma_length,
- .write_pending = NULL,
};
int __init rd_module_init(void)
{
int ret;
- INIT_LIST_HEAD(&rd_dr_template.sub_api_list);
- INIT_LIST_HEAD(&rd_mcp_template.sub_api_list);
-
- ret = transport_subsystem_register(&rd_dr_template, NULL);
+ ret = transport_subsystem_register(&rd_dr_template);
if (ret < 0)
return ret;
- ret = transport_subsystem_register(&rd_mcp_template, NULL);
+ ret = transport_subsystem_register(&rd_mcp_template);
if (ret < 0) {
transport_subsystem_release(&rd_dr_template);
return ret;
Index: lio-core-2.6/drivers/target/target_core_stgt.c
===================================================================
--- lio-core-2.6.orig/drivers/target/target_core_stgt.c 2010-11-08 15:38:27.924863014 +0100
+++ lio-core-2.6/drivers/target/target_core_stgt.c 2010-11-08 15:49:02.761529680 +0100
@@ -833,9 +833,9 @@ static int stgt_transfer_response(struct
static struct se_subsystem_api stgt_template = {
.name = "stgt",
+ .owner = THIS_MODULE,
.type = STGT,
.transport_type = TRANSPORT_PLUGIN_VHBA_PDEV,
- .external_submod = 1,
.cdb_none = stgt_CDB_none,
.cdb_read_non_SG = stgt_CDB_read_non_SG,
.cdb_read_SG = stgt_CDB_read_SG,
@@ -865,23 +865,14 @@ static struct se_subsystem_api stgt_temp
.get_device_rev = stgt_get_device_rev,
.get_device_type = stgt_get_device_type,
.get_dma_length = stgt_get_dma_length,
- .write_pending = NULL,
};
-int __init stgt_module_init(void)
+static int __init stgt_module_init(void)
{
- int ret;
-
- INIT_LIST_HEAD(&stgt_template.sub_api_list);
-
- ret = transport_subsystem_register(&stgt_template, THIS_MODULE);
- if (ret < 0)
- return ret;
-
- return 0;
+ return transport_subsystem_register(&stgt_template);
}
-void stgt_module_exit(void)
+static void stgt_module_exit(void)
{
transport_subsystem_release(&stgt_template);
}
Index: lio-core-2.6/drivers/target/target_core_transport.c
===================================================================
--- lio-core-2.6.orig/drivers/target/target_core_transport.c 2010-11-08 15:37:15.928196347 +0100
+++ lio-core-2.6/drivers/target/target_core_transport.c 2010-11-08 15:44:43.708196346 +0100
@@ -545,18 +545,11 @@ int transport_subsystem_check_init(void)
}
int transport_subsystem_register(
- struct se_subsystem_api *sub_api,
- struct module *sub_owner)
+ struct se_subsystem_api *sub_api)
{
struct se_subsystem_api *s;
- /*
- * Save struct module * for TFO [attach,detach]_hba() reference
- * in se_core_add_hba()
- */
- if (sub_api->external_submod && (sub_owner != NULL))
- sub_api->sub_owner = sub_owner;
- else
- sub_api->sub_owner = NULL;
+
+ INIT_LIST_HEAD(&sub_api->sub_api_list);
mutex_lock(&se_global->g_sub_api_mutex);
list_for_each_entry(s, &se_global->g_sub_api_list, sub_api_list) {
@@ -572,7 +565,7 @@ int transport_subsystem_register(
mutex_unlock(&se_global->g_sub_api_mutex);
printk(KERN_INFO "TCM: Registered subsystem plugin: %s struct module:"
- " %p\n", sub_api->name, sub_api->sub_owner);
+ " %p\n", sub_api->name, sub_api->owner);
return 0;
}
EXPORT_SYMBOL(transport_subsystem_register);
Index: lio-core-2.6/include/target/target_core_transport.h
===================================================================
--- lio-core-2.6.orig/include/target/target_core_transport.h 2010-11-08 15:42:48.694863012 +0100
+++ lio-core-2.6/include/target/target_core_transport.h 2010-11-08 15:49:30.924863014 +0100
@@ -138,8 +138,7 @@ extern int __iscsi_debug_dev(struct se_d
extern unsigned char *transport_get_iqn_sn(void);
extern void transport_init_queue_obj(struct se_queue_obj *);
extern int transport_subsystem_check_init(void);
-extern int transport_subsystem_register(struct se_subsystem_api *,
- struct module *);
+extern int transport_subsystem_register(struct se_subsystem_api *);
extern void transport_subsystem_release(struct se_subsystem_api *);
extern void transport_load_plugins(void);
extern struct se_subsystem_api *transport_core_get_sub_by_name(const char *);
@@ -323,13 +322,9 @@ struct se_subsystem_api {
*/
u8 transport_type;
/*
- * For target_core_rd.c internal usage
- */
- int external_submod;
- /*
* struct module for struct se_hba references
*/
- struct module *sub_owner;
+ struct module *owner;
/*
* Counter for struct se_hba reference
*/
next prev parent reply other threads:[~2010-11-08 15:56 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-11-08 15:56 [PATCH 0/9] target core review feedback Christoph Hellwig
2010-11-08 15:56 ` [PATCH 1/9] target: remove never changing indirections in se_cmd Christoph Hellwig
2010-11-08 21:57 ` Nicholas A. Bellinger
2010-11-08 15:56 ` [PATCH 2/9] target: remove activate_device/deactivate_device methods Christoph Hellwig
2010-11-08 22:00 ` Nicholas A. Bellinger
2010-11-08 15:56 ` [PATCH 3/9] From: Christoph Hellwig <hch@lst.de> Sujbect: target: remove SHUTDOWN_SIGS Christoph Hellwig
2010-11-08 22:21 ` [PATCH 3/9] " Nicholas A. Bellinger
2010-11-08 22:31 ` Christoph Hellwig
2010-11-08 15:56 ` [PATCH 4/9] target: remove transport_generic_map_buffers_to_tasks Christoph Hellwig
2010-11-08 22:29 ` Nicholas A. Bellinger
2010-11-08 15:56 ` Christoph Hellwig [this message]
2010-11-08 22:32 ` [PATCH 5/9] target: clean up transport_subsystem_register Nicholas A. Bellinger
2010-11-08 15:56 ` [PATCH 6/9] target: remove dead blockdevice claim/release code Christoph Hellwig
2010-11-08 22:35 ` Nicholas A. Bellinger
2010-11-08 15:56 ` [PATCH 7/9] target: remove transport_generic_free_device Christoph Hellwig
2010-11-08 22:40 ` Nicholas A. Bellinger
2010-11-08 15:56 ` [PATCH 8/9] target: remove unused split_cdb_RW_* handlers Christoph Hellwig
2010-11-08 22:41 ` Nicholas A. Bellinger
2010-11-08 15:56 ` [PATCH 9/9] target: remove dead call to transport_emulate_control_cdb in rd driver Christoph Hellwig
2010-11-08 22:44 ` Nicholas A. Bellinger
2010-11-08 17:19 ` [PATCH 10/9] target: split CDB emulation out of target_core_transport.c Christoph Hellwig
2010-11-08 22:48 ` Nicholas A. Bellinger
2010-11-08 22:57 ` Christoph Hellwig
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20101108155647.982654567@canuck.infradead.org \
--to=hch@infradead.org \
--cc=linux-scsi@vger.kernel.org \
--cc=nab@linux-iscsi.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox