[PATCH] tcm_loop: Convert to using root_device_register() and root_device_unregister()

From: Nicholas A. Bellinger
Date: Mon Sep 06 2010 - 18:19:56 EST


From: Nicholas Bellinger <nab@xxxxxxxxxxxxxxx>

This patch updates TCM_Loop to use root_device_register() and root_device_unregister()
from include/linux/device.h instead of device_register() and device_unregister()
respectively within tcm_loop_alloc_core_bus() and tcm_loop_release_core_bus().
This simply involved converting the static struct device tcm_loop_primary into
a pointer that is setup by the call to root_device_register().

Thanks to Richard Sharpe and Dmitry Torokhov for their help with this item.

Signed-off-by: Nicholas A. Bellinger <nab@xxxxxxxxxxxxxxx>
---
drivers/target/tcm_loop/tcm_loop_fabric_scsi.c | 29 +++++++++--------------
1 files changed, 11 insertions(+), 18 deletions(-)

diff --git a/drivers/target/tcm_loop/tcm_loop_fabric_scsi.c b/drivers/target/tcm_loop/tcm_loop_fabric_scsi.c
index 78476bc..eda6949 100644
--- a/drivers/target/tcm_loop/tcm_loop_fabric_scsi.c
+++ b/drivers/target/tcm_loop/tcm_loop_fabric_scsi.c
@@ -257,16 +257,10 @@ static struct device_driver tcm_loop_driverfs = {
.name = "tcm_loop",
.bus = &tcm_loop_lld_bus,
};
-
-static void tcm_loop_primary_release(struct device *dev)
-{
- return;
-}
-
-static struct device tcm_loop_primary = {
- .init_name = "tcm_loop_0",
- .release = tcm_loop_primary_release,
-};
+/*
+ * Used with root_device_register() in tcm_loop_alloc_core_bus() below
+ */
+struct device *tcm_loop_primary;

/*
* Copied from drivers/scsi/libfc/fc_fcp.c:fc_change_queue_depth() and
@@ -555,7 +549,7 @@ int tcm_loop_setup_hba_bus(struct tcm_loop_hba *tl_hba, int tcm_loop_host_id)
int ret;

tl_hba->dev.bus = &tcm_loop_lld_bus;
- tl_hba->dev.parent = &tcm_loop_primary;
+ tl_hba->dev.parent = tcm_loop_primary;
tl_hba->dev.release = &tcm_loop_release_adapter;
dev_set_name(&tl_hba->dev, "tcm_loop_adapter_%d", tcm_loop_host_id);

@@ -577,11 +571,10 @@ int tcm_loop_alloc_core_bus(void)
{
int ret;

- ret = device_register(&tcm_loop_primary);
- if (ret) {
- printk(KERN_ERR "device_register() failed for"
- " tcm_loop_primary\n");
- return ret;
+ tcm_loop_primary = root_device_register("tcm_loop_0");
+ if (!(tcm_loop_primary)) {
+ printk(KERN_ERR "Unable to allocate tcm_loop_primary\n");
+ return -ENOMEM;
}

ret = bus_register(&tcm_loop_lld_bus);
@@ -603,7 +596,7 @@ int tcm_loop_alloc_core_bus(void)
bus_unreg:
bus_unregister(&tcm_loop_lld_bus);
dev_unreg:
- device_unregister(&tcm_loop_primary);
+ root_device_unregister(tcm_loop_primary);
return ret;
}

@@ -611,7 +604,7 @@ void tcm_loop_release_core_bus(void)
{
driver_unregister(&tcm_loop_driverfs);
bus_unregister(&tcm_loop_lld_bus);
- device_unregister(&tcm_loop_primary);
+ root_device_unregister(tcm_loop_primary);

printk(KERN_INFO "Releasing TCM Loop Core BUS\n");
}
--
1.5.6.5

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/