Lines Matching refs:task

95 static void sas_ata_task_done(struct sas_task *task)  in sas_ata_task_done()  argument
97 struct ata_queued_cmd *qc = task->uldd_task; in sas_ata_task_done()
98 struct domain_device *dev = task->dev; in sas_ata_task_done()
99 struct task_status_struct *stat = &task->task_status; in sas_ata_task_done()
109 task = NULL; in sas_ata_task_done()
115 if (unlikely(!task)) in sas_ata_task_done()
174 sas_free_task(task); in sas_ata_task_done()
180 struct sas_task *task; in sas_ata_qc_issue() local
200 task = sas_alloc_task(GFP_ATOMIC); in sas_ata_qc_issue()
201 if (!task) in sas_ata_qc_issue()
203 task->dev = dev; in sas_ata_qc_issue()
204 task->task_proto = SAS_PROTOCOL_STP; in sas_ata_qc_issue()
205 task->task_done = sas_ata_task_done; in sas_ata_qc_issue()
213 ata_tf_to_fis(&qc->tf, qc->dev->link->pmp, 1, (u8 *)&task->ata_task.fis); in sas_ata_qc_issue()
214 task->uldd_task = qc; in sas_ata_qc_issue()
216 memcpy(task->ata_task.atapi_packet, qc->cdb, qc->dev->cdb_len); in sas_ata_qc_issue()
217 task->total_xfer_len = qc->nbytes; in sas_ata_qc_issue()
218 task->num_scatter = qc->n_elem; in sas_ata_qc_issue()
223 task->total_xfer_len = xfer; in sas_ata_qc_issue()
224 task->num_scatter = si; in sas_ata_qc_issue()
227 task->data_dir = qc->dma_dir; in sas_ata_qc_issue()
228 task->scatter = qc->sg; in sas_ata_qc_issue()
229 task->ata_task.retry_count = 1; in sas_ata_qc_issue()
230 task->task_state_flags = SAS_TASK_STATE_PENDING; in sas_ata_qc_issue()
231 qc->lldd_task = task; in sas_ata_qc_issue()
235 task->ata_task.use_ncq = 1; in sas_ata_qc_issue()
239 task->ata_task.dma_xfer = 1; in sas_ata_qc_issue()
244 ASSIGN_SAS_TASK(qc->scsicmd, task); in sas_ata_qc_issue()
246 ret = i->dft->lldd_execute_task(task, GFP_ATOMIC); in sas_ata_qc_issue()
252 sas_free_task(task); in sas_ata_qc_issue()
431 static void sas_ata_internal_abort(struct sas_task *task) in sas_ata_internal_abort() argument
433 struct sas_internal *si = dev_to_sas_internal(task->dev); in sas_ata_internal_abort()
437 spin_lock_irqsave(&task->task_state_lock, flags); in sas_ata_internal_abort()
438 if (task->task_state_flags & SAS_TASK_STATE_ABORTED || in sas_ata_internal_abort()
439 task->task_state_flags & SAS_TASK_STATE_DONE) { in sas_ata_internal_abort()
440 spin_unlock_irqrestore(&task->task_state_lock, flags); in sas_ata_internal_abort()
442 task); in sas_ata_internal_abort()
445 task->task_state_flags |= SAS_TASK_STATE_ABORTED; in sas_ata_internal_abort()
446 spin_unlock_irqrestore(&task->task_state_lock, flags); in sas_ata_internal_abort()
448 res = si->dft->lldd_abort_task(task); in sas_ata_internal_abort()
450 spin_lock_irqsave(&task->task_state_lock, flags); in sas_ata_internal_abort()
451 if (task->task_state_flags & SAS_TASK_STATE_DONE || in sas_ata_internal_abort()
453 spin_unlock_irqrestore(&task->task_state_lock, flags); in sas_ata_internal_abort()
462 SAS_DPRINTK("%s: Task %p leaked.\n", __func__, task); in sas_ata_internal_abort()
464 if (!(task->task_state_flags & SAS_TASK_STATE_DONE)) in sas_ata_internal_abort()
465 task->task_state_flags &= ~SAS_TASK_STATE_ABORTED; in sas_ata_internal_abort()
466 spin_unlock_irqrestore(&task->task_state_lock, flags); in sas_ata_internal_abort()
470 sas_free_task(task); in sas_ata_internal_abort()
487 struct sas_task *task = qc->lldd_task; in sas_ata_post_internal() local
490 if (!task) in sas_ata_post_internal()
492 task->uldd_task = NULL; in sas_ata_post_internal()
493 sas_ata_internal_abort(task); in sas_ata_post_internal()
587 void sas_ata_task_abort(struct sas_task *task) in sas_ata_task_abort() argument
589 struct ata_queued_cmd *qc = task->uldd_task; in sas_ata_task_abort()