Lines Matching defs:task
36 /* record final status and free the task */
37 static void sas_end_task(struct scsi_cmnd *sc, struct sas_task *task)
39 struct task_status_struct *ts = &task->task_status;
46 /* task delivered, what happened afterwards? */
79 pr_notice("LLDD:%s sent SAS_PROTO_RESP for an SSP task; please report this\n",
80 task->dev->port->ha->sas_ha_name);
98 sas_free_task(task);
101 static void sas_scsi_task_done(struct sas_task *task)
103 struct scsi_cmnd *sc = task->uldd_task;
104 struct domain_device *dev = task->dev;
110 task = NULL;
115 if (unlikely(!task)) {
116 /* task will be completed by the error handler */
117 pr_debug("task done but aborted\n");
123 sas_free_task(task);
127 sas_end_task(sc, task);
135 struct sas_task *task = sas_alloc_task(gfp_flags);
138 if (!task)
141 task->uldd_task = cmd;
142 ASSIGN_SAS_TASK(cmd, task);
144 task->dev = dev;
145 task->task_proto = task->dev->tproto; /* BUG_ON(!SSP) */
147 task->ssp_task.retry_count = 1;
149 memcpy(task->ssp_task.LUN, &lun.scsi_lun, 8);
150 task->ssp_task.task_attr = TASK_ATTR_SIMPLE;
151 task->ssp_task.cmd = cmd;
153 task->scatter = scsi_sglist(cmd);
154 task->num_scatter = scsi_sg_count(cmd);
155 task->total_xfer_len = scsi_bufflen(cmd);
156 task->data_dir = cmd->sc_data_direction;
158 task->task_done = sas_scsi_task_done;
160 return task;
167 struct sas_task *task;
183 task = sas_create_task(cmd, dev, GFP_ATOMIC);
184 if (!task)
187 res = i->dft->lldd_execute_task(task, GFP_ATOMIC);
195 sas_free_task(task);
209 struct sas_task *task = TO_SAS_TASK(cmd);
212 * of the task, so we should be guaranteed not to be racing with
215 sas_end_task(cmd, task);
278 static enum task_disposition sas_scsi_find_task(struct sas_task *task)
283 to_sas_internal(task->dev->port->ha->core.shost->transportt);
286 pr_notice("%s: aborting task 0x%p\n", __func__, task);
287 res = si->dft->lldd_abort_task(task);
289 spin_lock_irqsave(&task->task_state_lock, flags);
290 if (task->task_state_flags & SAS_TASK_STATE_DONE) {
291 spin_unlock_irqrestore(&task->task_state_lock, flags);
292 pr_debug("%s: task 0x%p is done\n", __func__, task);
295 spin_unlock_irqrestore(&task->task_state_lock, flags);
298 pr_notice("%s: task 0x%p is aborted\n",
299 __func__, task);
302 pr_notice("%s: querying task 0x%p\n", __func__, task);
303 res = si->dft->lldd_query_task(task);
306 pr_notice("%s: task 0x%p at LU\n", __func__,
307 task);
310 pr_notice("%s: task 0x%p not at LU\n",
311 __func__, task);
314 pr_notice("%s: task 0x%p failed to abort\n",
315 __func__, task);
333 pr_notice("eh: device %016llx LUN 0x%llx has the task\n",
463 struct sas_task *task = TO_SAS_TASK(cmd);
480 if (task)
481 res = i->dft->lldd_abort_task(task);
483 pr_notice("no task to abort\n");
569 struct sas_task *task;
573 * SAS_HA_FROZEN and is leaving the task alone, or has
576 task = TO_SAS_TASK(cmd);
579 if (!task)
585 struct sas_task *task = TO_SAS_TASK(cmd);
589 spin_lock_irqsave(&task->task_state_lock, flags);
590 need_reset = task->task_state_flags & SAS_TASK_NEED_DEV_RESET;
591 spin_unlock_irqrestore(&task->task_state_lock, flags);
594 pr_notice("%s: task 0x%p requests reset\n",
595 __func__, task);
599 pr_debug("trying to find task 0x%p\n", task);
600 res = sas_scsi_find_task(task);
604 pr_notice("%s: task 0x%p is done\n", __func__,
605 task);
609 pr_notice("%s: task 0x%p is aborted\n",
610 __func__, task);
614 pr_info("task 0x%p is at LU: lu recover\n", task);
616 tmf_resp = sas_recover_lu(task->dev, cmd);
619 SAS_ADDR(task->dev),
628 pr_notice("task 0x%p is not at LU: I_T recover\n",
629 task);
630 tmf_resp = sas_recover_I_T(task->dev);
633 struct domain_device *dev = task->dev;
635 SAS_ADDR(task->dev->sas_addr));
643 struct asd_sas_port *port = task->dev->port;
670 SAS_ADDR(task->dev->sas_addr),
889 * Tell an upper layer that it needs to initiate an abort for a given task.
892 void sas_task_abort(struct sas_task *task)
894 struct scsi_cmnd *sc = task->uldd_task;
898 struct sas_task_slow *slow = task->slow_task;
908 if (dev_is_sata(task->dev))
909 sas_ata_task_abort(task);