aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/scsi/hpsa.c14
-rw-r--r--drivers/scsi/hpsa.h1
2 files changed, 2 insertions, 13 deletions
diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c
index 70f07af6119b..94a82e367bf1 100644
--- a/drivers/scsi/hpsa.c
+++ b/drivers/scsi/hpsa.c
@@ -1637,21 +1637,19 @@ static void process_ioaccel2_completion(struct ctlr_info *h,
1637 c2->error_data.serv_response == 1637 c2->error_data.serv_response ==
1638 IOACCEL2_SERV_RESPONSE_FAILURE) { 1638 IOACCEL2_SERV_RESPONSE_FAILURE) {
1639 dev->offload_enabled = 0; 1639 dev->offload_enabled = 0;
1640 h->drv_req_rescan = 1; /* schedule controller for a rescan */
1641 cmd->result = DID_SOFT_ERROR << 16; 1640 cmd->result = DID_SOFT_ERROR << 16;
1642 cmd_free(h, c); 1641 cmd_free(h, c);
1643 cmd->scsi_done(cmd); 1642 cmd->scsi_done(cmd);
1644 return; 1643 return;
1645 } 1644 }
1646 raid_retry = handle_ioaccel_mode2_error(h, c, cmd, c2); 1645 raid_retry = handle_ioaccel_mode2_error(h, c, cmd, c2);
1647 /* If error found, disable Smart Path, schedule a rescan, 1646 /* If error found, disable Smart Path,
1648 * and force a retry on the standard path. 1647 * force a retry on the standard path.
1649 */ 1648 */
1650 if (raid_retry) { 1649 if (raid_retry) {
1651 dev_warn(&h->pdev->dev, "%s: Retrying on standard path.\n", 1650 dev_warn(&h->pdev->dev, "%s: Retrying on standard path.\n",
1652 "HP SSD Smart Path"); 1651 "HP SSD Smart Path");
1653 dev->offload_enabled = 0; /* Disable Smart Path */ 1652 dev->offload_enabled = 0; /* Disable Smart Path */
1654 h->drv_req_rescan = 1; /* schedule controller rescan */
1655 cmd->result = DID_SOFT_ERROR << 16; 1653 cmd->result = DID_SOFT_ERROR << 16;
1656 } 1654 }
1657 cmd_free(h, c); 1655 cmd_free(h, c);
@@ -6478,9 +6476,6 @@ static void hpsa_ack_ctlr_events(struct ctlr_info *h)
6478 int i; 6476 int i;
6479 char *event_type; 6477 char *event_type;
6480 6478
6481 /* Clear the driver-requested rescan flag */
6482 h->drv_req_rescan = 0;
6483
6484 /* Ask the controller to clear the events we're handling. */ 6479 /* Ask the controller to clear the events we're handling. */
6485 if ((h->transMethod & (CFGTBL_Trans_io_accel1 6480 if ((h->transMethod & (CFGTBL_Trans_io_accel1
6486 | CFGTBL_Trans_io_accel2)) && 6481 | CFGTBL_Trans_io_accel2)) &&
@@ -6526,9 +6521,6 @@ static void hpsa_ack_ctlr_events(struct ctlr_info *h)
6526 */ 6521 */
6527static int hpsa_ctlr_needs_rescan(struct ctlr_info *h) 6522static int hpsa_ctlr_needs_rescan(struct ctlr_info *h)
6528{ 6523{
6529 if (h->drv_req_rescan)
6530 return 1;
6531
6532 if (!(h->fw_support & MISC_FW_EVENT_NOTIFY)) 6524 if (!(h->fw_support & MISC_FW_EVENT_NOTIFY))
6533 return 0; 6525 return 0;
6534 6526
@@ -6574,7 +6566,6 @@ static void hpsa_monitor_ctlr_worker(struct work_struct *work)
6574 6566
6575 if (hpsa_ctlr_needs_rescan(h) || hpsa_offline_devices_ready(h)) { 6567 if (hpsa_ctlr_needs_rescan(h) || hpsa_offline_devices_ready(h)) {
6576 scsi_host_get(h->scsi_host); 6568 scsi_host_get(h->scsi_host);
6577 h->drv_req_rescan = 0;
6578 hpsa_ack_ctlr_events(h); 6569 hpsa_ack_ctlr_events(h);
6579 hpsa_scan_start(h->scsi_host); 6570 hpsa_scan_start(h->scsi_host);
6580 scsi_host_put(h->scsi_host); 6571 scsi_host_put(h->scsi_host);
@@ -6743,7 +6734,6 @@ reinit_after_soft_reset:
6743 /* Enable Accelerated IO path at driver layer */ 6734 /* Enable Accelerated IO path at driver layer */
6744 h->acciopath_status = 1; 6735 h->acciopath_status = 1;
6745 6736
6746 h->drv_req_rescan = 0;
6747 6737
6748 /* Turn the interrupts on so we can service requests */ 6738 /* Turn the interrupts on so we can service requests */
6749 h->access.set_intr_mask(h, HPSA_INTR_ON); 6739 h->access.set_intr_mask(h, HPSA_INTR_ON);
diff --git a/drivers/scsi/hpsa.h b/drivers/scsi/hpsa.h
index e7d7eaa864d1..06a3e812ec38 100644
--- a/drivers/scsi/hpsa.h
+++ b/drivers/scsi/hpsa.h
@@ -235,7 +235,6 @@ struct ctlr_info {
235 spinlock_t offline_device_lock; 235 spinlock_t offline_device_lock;
236 struct list_head offline_device_list; 236 struct list_head offline_device_list;
237 int acciopath_status; 237 int acciopath_status;
238 int drv_req_rescan; /* flag for driver to request rescan event */
239 int raid_offload_debug; 238 int raid_offload_debug;
240}; 239};
241 240