summaryrefslogtreecommitdiffstats
path: root/drivers/scsi/isci/task.c
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2011-03-02 11:49:26 -0800
committerDan Williams <dan.j.williams@intel.com>2011-07-03 03:55:28 -0700
commit7c40a8035815479c7c12ab0cdcea71e0f4c3a9c8 (patch)
tree43290f7b96374f0ff8e80ad5e8620f3dc8242f1a /drivers/scsi/isci/task.c
parent150fc6fc725055b400a8865e6785dc8dd0a2225d (diff)
downloadop-kernel-dev-7c40a8035815479c7c12ab0cdcea71e0f4c3a9c8.zip
op-kernel-dev-7c40a8035815479c7c12ab0cdcea71e0f4c3a9c8.tar.gz
isci: rework timer api
Prepare the timer api for the arrival of dynamic creation and destruction events from the core. It pretended to do this previously but the core to date only used it in a static init-time only fashion. This is an interim fix until a cleaner event queue can be developed. 1/ make all locking external to the api (add WARN_ONCE to verify) 2/ add a timer_destroy interface (to be used by the core) 3/ use del_timer_sync() prior to deallocating timer data 4/ delete the "timer_list" indirection, we only have timers allocated for the isci_host 5/ fix detection of timer list allocation errors Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers/scsi/isci/task.c')
-rw-r--r--drivers/scsi/isci/task.c17
1 files changed, 3 insertions, 14 deletions
diff --git a/drivers/scsi/isci/task.c b/drivers/scsi/isci/task.c
index 6f98f6c..232125e 100644
--- a/drivers/scsi/isci/task.c
+++ b/drivers/scsi/isci/task.c
@@ -475,14 +475,8 @@ int isci_task_execute_tmf(
}
/* Allocate the TMF timeout timer. */
- tmf->timeout_timer = isci_timer_create(
- &isci_host->timer_list_struct,
- isci_host,
- request,
- isci_tmf_timeout_cb
- );
-
spin_lock_irqsave(&isci_host->scic_lock, flags);
+ tmf->timeout_timer = isci_timer_create(isci_host, request, isci_tmf_timeout_cb);
/* Start the timer. */
if (tmf->timeout_timer)
@@ -557,9 +551,7 @@ int isci_task_execute_tmf(
/* Clean up the timer if needed. */
if (tmf->timeout_timer) {
- isci_timer_stop(tmf->timeout_timer);
- isci_timer_free(&isci_host->timer_list_struct,
- tmf->timeout_timer);
+ isci_del_timer(isci_host, tmf->timeout_timer);
tmf->timeout_timer = NULL;
}
@@ -1468,10 +1460,7 @@ void isci_task_request_complete(
/* Manage the timer if it is still running. */
if (tmf->timeout_timer) {
-
- isci_timer_stop(tmf->timeout_timer);
- isci_timer_free(&isci_host->timer_list_struct,
- tmf->timeout_timer);
+ isci_del_timer(isci_host, tmf->timeout_timer);
tmf->timeout_timer = NULL;
}
OpenPOWER on IntegriCloud