scsi: sas: Convert timers to use timer_setup()
In preparation for unconditionally passing the struct timer_list pointer to all timer callbacks, switch to using the new timer_setup() and from_timer() to pass the timer pointer explicitly. This requires adding a pointer to hold the timer's target task, as there isn't a link back from slow_task. Cc: John Garry <john.garry@huawei.com> Cc: "James E.J. Bottomley" <jejb@linux.vnet.ibm.com> Cc: "Martin K. Petersen" <martin.petersen@oracle.com> Cc: Jack Wang <jinpu.wang@profitbricks.com> Cc: lindar_liu@usish.com Cc: Jens Axboe <axboe@fb.com> Cc: Hannes Reinecke <hare@suse.com> Cc: Johannes Thumshirn <jthumshirn@suse.de> Cc: Benjamin Block <bblock@linux.vnet.ibm.com> Cc: Baoyou Xie <baoyou.xie@linaro.org> Cc: Wei Yongjun <weiyongjun1@huawei.com> Cc: linux-scsi@vger.kernel.org Signed-off-by: Kees Cook <keescook@chromium.org> Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com> Acked-by: John Garry <john.garry@huawei.com> # for hisi_sas part Tested-by: John Garry <john.garry@huawei.com> # basic sanity test for hisi_sas Reviewed-by: Jack Wang <jinpu.wang@profitbricks.com>
This commit is contained in:
@@ -656,9 +656,10 @@ void pm8001_task_done(struct sas_task *task)
|
||||
complete(&task->slow_task->completion);
|
||||
}
|
||||
|
||||
static void pm8001_tmf_timedout(unsigned long data)
|
||||
static void pm8001_tmf_timedout(struct timer_list *t)
|
||||
{
|
||||
struct sas_task *task = (struct sas_task *)data;
|
||||
struct sas_task_slow *slow = from_timer(slow, t, timer);
|
||||
struct sas_task *task = slow->task;
|
||||
|
||||
task->task_state_flags |= SAS_TASK_STATE_ABORTED;
|
||||
complete(&task->slow_task->completion);
|
||||
@@ -694,8 +695,7 @@ static int pm8001_exec_internal_tmf_task(struct domain_device *dev,
|
||||
task->task_proto = dev->tproto;
|
||||
memcpy(&task->ssp_task, parameter, para_len);
|
||||
task->task_done = pm8001_task_done;
|
||||
task->slow_task->timer.data = (unsigned long)task;
|
||||
task->slow_task->timer.function = pm8001_tmf_timedout;
|
||||
task->slow_task->timer.function = (TIMER_FUNC_TYPE)pm8001_tmf_timedout;
|
||||
task->slow_task->timer.expires = jiffies + PM8001_TASK_TIMEOUT*HZ;
|
||||
add_timer(&task->slow_task->timer);
|
||||
|
||||
@@ -781,8 +781,7 @@ pm8001_exec_internal_task_abort(struct pm8001_hba_info *pm8001_ha,
|
||||
task->dev = dev;
|
||||
task->task_proto = dev->tproto;
|
||||
task->task_done = pm8001_task_done;
|
||||
task->slow_task->timer.data = (unsigned long)task;
|
||||
task->slow_task->timer.function = pm8001_tmf_timedout;
|
||||
task->slow_task->timer.function = (TIMER_FUNC_TYPE)pm8001_tmf_timedout;
|
||||
task->slow_task->timer.expires = jiffies + PM8001_TASK_TIMEOUT * HZ;
|
||||
add_timer(&task->slow_task->timer);
|
||||
|
||||
|
Reference in New Issue
Block a user