Lines Matching defs:task
29 /* ---------- SMP task management ---------- */
34 struct sas_task *task = slow->task;
37 spin_lock_irqsave(&task->task_state_lock, flags);
38 if (!(task->task_state_flags & SAS_TASK_STATE_DONE)) {
39 task->task_state_flags |= SAS_TASK_STATE_ABORTED;
40 complete(&task->slow_task->completion);
42 spin_unlock_irqrestore(&task->task_state_lock, flags);
45 static void smp_task_done(struct sas_task *task)
47 del_timer(&task->slow_task->timer);
48 complete(&task->slow_task->completion);
58 struct sas_task *task = NULL;
69 task = sas_alloc_slow_task(GFP_KERNEL);
70 if (!task) {
74 task->dev = dev;
75 task->task_proto = dev->tproto;
76 task->smp_task.smp_req = *req;
77 task->smp_task.smp_resp = *resp;
79 task->task_done = smp_task_done;
81 task->slow_task->timer.function = smp_task_timedout;
82 task->slow_task->timer.expires = jiffies + SMP_TIMEOUT*HZ;
83 add_timer(&task->slow_task->timer);
85 res = i->dft->lldd_execute_task(task, GFP_KERNEL);
88 del_timer_sync(&task->slow_task->timer);
89 pr_notice("executing SMP task failed:%d\n", res);
93 wait_for_completion(&task->slow_task->completion);
95 if ((task->task_state_flags & SAS_TASK_STATE_ABORTED)) {
96 pr_notice("smp task timed out or aborted\n");
97 i->dft->lldd_abort_task(task);
98 if (!(task->task_state_flags & SAS_TASK_STATE_DONE)) {
99 pr_notice("SMP task aborted and not done\n");
103 if (task->task_status.resp == SAS_TASK_COMPLETE &&
104 task->task_status.stat == SAS_SAM_STAT_GOOD) {
108 if (task->task_status.resp == SAS_TASK_COMPLETE &&
109 task->task_status.stat == SAS_DATA_UNDERRUN) {
112 res = task->task_status.residual;
115 if (task->task_status.resp == SAS_TASK_COMPLETE &&
116 task->task_status.stat == SAS_DATA_OVERRUN) {
120 if (task->task_status.resp == SAS_TASK_UNDELIVERED &&
121 task->task_status.stat == SAS_DEVICE_UNKNOWN)
124 pr_notice("%s: task to dev %016llx response: 0x%x status 0x%x\n",
127 task->task_status.resp,
128 task->task_status.stat);
129 sas_free_task(task);
130 task = NULL;
135 BUG_ON(retry == 3 && task != NULL);
136 sas_free_task(task);