summaryrefslogtreecommitdiffstats
path: root/drivers/scsi/ipr.c
diff options
context:
space:
mode:
authorBrian King <brking@linux.vnet.ibm.com>2016-07-15 15:48:03 -0400
committerMartin K. Petersen <martin.petersen@oracle.com>2016-07-27 00:32:07 -0400
commitb195d5e2bffd3de3f07e8683e6abddf099ea0822 (patch)
tree8b605a7a6e0b292df21074f70be25ab975cf82d9 /drivers/scsi/ipr.c
parentb2c0627c26afcef0ac115e9505ea9d1db5d88c9b (diff)
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: Brian King <brking@linux.vnet.ibm.com> Reviewed-by: Gabriel Krisman Bertazi <krisman@linux.vnet.ibm.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'drivers/scsi/ipr.c')
-rw-r--r--drivers/scsi/ipr.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c
index 1f539c288ae8..95e4834c58ee 100644
--- a/drivers/scsi/ipr.c
+++ b/drivers/scsi/ipr.c
@@ -3288,6 +3288,11 @@ static void ipr_worker_thread(struct work_struct *work)
3288 return; 3288 return;
3289 } 3289 }
3290 3290
3291 if (!ioa_cfg->scan_enabled) {
3292 spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags);
3293 return;
3294 }
3295
3291restart: 3296restart:
3292 do { 3297 do {
3293 did_work = 0; 3298 did_work = 0;
@@ -10362,6 +10367,7 @@ static void ipr_remove(struct pci_dev *pdev)
10362static int ipr_probe(struct pci_dev *pdev, const struct pci_device_id *dev_id) 10367static int ipr_probe(struct pci_dev *pdev, const struct pci_device_id *dev_id)
10363{ 10368{
10364 struct ipr_ioa_cfg *ioa_cfg; 10369 struct ipr_ioa_cfg *ioa_cfg;
10370 unsigned long flags;
10365 int rc, i; 10371 int rc, i;
10366 10372
10367 rc = ipr_probe_ioa(pdev, dev_id); 10373 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)
10414 } 10420 }
10415 } 10421 }
10416 10422
10423 spin_lock_irqsave(ioa_cfg->host->host_lock, flags);
10424 ioa_cfg->scan_enabled = 1;
10417 schedule_work(&ioa_cfg->work_q); 10425 schedule_work(&ioa_cfg->work_q);
10426 spin_unlock_irqrestore(ioa_cfg->host->host_lock, flags);
10418 return 0; 10427 return 0;
10419} 10428}
10420 10429