• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/drivers/scsi/libsas/

Lines Matching refs:task

35 /* ---------- Basic task processing for discovery purposes ---------- */
60 struct sas_task *task = (void *) _task;
63 spin_lock_irqsave(&task->task_state_lock, flags);
64 if (!(task->task_state_flags & SAS_TASK_STATE_DONE))
65 task->task_state_flags |= SAS_TASK_STATE_ABORTED;
66 spin_unlock_irqrestore(&task->task_state_lock, flags);
68 complete(&task->completion);
71 static void sas_disc_task_done(struct sas_task *task)
73 if (!del_timer(&task->timer))
75 complete(&task->completion);
81 * sas_execute_task -- Basic task processing for discovery
82 * @task: the task to be executed
87 static int sas_execute_task(struct sas_task *task, void *buffer, int size,
92 struct task_status_struct *ts = &task->task_status;
96 to_sas_internal(task->dev->port->ha->core.shost->transportt);
107 task->task_proto = task->dev->tproto;
108 task->scatter = scatter;
109 task->num_scatter = num_scatter;
110 task->total_xfer_len = size;
111 task->data_dir = pci_dma_dir;
112 task->task_done = sas_disc_task_done;
115 task->task_state_flags = SAS_TASK_STATE_PENDING;
116 init_completion(&task->completion);
118 task->timer.data = (unsigned long) task;
119 task->timer.function = sas_task_timedout;
120 task->timer.expires = jiffies + SAS_DEV_TIMEOUT*HZ;
121 add_timer(&task->timer);
123 res = i->dft->lldd_execute_task(task, 1, GFP_KERNEL);
125 del_timer(&task->timer);
126 SAS_DPRINTK("executing SAS discovery task failed:%d\n",
130 wait_for_completion(&task->completion);
132 if (task->task_state_flags & SAS_TASK_STATE_ABORTED) {
134 SAS_DPRINTK("task aborted, flags:0x%x\n",
135 task->task_state_flags);
136 res2 = i->dft->lldd_abort_task(task);
137 SAS_DPRINTK("came back from abort task\n");
138 if (!(task->task_state_flags & SAS_TASK_STATE_DONE)) {
140 continue; /* Retry the task */
145 if (task->task_status.stat == SAM_BUSY ||
146 task->task_status.stat == SAM_TASK_SET_FULL ||
147 task->task_status.stat == SAS_QUEUE_FULL) {
148 SAS_DPRINTK("task: q busy, sleeping...\n");
150 } else if (task->task_status.stat == SAM_CHECK_COND) {
164 SAS_ADDR(task->dev->sas_addr),
165 SAS_ADDR(task->ssp_task.LUN));
177 SAS_ADDR(task->dev->sas_addr),
178 SAS_ADDR(task->ssp_task.LUN),
182 } else if (task->task_status.resp != SAS_TASK_COMPLETE ||
183 task->task_status.stat != SAM_GOOD) {
184 SAS_DPRINTK("task finished with resp:0x%x, "
186 task->task_status.resp,
187 task->task_status.stat);
363 struct sas_task *task;
368 task = sas_alloc_task(GFP_KERNEL);
369 if (!task)
372 task->dev = dev;
374 task->ata_task.fis.command = command;
375 task->ata_task.fis.features = features;
376 task->ata_task.fis.device = d2h_fis->device;
377 task->ata_task.retry_count = 1;
379 res = sas_execute_task(task, buffer, size, pci_dma_dir);
381 sas_free_task(task);