Lines Matching defs:task
36 /* task delivered, what happened afterwards? */
81 static void sas_ata_task_done(struct sas_task *task)
83 struct ata_queued_cmd *qc = task->uldd_task;
84 struct domain_device *dev = task->dev;
85 struct task_status_struct *stat = &task->task_status;
95 task = NULL;
100 /* check if libsas-eh got to the task before us */
101 if (unlikely(!task))
160 sas_free_task(task);
166 struct sas_task *task;
183 task = sas_alloc_task(GFP_ATOMIC);
184 if (!task)
186 task->dev = dev;
187 task->task_proto = SAS_PROTOCOL_STP;
188 task->task_done = sas_ata_task_done;
199 ata_tf_to_fis(&qc->tf, qc->dev->link->pmp, 1, (u8 *)&task->ata_task.fis);
200 task->uldd_task = qc;
202 memcpy(task->ata_task.atapi_packet, qc->cdb, qc->dev->cdb_len);
203 task->total_xfer_len = qc->nbytes;
204 task->num_scatter = qc->n_elem;
205 task->data_dir = qc->dma_dir;
207 task->data_dir = DMA_NONE;
212 task->total_xfer_len = xfer;
213 task->num_scatter = si;
214 task->data_dir = qc->dma_dir;
216 task->scatter = qc->sg;
217 task->ata_task.retry_count = 1;
218 task->task_state_flags = SAS_TASK_STATE_PENDING;
219 qc->lldd_task = task;
221 task->ata_task.use_ncq = ata_is_ncq(qc->tf.protocol);
222 task->ata_task.dma_xfer = ata_is_dma(qc->tf.protocol);
225 ASSIGN_SAS_TASK(qc->scsicmd, task);
227 ret = i->dft->lldd_execute_task(task, GFP_ATOMIC);
233 sas_free_task(task);
413 static void sas_ata_internal_abort(struct sas_task *task)
415 struct sas_internal *si = dev_to_sas_internal(task->dev);
419 spin_lock_irqsave(&task->task_state_lock, flags);
420 if (task->task_state_flags & SAS_TASK_STATE_ABORTED ||
421 task->task_state_flags & SAS_TASK_STATE_DONE) {
422 spin_unlock_irqrestore(&task->task_state_lock, flags);
423 pr_debug("%s: Task %p already finished.\n", __func__, task);
426 task->task_state_flags |= SAS_TASK_STATE_ABORTED;
427 spin_unlock_irqrestore(&task->task_state_lock, flags);
429 res = si->dft->lldd_abort_task(task);
431 spin_lock_irqsave(&task->task_state_lock, flags);
432 if (task->task_state_flags & SAS_TASK_STATE_DONE ||
434 spin_unlock_irqrestore(&task->task_state_lock, flags);
440 * aborted ata tasks, otherwise we (likely) leak the sas task
443 pr_warn("%s: Task %p leaked.\n", __func__, task);
445 if (!(task->task_state_flags & SAS_TASK_STATE_DONE))
446 task->task_state_flags &= ~SAS_TASK_STATE_ABORTED;
447 spin_unlock_irqrestore(&task->task_state_lock, flags);
451 sas_free_task(task);
465 * ->lldd_abort_task) that the task is dead and free it
468 struct sas_task *task = qc->lldd_task;
471 if (!task)
473 task->uldd_task = NULL;
474 sas_ata_internal_abort(task);
598 void sas_ata_task_abort(struct sas_task *task)
600 struct ata_queued_cmd *qc = task->uldd_task;