Lines Matching refs:cmd
131 static struct sas_task *sas_create_task(struct scsi_cmnd *cmd, in sas_create_task() argument
141 task->uldd_task = cmd; in sas_create_task()
142 ASSIGN_SAS_TASK(cmd, task); in sas_create_task()
148 int_to_scsilun(cmd->device->lun, &lun); in sas_create_task()
151 task->ssp_task.cmd = cmd; in sas_create_task()
153 task->scatter = scsi_sglist(cmd); in sas_create_task()
154 task->num_scatter = scsi_sg_count(cmd); in sas_create_task()
155 task->total_xfer_len = scsi_bufflen(cmd); in sas_create_task()
156 task->data_dir = cmd->sc_data_direction; in sas_create_task()
163 int sas_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmd) in sas_queuecommand() argument
166 struct domain_device *dev = cmd_to_domain_dev(cmd); in sas_queuecommand()
172 cmd->result = DID_BAD_TARGET << 16; in sas_queuecommand()
178 res = ata_sas_queuecmd(cmd, dev->sata_dev.ap); in sas_queuecommand()
183 task = sas_create_task(cmd, dev, GFP_ATOMIC); in sas_queuecommand()
194 ASSIGN_SAS_TASK(cmd, NULL); in sas_queuecommand()
197 cmd->result = DID_SOFT_ERROR << 16; /* retry */ in sas_queuecommand()
199 cmd->result = DID_ERROR << 16; in sas_queuecommand()
201 cmd->scsi_done(cmd); in sas_queuecommand()
205 static void sas_eh_finish_cmd(struct scsi_cmnd *cmd) in sas_eh_finish_cmd() argument
207 struct sas_ha_struct *sas_ha = SHOST_TO_SAS_HA(cmd->device->host); in sas_eh_finish_cmd()
208 struct domain_device *dev = cmd_to_domain_dev(cmd); in sas_eh_finish_cmd()
209 struct sas_task *task = TO_SAS_TASK(cmd); in sas_eh_finish_cmd()
215 sas_end_task(cmd, task); in sas_eh_finish_cmd()
221 list_move_tail(&cmd->eh_entry, &sas_ha->eh_ata_q); in sas_eh_finish_cmd()
229 scsi_eh_finish_cmd(cmd, &sas_ha->eh_done_q); in sas_eh_finish_cmd()
234 struct scsi_cmnd *cmd, *n; in sas_scsi_clear_queue_lu() local
236 list_for_each_entry_safe(cmd, n, error_q, eh_entry) { in sas_scsi_clear_queue_lu()
237 if (cmd->device->sdev_target == my_cmd->device->sdev_target && in sas_scsi_clear_queue_lu()
238 cmd->device->lun == my_cmd->device->lun) in sas_scsi_clear_queue_lu()
239 sas_eh_finish_cmd(cmd); in sas_scsi_clear_queue_lu()
246 struct scsi_cmnd *cmd, *n; in sas_scsi_clear_queue_I_T() local
248 list_for_each_entry_safe(cmd, n, error_q, eh_entry) { in sas_scsi_clear_queue_I_T()
249 struct domain_device *x = cmd_to_domain_dev(cmd); in sas_scsi_clear_queue_I_T()
252 sas_eh_finish_cmd(cmd); in sas_scsi_clear_queue_I_T()
259 struct scsi_cmnd *cmd, *n; in sas_scsi_clear_queue_port() local
261 list_for_each_entry_safe(cmd, n, error_q, eh_entry) { in sas_scsi_clear_queue_port()
262 struct domain_device *dev = cmd_to_domain_dev(cmd); in sas_scsi_clear_queue_port()
266 sas_eh_finish_cmd(cmd); in sas_scsi_clear_queue_port()
324 static int sas_recover_lu(struct domain_device *dev, struct scsi_cmnd *cmd) in sas_recover_lu() argument
331 int_to_scsilun(cmd->device->lun, &lun); in sas_recover_lu()
335 cmd->device->lun); in sas_recover_lu()
460 int sas_eh_abort_handler(struct scsi_cmnd *cmd) in sas_eh_abort_handler() argument
463 struct sas_task *task = TO_SAS_TASK(cmd); in sas_eh_abort_handler()
464 struct Scsi_Host *host = cmd->device->host; in sas_eh_abort_handler()
465 struct domain_device *dev = cmd_to_domain_dev(cmd); in sas_eh_abort_handler()
492 int sas_eh_device_reset_handler(struct scsi_cmnd *cmd) in sas_eh_device_reset_handler() argument
496 struct Scsi_Host *host = cmd->device->host; in sas_eh_device_reset_handler()
497 struct domain_device *dev = cmd_to_domain_dev(cmd); in sas_eh_device_reset_handler()
501 return sas_queue_reset(dev, SAS_DEV_LU_RESET, cmd->device->lun, 0); in sas_eh_device_reset_handler()
503 int_to_scsilun(cmd->device->lun, &lun); in sas_eh_device_reset_handler()
515 int sas_eh_target_reset_handler(struct scsi_cmnd *cmd) in sas_eh_target_reset_handler() argument
518 struct Scsi_Host *host = cmd->device->host; in sas_eh_target_reset_handler()
519 struct domain_device *dev = cmd_to_domain_dev(cmd); in sas_eh_target_reset_handler()
537 static int try_to_reset_cmd_device(struct scsi_cmnd *cmd) in try_to_reset_cmd_device() argument
540 struct Scsi_Host *shost = cmd->device->host; in try_to_reset_cmd_device()
545 res = shost->hostt->eh_device_reset_handler(cmd); in try_to_reset_cmd_device()
551 return shost->hostt->eh_target_reset_handler(cmd); in try_to_reset_cmd_device()
558 struct scsi_cmnd *cmd, *n; in sas_eh_handle_sas_errors() local
567 list_for_each_entry_safe(cmd, n, work_q, eh_entry) { in sas_eh_handle_sas_errors()
568 struct domain_device *dev = cmd_to_domain_dev(cmd); in sas_eh_handle_sas_errors()
576 task = TO_SAS_TASK(cmd); in sas_eh_handle_sas_errors()
580 list_move_tail(&cmd->eh_entry, &done); in sas_eh_handle_sas_errors()
584 list_for_each_entry_safe(cmd, n, work_q, eh_entry) { in sas_eh_handle_sas_errors()
585 struct sas_task *task = TO_SAS_TASK(cmd); in sas_eh_handle_sas_errors()
587 list_del_init(&cmd->eh_entry); in sas_eh_handle_sas_errors()
606 sas_eh_finish_cmd(cmd); in sas_eh_handle_sas_errors()
611 sas_eh_finish_cmd(cmd); in sas_eh_handle_sas_errors()
616 tmf_resp = sas_recover_lu(task->dev, cmd); in sas_eh_handle_sas_errors()
620 cmd->device->lun); in sas_eh_handle_sas_errors()
621 sas_eh_finish_cmd(cmd); in sas_eh_handle_sas_errors()
622 sas_scsi_clear_queue_lu(work_q, cmd); in sas_eh_handle_sas_errors()
636 sas_eh_finish_cmd(cmd); in sas_eh_handle_sas_errors()
641 try_to_reset_cmd_device(cmd); in sas_eh_handle_sas_errors()
650 sas_eh_finish_cmd(cmd); in sas_eh_handle_sas_errors()
661 sas_eh_finish_cmd(cmd); in sas_eh_handle_sas_errors()
671 cmd->device->lun); in sas_eh_handle_sas_errors()
673 sas_eh_finish_cmd(cmd); in sas_eh_handle_sas_errors()
684 list_for_each_entry_safe(cmd, n, work_q, eh_entry) in sas_eh_handle_sas_errors()
685 sas_eh_finish_cmd(cmd); in sas_eh_handle_sas_errors()
784 int sas_ioctl(struct scsi_device *sdev, unsigned int cmd, void __user *arg) in sas_ioctl() argument
789 return ata_sas_scsi_ioctl(dev->sata_dev.ap, sdev, cmd, arg); in sas_ioctl()