diff options
-rw-r--r-- | drivers/scsi/hpsa.c | 14 | ||||
-rw-r--r-- | drivers/scsi/hpsa.h | 1 |
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 | */ |
6527 | static int hpsa_ctlr_needs_rescan(struct ctlr_info *h) | 6522 | static 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 | ||