Lines Matching refs:task

46 	struct sas_task *task = (void *) _task;  in smp_task_timedout()  local
49 spin_lock_irqsave(&task->task_state_lock, flags); in smp_task_timedout()
50 if (!(task->task_state_flags & SAS_TASK_STATE_DONE)) in smp_task_timedout()
51 task->task_state_flags |= SAS_TASK_STATE_ABORTED; in smp_task_timedout()
52 spin_unlock_irqrestore(&task->task_state_lock, flags); in smp_task_timedout()
54 complete(&task->slow_task->completion); in smp_task_timedout()
57 static void smp_task_done(struct sas_task *task) in smp_task_done() argument
59 if (!del_timer(&task->slow_task->timer)) in smp_task_done()
61 complete(&task->slow_task->completion); in smp_task_done()
71 struct sas_task *task = NULL; in smp_execute_task() local
82 task = sas_alloc_slow_task(GFP_KERNEL); in smp_execute_task()
83 if (!task) { in smp_execute_task()
87 task->dev = dev; in smp_execute_task()
88 task->task_proto = dev->tproto; in smp_execute_task()
89 sg_init_one(&task->smp_task.smp_req, req, req_size); in smp_execute_task()
90 sg_init_one(&task->smp_task.smp_resp, resp, resp_size); in smp_execute_task()
92 task->task_done = smp_task_done; in smp_execute_task()
94 task->slow_task->timer.data = (unsigned long) task; in smp_execute_task()
95 task->slow_task->timer.function = smp_task_timedout; in smp_execute_task()
96 task->slow_task->timer.expires = jiffies + SMP_TIMEOUT*HZ; in smp_execute_task()
97 add_timer(&task->slow_task->timer); in smp_execute_task()
99 res = i->dft->lldd_execute_task(task, GFP_KERNEL); in smp_execute_task()
102 del_timer(&task->slow_task->timer); in smp_execute_task()
107 wait_for_completion(&task->slow_task->completion); in smp_execute_task()
109 if ((task->task_state_flags & SAS_TASK_STATE_ABORTED)) { in smp_execute_task()
111 i->dft->lldd_abort_task(task); in smp_execute_task()
112 if (!(task->task_state_flags & SAS_TASK_STATE_DONE)) { in smp_execute_task()
117 if (task->task_status.resp == SAS_TASK_COMPLETE && in smp_execute_task()
118 task->task_status.stat == SAM_STAT_GOOD) { in smp_execute_task()
122 if (task->task_status.resp == SAS_TASK_COMPLETE && in smp_execute_task()
123 task->task_status.stat == SAS_DATA_UNDERRUN) { in smp_execute_task()
126 res = task->task_status.residual; in smp_execute_task()
129 if (task->task_status.resp == SAS_TASK_COMPLETE && in smp_execute_task()
130 task->task_status.stat == SAS_DATA_OVERRUN) { in smp_execute_task()
134 if (task->task_status.resp == SAS_TASK_UNDELIVERED && in smp_execute_task()
135 task->task_status.stat == SAS_DEVICE_UNKNOWN) in smp_execute_task()
141 task->task_status.resp, in smp_execute_task()
142 task->task_status.stat); in smp_execute_task()
143 sas_free_task(task); in smp_execute_task()
144 task = NULL; in smp_execute_task()
149 BUG_ON(retry == 3 && task != NULL); in smp_execute_task()
150 sas_free_task(task); in smp_execute_task()