[SCSI] mptfusion : dv performance fix
Syncronization for Domain Validation workqueue and the initiation of the alternate controller. Its possible that dv could be terminated if the workqueue on the 1st channel doesn complete in time before the 2nd channel begins initialization. Signed-off-by: Eric Moore <Eric.Moore@lsil.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
committed by
James Bottomley
parent
8b2f81385a
commit
2a238ea5fb
@@ -4162,6 +4162,12 @@ mptscsih_domainValidation(void *arg)
|
||||
}
|
||||
}
|
||||
|
||||
if(mpt_alt_ioc_wait(hd->ioc)!=0) {
|
||||
ddvprintk((MYIOC_s_WARN_FMT "alt_ioc busy!\n",
|
||||
hd->ioc->name));
|
||||
continue;
|
||||
}
|
||||
|
||||
if (mptscsih_doDv(hd, 0, id) == 1) {
|
||||
/* Untagged device was busy, try again
|
||||
*/
|
||||
@@ -4173,6 +4179,10 @@ mptscsih_domainValidation(void *arg)
|
||||
hd->ioc->spi_data.dvStatus[id] &= ~(MPT_SCSICFG_DV_NOT_DONE | MPT_SCSICFG_DV_PENDING);
|
||||
}
|
||||
|
||||
spin_lock(&hd->ioc->initializing_hba_lock);
|
||||
hd->ioc->initializing_hba_lock_flag=0;
|
||||
spin_unlock(&hd->ioc->initializing_hba_lock);
|
||||
|
||||
if (isPhysDisk) {
|
||||
for (ii=0; ii < MPT_MAX_SCSI_DEVICES; ii++) {
|
||||
if (hd->ioc->raid_data.isRaid & (1 << ii)) {
|
||||
|
Reference in New Issue
Block a user