diff options
-rw-r--r-- | drivers/scsi/ipr.c | 9 | ||||
-rw-r--r-- | drivers/scsi/ipr.h | 1 |
2 files changed, 10 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 | |||
3291 | restart: | 3296 | restart: |
3292 | do { | 3297 | do { |
3293 | did_work = 0; | 3298 | did_work = 0; |
@@ -10362,6 +10367,7 @@ static void ipr_remove(struct pci_dev *pdev) | |||
10362 | static int ipr_probe(struct pci_dev *pdev, const struct pci_device_id *dev_id) | 10367 | static 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 | ||
diff --git a/drivers/scsi/ipr.h b/drivers/scsi/ipr.h index 1d42c7464dfc..cdb51960b53c 100644 --- a/drivers/scsi/ipr.h +++ b/drivers/scsi/ipr.h | |||
@@ -1478,6 +1478,7 @@ struct ipr_ioa_cfg { | |||
1478 | u8 in_ioa_bringdown:1; | 1478 | u8 in_ioa_bringdown:1; |
1479 | u8 ioa_unit_checked:1; | 1479 | u8 ioa_unit_checked:1; |
1480 | u8 dump_taken:1; | 1480 | u8 dump_taken:1; |
1481 | u8 scan_enabled:1; | ||
1481 | u8 scan_done:1; | 1482 | u8 scan_done:1; |
1482 | u8 needs_hard_reset:1; | 1483 | u8 needs_hard_reset:1; |
1483 | u8 dual_raid:1; | 1484 | u8 dual_raid:1; |