Lines Matching refs:task
53 static void sas_end_task(struct scsi_cmnd *sc, struct sas_task *task) in sas_end_task() argument
55 struct task_status_struct *ts = &task->task_status; in sas_end_task()
97 task->dev->port->ha->sas_ha_name); in sas_end_task()
115 sas_free_task(task); in sas_end_task()
118 static void sas_scsi_task_done(struct sas_task *task) in sas_scsi_task_done() argument
120 struct scsi_cmnd *sc = task->uldd_task; in sas_scsi_task_done()
121 struct domain_device *dev = task->dev; in sas_scsi_task_done()
127 task = NULL; in sas_scsi_task_done()
132 if (unlikely(!task)) { in sas_scsi_task_done()
140 sas_free_task(task); in sas_scsi_task_done()
144 sas_end_task(sc, task); in sas_scsi_task_done()
152 struct sas_task *task = sas_alloc_task(gfp_flags); in sas_create_task() local
155 if (!task) in sas_create_task()
158 task->uldd_task = cmd; in sas_create_task()
159 ASSIGN_SAS_TASK(cmd, task); in sas_create_task()
161 task->dev = dev; in sas_create_task()
162 task->task_proto = task->dev->tproto; /* BUG_ON(!SSP) */ in sas_create_task()
164 task->ssp_task.retry_count = 1; in sas_create_task()
166 memcpy(task->ssp_task.LUN, &lun.scsi_lun, 8); in sas_create_task()
167 task->ssp_task.task_attr = TASK_ATTR_SIMPLE; in sas_create_task()
168 task->ssp_task.cmd = cmd; in sas_create_task()
170 task->scatter = scsi_sglist(cmd); in sas_create_task()
171 task->num_scatter = scsi_sg_count(cmd); in sas_create_task()
172 task->total_xfer_len = scsi_bufflen(cmd); in sas_create_task()
173 task->data_dir = cmd->sc_data_direction; in sas_create_task()
175 task->task_done = sas_scsi_task_done; in sas_create_task()
177 return task; in sas_create_task()
184 struct sas_task *task; in sas_queuecommand() local
200 task = sas_create_task(cmd, dev, GFP_ATOMIC); in sas_queuecommand()
201 if (!task) in sas_queuecommand()
204 res = i->dft->lldd_execute_task(task, GFP_ATOMIC); in sas_queuecommand()
212 sas_free_task(task); in sas_queuecommand()
225 struct sas_task *task = TO_SAS_TASK(cmd); in sas_eh_finish_cmd() local
231 sas_end_task(cmd, task); in sas_eh_finish_cmd()
244 struct sas_task *task = TO_SAS_TASK(cmd); in sas_eh_defer_cmd() local
252 sas_end_task(cmd, task); in sas_eh_defer_cmd()
302 static enum task_disposition sas_scsi_find_task(struct sas_task *task) in sas_scsi_find_task() argument
307 to_sas_internal(task->dev->port->ha->core.shost->transportt); in sas_scsi_find_task()
310 SAS_DPRINTK("%s: aborting task 0x%p\n", __func__, task); in sas_scsi_find_task()
311 res = si->dft->lldd_abort_task(task); in sas_scsi_find_task()
313 spin_lock_irqsave(&task->task_state_lock, flags); in sas_scsi_find_task()
314 if (task->task_state_flags & SAS_TASK_STATE_DONE) { in sas_scsi_find_task()
315 spin_unlock_irqrestore(&task->task_state_lock, flags); in sas_scsi_find_task()
317 task); in sas_scsi_find_task()
320 spin_unlock_irqrestore(&task->task_state_lock, flags); in sas_scsi_find_task()
324 __func__, task); in sas_scsi_find_task()
328 __func__, task); in sas_scsi_find_task()
329 res = si->dft->lldd_query_task(task); in sas_scsi_find_task()
333 __func__, task); in sas_scsi_find_task()
337 __func__, task); in sas_scsi_find_task()
341 __func__, task); in sas_scsi_find_task()
490 struct sas_task *task = TO_SAS_TASK(cmd); in sas_eh_abort_handler() local
500 res = i->dft->lldd_abort_task(task); in sas_eh_abort_handler()
586 struct sas_task *task; in sas_eh_handle_sas_errors() local
593 task = TO_SAS_TASK(cmd); in sas_eh_handle_sas_errors()
596 if (!task) in sas_eh_handle_sas_errors()
602 struct sas_task *task = TO_SAS_TASK(cmd); in sas_eh_handle_sas_errors() local
606 spin_lock_irqsave(&task->task_state_lock, flags); in sas_eh_handle_sas_errors()
607 need_reset = task->task_state_flags & SAS_TASK_NEED_DEV_RESET; in sas_eh_handle_sas_errors()
608 spin_unlock_irqrestore(&task->task_state_lock, flags); in sas_eh_handle_sas_errors()
612 __func__, task); in sas_eh_handle_sas_errors()
616 SAS_DPRINTK("trying to find task 0x%p\n", task); in sas_eh_handle_sas_errors()
617 res = sas_scsi_find_task(task); in sas_eh_handle_sas_errors()
624 task); in sas_eh_handle_sas_errors()
629 __func__, task); in sas_eh_handle_sas_errors()
633 SAS_DPRINTK("task 0x%p is at LU: lu recover\n", task); in sas_eh_handle_sas_errors()
635 tmf_resp = sas_recover_lu(task->dev, cmd); in sas_eh_handle_sas_errors()
639 SAS_ADDR(task->dev), in sas_eh_handle_sas_errors()
649 task); in sas_eh_handle_sas_errors()
650 tmf_resp = sas_recover_I_T(task->dev); in sas_eh_handle_sas_errors()
653 struct domain_device *dev = task->dev; in sas_eh_handle_sas_errors()
655 SAS_ADDR(task->dev->sas_addr)); in sas_eh_handle_sas_errors()
663 struct asd_sas_port *port = task->dev->port; in sas_eh_handle_sas_errors()
692 SAS_ADDR(task->dev->sas_addr), in sas_eh_handle_sas_errors()
925 void sas_task_abort(struct sas_task *task) in sas_task_abort() argument
927 struct scsi_cmnd *sc = task->uldd_task; in sas_task_abort()
931 struct sas_task_slow *slow = task->slow_task; in sas_task_abort()
941 if (dev_is_sata(task->dev)) { in sas_task_abort()
942 sas_ata_task_abort(task); in sas_task_abort()