Commit d417d1c3 authored by Kashyap, Desai's avatar Kashyap, Desai Committed by James Bottomley

[SCSI] mpt2sas: Add additional check for responding volumes after Host Reset

ISSUE DESCRIPTION:
This test case involves creating two RAID1 volumes,  then
simultaneiously issue host reset and pull all the drives associated to
the 1st raid volume.  The observed behavour is the physical drives are
removed, however the volume remains.   The expected behavour is the
volume as well as physical drives should be removed from OS.

FIX:
Add support in the post host reset device scan logic for raid volumes
where the driver will have an additional check for responding raid
volume where the status should be either online, optimal, or degraded.
So for voluemes that have a status of missing or failed, the driver
will mark them for deletion.
Signed-off-by: default avatarKashyap Desai <kashyap.desai@lsi.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
parent 3e2e833a
...@@ -5952,6 +5952,7 @@ static void ...@@ -5952,6 +5952,7 @@ static void
_scsih_search_responding_raid_devices(struct MPT2SAS_ADAPTER *ioc) _scsih_search_responding_raid_devices(struct MPT2SAS_ADAPTER *ioc)
{ {
Mpi2RaidVolPage1_t volume_pg1; Mpi2RaidVolPage1_t volume_pg1;
Mpi2RaidVolPage0_t volume_pg0;
Mpi2RaidPhysDiskPage0_t pd_pg0; Mpi2RaidPhysDiskPage0_t pd_pg0;
Mpi2ConfigReply_t mpi_reply; Mpi2ConfigReply_t mpi_reply;
u16 ioc_status; u16 ioc_status;
...@@ -5971,6 +5972,15 @@ _scsih_search_responding_raid_devices(struct MPT2SAS_ADAPTER *ioc) ...@@ -5971,6 +5972,15 @@ _scsih_search_responding_raid_devices(struct MPT2SAS_ADAPTER *ioc)
if (ioc_status == MPI2_IOCSTATUS_CONFIG_INVALID_PAGE) if (ioc_status == MPI2_IOCSTATUS_CONFIG_INVALID_PAGE)
break; break;
handle = le16_to_cpu(volume_pg1.DevHandle); handle = le16_to_cpu(volume_pg1.DevHandle);
if (mpt2sas_config_get_raid_volume_pg0(ioc, &mpi_reply,
&volume_pg0, MPI2_RAID_VOLUME_PGAD_FORM_HANDLE, handle,
sizeof(Mpi2RaidVolPage0_t)))
continue;
if (volume_pg0.VolumeState == MPI2_RAID_VOL_STATE_OPTIMAL ||
volume_pg0.VolumeState == MPI2_RAID_VOL_STATE_ONLINE ||
volume_pg0.VolumeState == MPI2_RAID_VOL_STATE_DEGRADED)
_scsih_mark_responding_raid_device(ioc, _scsih_mark_responding_raid_device(ioc,
le64_to_cpu(volume_pg1.WWID), handle); le64_to_cpu(volume_pg1.WWID), handle);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment