Lines Matching refs:task
54 static void sas_end_task(struct scsi_cmnd *sc, struct sas_task *task) in sas_end_task() argument
56 struct task_status_struct *ts = &task->task_status; in sas_end_task()
98 task->dev->port->ha->sas_ha_name); in sas_end_task()
116 sas_free_task(task); in sas_end_task()
119 static void sas_scsi_task_done(struct sas_task *task) in sas_scsi_task_done() argument
121 struct scsi_cmnd *sc = task->uldd_task; in sas_scsi_task_done()
122 struct domain_device *dev = task->dev; in sas_scsi_task_done()
128 task = NULL; in sas_scsi_task_done()
133 if (unlikely(!task)) { in sas_scsi_task_done()
141 sas_free_task(task); in sas_scsi_task_done()
145 sas_end_task(sc, task); in sas_scsi_task_done()
153 struct sas_task *task = sas_alloc_task(gfp_flags); in sas_create_task() local
156 if (!task) in sas_create_task()
159 task->uldd_task = cmd; in sas_create_task()
160 ASSIGN_SAS_TASK(cmd, task); in sas_create_task()
162 task->dev = dev; in sas_create_task()
163 task->task_proto = task->dev->tproto; /* BUG_ON(!SSP) */ in sas_create_task()
165 task->ssp_task.retry_count = 1; in sas_create_task()
167 memcpy(task->ssp_task.LUN, &lun.scsi_lun, 8); in sas_create_task()
168 task->ssp_task.task_attr = TASK_ATTR_SIMPLE; in sas_create_task()
169 task->ssp_task.cmd = cmd; in sas_create_task()
171 task->scatter = scsi_sglist(cmd); in sas_create_task()
172 task->num_scatter = scsi_sg_count(cmd); in sas_create_task()
173 task->total_xfer_len = scsi_bufflen(cmd); in sas_create_task()
174 task->data_dir = cmd->sc_data_direction; in sas_create_task()
176 task->task_done = sas_scsi_task_done; in sas_create_task()
178 return task; in sas_create_task()
185 struct sas_task *task; in sas_queuecommand() local
201 task = sas_create_task(cmd, dev, GFP_ATOMIC); in sas_queuecommand()
202 if (!task) in sas_queuecommand()
205 res = i->dft->lldd_execute_task(task, GFP_ATOMIC); in sas_queuecommand()
213 sas_free_task(task); in sas_queuecommand()
227 struct sas_task *task = TO_SAS_TASK(cmd); in sas_eh_finish_cmd() local
233 sas_end_task(cmd, task); in sas_eh_finish_cmd()
296 static enum task_disposition sas_scsi_find_task(struct sas_task *task) in sas_scsi_find_task() argument
301 to_sas_internal(task->dev->port->ha->core.shost->transportt); in sas_scsi_find_task()
304 SAS_DPRINTK("%s: aborting task 0x%p\n", __func__, task); in sas_scsi_find_task()
305 res = si->dft->lldd_abort_task(task); in sas_scsi_find_task()
307 spin_lock_irqsave(&task->task_state_lock, flags); in sas_scsi_find_task()
308 if (task->task_state_flags & SAS_TASK_STATE_DONE) { in sas_scsi_find_task()
309 spin_unlock_irqrestore(&task->task_state_lock, flags); in sas_scsi_find_task()
311 task); in sas_scsi_find_task()
314 spin_unlock_irqrestore(&task->task_state_lock, flags); in sas_scsi_find_task()
318 __func__, task); in sas_scsi_find_task()
322 __func__, task); in sas_scsi_find_task()
323 res = si->dft->lldd_query_task(task); in sas_scsi_find_task()
327 __func__, task); in sas_scsi_find_task()
331 __func__, task); in sas_scsi_find_task()
335 __func__, task); in sas_scsi_find_task()
484 struct sas_task *task = TO_SAS_TASK(cmd); in sas_eh_abort_handler() local
501 if (task) in sas_eh_abort_handler()
502 res = i->dft->lldd_abort_task(task); in sas_eh_abort_handler()
590 struct sas_task *task; in sas_eh_handle_sas_errors() local
597 task = TO_SAS_TASK(cmd); in sas_eh_handle_sas_errors()
600 if (!task) in sas_eh_handle_sas_errors()
606 struct sas_task *task = TO_SAS_TASK(cmd); in sas_eh_handle_sas_errors() local
610 spin_lock_irqsave(&task->task_state_lock, flags); in sas_eh_handle_sas_errors()
611 need_reset = task->task_state_flags & SAS_TASK_NEED_DEV_RESET; in sas_eh_handle_sas_errors()
612 spin_unlock_irqrestore(&task->task_state_lock, flags); in sas_eh_handle_sas_errors()
616 __func__, task); in sas_eh_handle_sas_errors()
620 SAS_DPRINTK("trying to find task 0x%p\n", task); in sas_eh_handle_sas_errors()
621 res = sas_scsi_find_task(task); in sas_eh_handle_sas_errors()
626 task); in sas_eh_handle_sas_errors()
631 __func__, task); in sas_eh_handle_sas_errors()
635 SAS_DPRINTK("task 0x%p is at LU: lu recover\n", task); in sas_eh_handle_sas_errors()
637 tmf_resp = sas_recover_lu(task->dev, cmd); in sas_eh_handle_sas_errors()
641 SAS_ADDR(task->dev), in sas_eh_handle_sas_errors()
651 task); in sas_eh_handle_sas_errors()
652 tmf_resp = sas_recover_I_T(task->dev); in sas_eh_handle_sas_errors()
655 struct domain_device *dev = task->dev; in sas_eh_handle_sas_errors()
657 SAS_ADDR(task->dev->sas_addr)); in sas_eh_handle_sas_errors()
665 struct asd_sas_port *port = task->dev->port; in sas_eh_handle_sas_errors()
694 SAS_ADDR(task->dev->sas_addr), in sas_eh_handle_sas_errors()
917 void sas_task_abort(struct sas_task *task) in sas_task_abort() argument
919 struct scsi_cmnd *sc = task->uldd_task; in sas_task_abort()
923 struct sas_task_slow *slow = task->slow_task; in sas_task_abort()
933 if (dev_is_sata(task->dev)) { in sas_task_abort()
934 sas_ata_task_abort(task); in sas_task_abort()