Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b195d5e2 authored by Brian King's avatar Brian King Committed by Martin K. Petersen
Browse files

ipr: Wait to do async scan until scsi host is initialized



When performing an async scan, make sure the kthread doing scanning
doesn't start before the scsi host is fully initialized.

Signed-off-by: default avatarBrian King <brking@linux.vnet.ibm.com>
Reviewed-by: default avatarGabriel Krisman Bertazi <krisman@linux.vnet.ibm.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent b2c0627c
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -3288,6 +3288,11 @@ static void ipr_worker_thread(struct work_struct *work)
		return;
	}

	if (!ioa_cfg->scan_enabled) {
		spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags);
		return;
	}

restart:
	do {
		did_work = 0;
@@ -10362,6 +10367,7 @@ static void ipr_remove(struct pci_dev *pdev)
static int ipr_probe(struct pci_dev *pdev, const struct pci_device_id *dev_id)
{
	struct ipr_ioa_cfg *ioa_cfg;
	unsigned long flags;
	int rc, i;

	rc = ipr_probe_ioa(pdev, dev_id);
@@ -10414,7 +10420,10 @@ static int ipr_probe(struct pci_dev *pdev, const struct pci_device_id *dev_id)
		}
	}

	spin_lock_irqsave(ioa_cfg->host->host_lock, flags);
	ioa_cfg->scan_enabled = 1;
	schedule_work(&ioa_cfg->work_q);
	spin_unlock_irqrestore(ioa_cfg->host->host_lock, flags);
	return 0;
}

+1 −0
Original line number Diff line number Diff line
@@ -1478,6 +1478,7 @@ struct ipr_ioa_cfg {
	u8 in_ioa_bringdown:1;
	u8 ioa_unit_checked:1;
	u8 dump_taken:1;
	u8 scan_enabled:1;
	u8 scan_done:1;
	u8 needs_hard_reset:1;
	u8 dual_raid:1;