Lines Matching defs:task

29 /* ---------- SMP task management ---------- */
38 struct sas_task *task = NULL;
51 task = sas_alloc_slow_task(GFP_KERNEL);
52 if (!task) {
56 task->dev = dev;
57 task->task_proto = dev->tproto;
58 task->smp_task.smp_req = *req;
59 task->smp_task.smp_resp = *resp;
61 task->task_done = sas_task_internal_done;
63 task->slow_task->timer.function = sas_task_internal_timedout;
64 task->slow_task->timer.expires = jiffies + SMP_TIMEOUT*HZ;
65 add_timer(&task->slow_task->timer);
67 res = i->dft->lldd_execute_task(task, GFP_KERNEL);
70 del_timer_sync(&task->slow_task->timer);
71 pr_notice("executing SMP task failed:%d\n", res);
75 wait_for_completion(&task->slow_task->completion);
77 if ((task->task_state_flags & SAS_TASK_STATE_ABORTED)) {
78 pr_notice("smp task timed out or aborted\n");
79 i->dft->lldd_abort_task(task);
80 if (!(task->task_state_flags & SAS_TASK_STATE_DONE)) {
81 pr_notice("SMP task aborted and not done\n");
85 if (task->task_status.resp == SAS_TASK_COMPLETE &&
86 task->task_status.stat == SAS_SAM_STAT_GOOD) {
90 if (task->task_status.resp == SAS_TASK_COMPLETE &&
91 task->task_status.stat == SAS_DATA_UNDERRUN) {
94 res = task->task_status.residual;
97 if (task->task_status.resp == SAS_TASK_COMPLETE &&
98 task->task_status.stat == SAS_DATA_OVERRUN) {
102 if (task->task_status.resp == SAS_TASK_UNDELIVERED &&
103 task->task_status.stat == SAS_DEVICE_UNKNOWN)
106 pr_notice("%s: task to dev %016llx response: 0x%x status 0x%x\n",
109 task->task_status.resp,
110 task->task_status.stat);
111 sas_free_task(task);
112 task = NULL;
118 BUG_ON(retry == 3 && task != NULL);
119 sas_free_task(task);