Lines Matching refs:cmd

148 static struct sas_task *sas_create_task(struct scsi_cmnd *cmd,  in sas_create_task()  argument
158 task->uldd_task = cmd; in sas_create_task()
159 ASSIGN_SAS_TASK(cmd, task); in sas_create_task()
165 int_to_scsilun(cmd->device->lun, &lun); 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()
180 int sas_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmd) in sas_queuecommand() argument
183 struct domain_device *dev = cmd_to_domain_dev(cmd); in sas_queuecommand()
189 cmd->result = DID_BAD_TARGET << 16; in sas_queuecommand()
195 res = ata_sas_queuecmd(cmd, dev->sata_dev.ap); in sas_queuecommand()
200 task = sas_create_task(cmd, dev, GFP_ATOMIC); in sas_queuecommand()
211 ASSIGN_SAS_TASK(cmd, NULL); in sas_queuecommand()
214 cmd->result = DID_SOFT_ERROR << 16; /* retry */ in sas_queuecommand()
216 cmd->result = DID_ERROR << 16; in sas_queuecommand()
218 cmd->scsi_done(cmd); in sas_queuecommand()
222 static void sas_eh_finish_cmd(struct scsi_cmnd *cmd) in sas_eh_finish_cmd() argument
224 struct sas_ha_struct *sas_ha = SHOST_TO_SAS_HA(cmd->device->host); in sas_eh_finish_cmd()
225 struct sas_task *task = TO_SAS_TASK(cmd); in sas_eh_finish_cmd()
231 sas_end_task(cmd, task); in sas_eh_finish_cmd()
237 scsi_eh_finish_cmd(cmd, &sas_ha->eh_done_q); in sas_eh_finish_cmd()
240 static void sas_eh_defer_cmd(struct scsi_cmnd *cmd) in sas_eh_defer_cmd() argument
242 struct domain_device *dev = cmd_to_domain_dev(cmd); in sas_eh_defer_cmd()
244 struct sas_task *task = TO_SAS_TASK(cmd); in sas_eh_defer_cmd()
247 sas_eh_finish_cmd(cmd); in sas_eh_defer_cmd()
252 sas_end_task(cmd, task); in sas_eh_defer_cmd()
253 list_move_tail(&cmd->eh_entry, &ha->eh_ata_q); in sas_eh_defer_cmd()
258 struct scsi_cmnd *cmd, *n; in sas_scsi_clear_queue_lu() local
260 list_for_each_entry_safe(cmd, n, error_q, eh_entry) { in sas_scsi_clear_queue_lu()
261 if (cmd->device->sdev_target == my_cmd->device->sdev_target && in sas_scsi_clear_queue_lu()
262 cmd->device->lun == my_cmd->device->lun) in sas_scsi_clear_queue_lu()
263 sas_eh_defer_cmd(cmd); in sas_scsi_clear_queue_lu()
270 struct scsi_cmnd *cmd, *n; in sas_scsi_clear_queue_I_T() local
272 list_for_each_entry_safe(cmd, n, error_q, eh_entry) { in sas_scsi_clear_queue_I_T()
273 struct domain_device *x = cmd_to_domain_dev(cmd); in sas_scsi_clear_queue_I_T()
276 sas_eh_finish_cmd(cmd); in sas_scsi_clear_queue_I_T()
283 struct scsi_cmnd *cmd, *n; in sas_scsi_clear_queue_port() local
285 list_for_each_entry_safe(cmd, n, error_q, eh_entry) { in sas_scsi_clear_queue_port()
286 struct domain_device *dev = cmd_to_domain_dev(cmd); in sas_scsi_clear_queue_port()
290 sas_eh_finish_cmd(cmd); in sas_scsi_clear_queue_port()
350 static int sas_recover_lu(struct domain_device *dev, struct scsi_cmnd *cmd) in sas_recover_lu() argument
357 int_to_scsilun(cmd->device->lun, &lun); in sas_recover_lu()
361 cmd->device->lun); in sas_recover_lu()
487 int sas_eh_abort_handler(struct scsi_cmnd *cmd) in sas_eh_abort_handler() argument
490 struct sas_task *task = TO_SAS_TASK(cmd); in sas_eh_abort_handler()
491 struct Scsi_Host *host = cmd->device->host; in sas_eh_abort_handler()
509 int sas_eh_device_reset_handler(struct scsi_cmnd *cmd) in sas_eh_device_reset_handler() argument
513 struct Scsi_Host *host = cmd->device->host; in sas_eh_device_reset_handler()
514 struct domain_device *dev = cmd_to_domain_dev(cmd); in sas_eh_device_reset_handler()
518 return sas_queue_reset(dev, SAS_DEV_LU_RESET, cmd->device->lun, 0); in sas_eh_device_reset_handler()
520 int_to_scsilun(cmd->device->lun, &lun); in sas_eh_device_reset_handler()
532 int sas_eh_bus_reset_handler(struct scsi_cmnd *cmd) in sas_eh_bus_reset_handler() argument
535 struct Scsi_Host *host = cmd->device->host; in sas_eh_bus_reset_handler()
536 struct domain_device *dev = cmd_to_domain_dev(cmd); in sas_eh_bus_reset_handler()
554 static int try_to_reset_cmd_device(struct scsi_cmnd *cmd) in try_to_reset_cmd_device() argument
557 struct Scsi_Host *shost = cmd->device->host; in try_to_reset_cmd_device()
562 res = shost->hostt->eh_device_reset_handler(cmd); in try_to_reset_cmd_device()
568 return shost->hostt->eh_bus_reset_handler(cmd); in try_to_reset_cmd_device()
575 struct scsi_cmnd *cmd, *n; in sas_eh_handle_sas_errors() local
584 list_for_each_entry_safe(cmd, n, work_q, eh_entry) { in sas_eh_handle_sas_errors()
585 struct domain_device *dev = cmd_to_domain_dev(cmd); in sas_eh_handle_sas_errors()
593 task = TO_SAS_TASK(cmd); in sas_eh_handle_sas_errors()
597 list_move_tail(&cmd->eh_entry, &done); in sas_eh_handle_sas_errors()
601 list_for_each_entry_safe(cmd, n, work_q, eh_entry) { in sas_eh_handle_sas_errors()
602 struct sas_task *task = TO_SAS_TASK(cmd); in sas_eh_handle_sas_errors()
604 list_del_init(&cmd->eh_entry); in sas_eh_handle_sas_errors()
619 cmd->eh_eflags = 0; in sas_eh_handle_sas_errors()
625 sas_eh_defer_cmd(cmd); in sas_eh_handle_sas_errors()
630 sas_eh_defer_cmd(cmd); in sas_eh_handle_sas_errors()
635 tmf_resp = sas_recover_lu(task->dev, cmd); in sas_eh_handle_sas_errors()
640 cmd->device->lun); in sas_eh_handle_sas_errors()
641 sas_eh_defer_cmd(cmd); in sas_eh_handle_sas_errors()
642 sas_scsi_clear_queue_lu(work_q, cmd); in sas_eh_handle_sas_errors()
656 sas_eh_finish_cmd(cmd); in sas_eh_handle_sas_errors()
661 try_to_reset_cmd_device(cmd); in sas_eh_handle_sas_errors()
670 sas_eh_finish_cmd(cmd); in sas_eh_handle_sas_errors()
682 sas_eh_finish_cmd(cmd); in sas_eh_handle_sas_errors()
693 cmd->device->lun); in sas_eh_handle_sas_errors()
695 sas_eh_finish_cmd(cmd); in sas_eh_handle_sas_errors()
706 list_for_each_entry_safe(cmd, n, work_q, eh_entry) in sas_eh_handle_sas_errors()
707 sas_eh_finish_cmd(cmd); in sas_eh_handle_sas_errors()
806 enum blk_eh_timer_return sas_scsi_timed_out(struct scsi_cmnd *cmd) in sas_scsi_timed_out() argument
808 scmd_dbg(cmd, "command %p timed out\n", cmd); in sas_scsi_timed_out()
813 int sas_ioctl(struct scsi_device *sdev, int cmd, void __user *arg) in sas_ioctl() argument
818 return ata_sas_scsi_ioctl(dev->sata_dev.ap, sdev, cmd, arg); in sas_ioctl()