From d51233b5e54b9f87e5378e0f82d693cd05642d1f Mon Sep 17 00:00:00 2001 From: Fubo Chen Date: Mon, 14 Mar 2011 04:06:00 -0700 Subject: [PATCH] --- yaml --- r: 242685 b: refs/heads/master c: 05aea6e7e497ab418239ae54fe5966d52cbd8550 h: refs/heads/master i: 242683: 2636d58196c2cdd6a0b9b147f2e4e5bf8b4bc540 v: v3 --- [refs] | 2 +- trunk/drivers/target/target_core_device.c | 39 ++--------------------- trunk/drivers/target/target_core_hba.c | 15 ++------- 3 files changed, 5 insertions(+), 51 deletions(-) diff --git a/[refs] b/[refs] index f26da919956c..620fb076398e 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 613640e4e1b5358ce880d16f10ecc2550b32b250 +refs/heads/master: 05aea6e7e497ab418239ae54fe5966d52cbd8550 diff --git a/trunk/drivers/target/target_core_device.c b/trunk/drivers/target/target_core_device.c index 350ed401544e..9e182bd245f0 100644 --- a/trunk/drivers/target/target_core_device.c +++ b/trunk/drivers/target/target_core_device.c @@ -779,49 +779,14 @@ void se_release_vpd_for_dev(struct se_device *dev) return; } -/* - * Called with struct se_hba->device_lock held. - */ -void se_clear_dev_ports(struct se_device *dev) -{ - struct se_hba *hba = dev->se_hba; - struct se_lun *lun; - struct se_portal_group *tpg; - struct se_port *sep, *sep_tmp; - - spin_lock(&dev->se_port_lock); - list_for_each_entry_safe(sep, sep_tmp, &dev->dev_sep_list, sep_list) { - spin_unlock(&dev->se_port_lock); - spin_unlock(&hba->device_lock); - - lun = sep->sep_lun; - tpg = sep->sep_tpg; - spin_lock(&lun->lun_sep_lock); - if (lun->lun_se_dev == NULL) { - spin_unlock(&lun->lun_sep_lock); - continue; - } - spin_unlock(&lun->lun_sep_lock); - - core_dev_del_lun(tpg, lun->unpacked_lun); - - spin_lock(&hba->device_lock); - spin_lock(&dev->se_port_lock); - } - spin_unlock(&dev->se_port_lock); - - return; -} - /* se_free_virtual_device(): * * Used for IBLOCK, RAMDISK, and FILEIO Transport Drivers. */ int se_free_virtual_device(struct se_device *dev, struct se_hba *hba) { - spin_lock(&hba->device_lock); - se_clear_dev_ports(dev); - spin_unlock(&hba->device_lock); + if (!list_empty(&dev->dev_sep_list)) + dump_stack(); core_alua_free_lu_gp_mem(dev); se_release_device_for_hba(dev); diff --git a/trunk/drivers/target/target_core_hba.c b/trunk/drivers/target/target_core_hba.c index 6ec51cbc018e..0b8f8da89019 100644 --- a/trunk/drivers/target/target_core_hba.c +++ b/trunk/drivers/target/target_core_hba.c @@ -151,19 +151,8 @@ core_alloc_hba(const char *plugin_name, u32 plugin_dep_id, u32 hba_flags) int core_delete_hba(struct se_hba *hba) { - struct se_device *dev, *dev_tmp; - - spin_lock(&hba->device_lock); - list_for_each_entry_safe(dev, dev_tmp, &hba->hba_dev_list, dev_list) { - - se_clear_dev_ports(dev); - spin_unlock(&hba->device_lock); - - se_release_device_for_hba(dev); - - spin_lock(&hba->device_lock); - } - spin_unlock(&hba->device_lock); + if (!list_empty(&hba->hba_dev_list)) + dump_stack(); hba->transport->detach_hba(hba);