aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/mpt2sas
diff options
context:
space:
mode:
authorKashyap, Desai <kashyap.desai@lsi.com>2011-01-04 11:40:23 +0530
committerJames Bottomley <James.Bottomley@suse.de>2011-01-24 09:30:29 -0600
commit3a9c913a3e57b170887d39456e04c18f2305ec67 (patch)
tree88dd8e1da321190392d58634b7effabf23acdfd1 /drivers/scsi/mpt2sas
parent4224489f45b503f0a1f1cf310f76dc108f45689a (diff)
downloadkernel_samsung_smdk4412-3a9c913a3e57b170887d39456e04c18f2305ec67.zip
kernel_samsung_smdk4412-3a9c913a3e57b170887d39456e04c18f2305ec67.tar.gz
kernel_samsung_smdk4412-3a9c913a3e57b170887d39456e04c18f2305ec67.tar.bz2
[SCSI] mpt2sas: fix Integrated Raid unsynced on shutdown problem
Issue: IR shutdown(sending) and IR shutdown(complete) messages not listed in /var/log/messages when driver is removed. The driver needs to issue a MPI2_RAID_ACTION_SYSTEM_SHUTDOWN_INITIATED request when the driver is unloaded so the IR metadata journal is updated. If this request is not sent, then the volume would need a "check consistency" issued on the next bootup if the volume was roamed from one initiator to another. The current driver supports this feature only when the system is rebooted, however this also need to be supported if the driver is unloaded Fix: To fix this issue, the driver is going to need to call the _scsih_ir_shutdown prior to reporting the volumes missing from the OS, hence the device handles are still present. Signed-off-by: Kashyap Desai <kashyap.desai@lsi.com> Cc: stable@kernel.org Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi/mpt2sas')
-rw-r--r--drivers/scsi/mpt2sas/mpt2sas_scsih.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/scsi/mpt2sas/mpt2sas_scsih.c b/drivers/scsi/mpt2sas/mpt2sas_scsih.c
index db287d7..5ded3db 100644
--- a/drivers/scsi/mpt2sas/mpt2sas_scsih.c
+++ b/drivers/scsi/mpt2sas/mpt2sas_scsih.c
@@ -6665,6 +6665,7 @@ _scsih_remove(struct pci_dev *pdev)
destroy_workqueue(wq);
/* release all the volumes */
+ _scsih_ir_shutdown(ioc);
list_for_each_entry_safe(raid_device, next, &ioc->raid_device_list,
list) {
if (raid_device->starget) {