mirror of
https://github.com/torvalds/linux.git
synced 2024-11-17 17:41:44 +00:00
scsi: mpt3sas: Call sas_remove_host before removing the target devices
Call sas_remove_host() before removing the target devices in the driver's .remove() callback function(i.e. during driver unload time). So that driver can provide a way to allow SYNC CACHE, START STOP unit commands etc. (which are issued from SML) to the target drives during driver unload time. Once sas_remove_host() is called before removing the target drives then driver can just clean up the resources allocated for target devices and no need to call sas_port_delete_phy(), sas_port_delete() API's as these API's internally called from sas_remove_host(). Signed-off-by: Suganath Prabu <suganath-prabu.subramani@broadcom.com> Reviewed-by: Bjorn Helgaas <bhelgaas@google.com> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
a064a6470b
commit
dc730212e8
@ -9641,6 +9641,7 @@ static void scsih_remove(struct pci_dev *pdev)
|
||||
|
||||
/* release all the volumes */
|
||||
_scsih_ir_shutdown(ioc);
|
||||
sas_remove_host(shost);
|
||||
list_for_each_entry_safe(raid_device, next, &ioc->raid_device_list,
|
||||
list) {
|
||||
if (raid_device->starget) {
|
||||
@ -9682,7 +9683,6 @@ static void scsih_remove(struct pci_dev *pdev)
|
||||
ioc->sas_hba.num_phys = 0;
|
||||
}
|
||||
|
||||
sas_remove_host(shost);
|
||||
mpt3sas_base_detach(ioc);
|
||||
spin_lock(&gioc_lock);
|
||||
list_del(&ioc->list);
|
||||
|
@ -806,10 +806,13 @@ mpt3sas_transport_port_remove(struct MPT3SAS_ADAPTER *ioc, u64 sas_address,
|
||||
mpt3sas_port->remote_identify.sas_address,
|
||||
mpt3sas_phy->phy_id);
|
||||
mpt3sas_phy->phy_belongs_to_port = 0;
|
||||
sas_port_delete_phy(mpt3sas_port->port, mpt3sas_phy->phy);
|
||||
if (!ioc->remove_host)
|
||||
sas_port_delete_phy(mpt3sas_port->port,
|
||||
mpt3sas_phy->phy);
|
||||
list_del(&mpt3sas_phy->port_siblings);
|
||||
}
|
||||
sas_port_delete(mpt3sas_port->port);
|
||||
if (!ioc->remove_host)
|
||||
sas_port_delete(mpt3sas_port->port);
|
||||
kfree(mpt3sas_port);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user