Home
last modified time | relevance | path

Searched refs:scmd (Results 1 – 25 of 58) sorted by relevance

123

/linux/Documentation/translations/zh_CN/scsi/
H A Dscsi_eh.rst25 [1-2] scmd(SCSI 命令)是如何完成的?
26 [1-2-1] 通过scsi_done完成scmd
27 [1-2-2] 通过超时机制完成scmd
32 [2-1-2] scmd在错误处理流程中的传递路径
46 每个SCSI命令都由struct scsi_cmnd(简称scmd)结构体
47 表示。scmd包含两个list_head类型的链表节点:scmd->list
48scmd->eh_entry。其中scmd->list是用于空闲链表或设备
49 专属的scmd分配链表,与错误处理讨论关联不大。而
50 scmd->eh_entry则是专用于命令完成和错误处理链表,除非
51 特别说明,本文讨论中所有scmd的链表操作均通过
[all …]
/linux/drivers/scsi/
H A Dscsi_error.c60 static int scsi_eh_try_stu(struct scsi_cmnd *scmd);
149 struct scsi_cmnd *scmd = in scmd_eh_abort_handler() local
151 struct scsi_device *sdev = scmd->device; in scmd_eh_abort_handler()
158 scmd_printk(KERN_INFO, scmd, in scmd_eh_abort_handler()
164 scmd_printk(KERN_INFO, scmd, in scmd_eh_abort_handler()
166 rtn = scsi_try_to_abort_cmd(shost->hostt, scmd); in scmd_eh_abort_handler()
169 scmd_printk(KERN_INFO, scmd, in scmd_eh_abort_handler()
175 set_host_byte(scmd, DID_TIME_OUT); in scmd_eh_abort_handler()
178 scmd_printk(KERN_INFO, scmd, in scmd_eh_abort_handler()
185 list_del_init(&scmd->eh_entry); in scmd_eh_abort_handler()
[all …]
H A Dscsi_bsg.c15 struct scsi_cmnd *scmd; in scsi_bsg_sg_io_fn() local
34 scmd = blk_mq_rq_to_pdu(rq); in scsi_bsg_sg_io_fn()
35 scmd->cmd_len = hdr->request_len; in scsi_bsg_sg_io_fn()
36 if (scmd->cmd_len > sizeof(scmd->cmnd)) { in scsi_bsg_sg_io_fn()
42 if (copy_from_user(scmd->cmnd, uptr64(hdr->request), scmd->cmd_len)) in scsi_bsg_sg_io_fn()
45 if (!scsi_cmd_allowed(scmd->cmnd, open_for_write)) in scsi_bsg_sg_io_fn()
66 hdr->device_status = scmd->result & 0xff; in scsi_bsg_sg_io_fn()
67 hdr->transport_status = host_byte(scmd->result); in scsi_bsg_sg_io_fn()
69 if (scsi_status_is_check_condition(scmd->result)) in scsi_bsg_sg_io_fn()
76 if (scmd->sense_len && hdr->response) { in scsi_bsg_sg_io_fn()
[all …]
H A Dmyrb.c1254 static int myrb_host_reset(struct scsi_cmnd *scmd) in myrb_host_reset() argument
1256 struct Scsi_Host *shost = scmd->device->host; in myrb_host_reset()
1264 struct scsi_cmnd *scmd) in myrb_pthru_queuecommand() argument
1266 struct request *rq = scsi_cmd_to_rq(scmd); in myrb_pthru_queuecommand()
1268 struct myrb_cmdblk *cmd_blk = scsi_cmd_priv(scmd); in myrb_pthru_queuecommand()
1272 struct scsi_device *sdev = scmd->device; in myrb_pthru_queuecommand()
1281 nsge = scsi_dma_map(scmd); in myrb_pthru_queuecommand()
1284 scmd->result = (DID_ERROR << 16); in myrb_pthru_queuecommand()
1285 scsi_done(scmd); in myrb_pthru_queuecommand()
1294 switch (scmd->sc_data_direction) { in myrb_pthru_queuecommand()
[all …]
H A Dmvumi.c189 static int mvumi_make_sgl(struct mvumi_hba *mhba, struct scsi_cmnd *scmd, in mvumi_make_sgl() argument
195 unsigned int sgnum = scsi_sg_count(scmd); in mvumi_make_sgl()
198 *sg_count = dma_map_sg(&mhba->pdev->dev, scsi_sglist(scmd), sgnum, in mvumi_make_sgl()
199 scmd->sc_data_direction); in mvumi_make_sgl()
204 dma_unmap_sg(&mhba->pdev->dev, scsi_sglist(scmd), sgnum, in mvumi_make_sgl()
205 scmd->sc_data_direction); in mvumi_make_sgl()
208 scsi_for_each_sg(scmd, sg, *sg_count, i) { in mvumi_make_sgl()
338 cmd->scmd = NULL; in mvumi_return_cmd()
698 static int mvumi_host_reset(struct scsi_cmnd *scmd) in mvumi_host_reset() argument
702 mhba = (struct mvumi_hba *) scmd->device->host->hostdata; in mvumi_host_reset()
[all …]
H A Dmyrs.c1532 static int myrs_host_reset(struct scsi_cmnd *scmd) in myrs_host_reset() argument
1534 struct Scsi_Host *shost = scmd->device->host; in myrs_host_reset()
1541 static void myrs_mode_sense(struct myrs_hba *cs, struct scsi_cmnd *scmd, in myrs_mode_sense() argument
1548 dbd = (scmd->cmnd[1] & 0x08) == 0x08; in myrs_mode_sense()
1581 scsi_sg_copy_from_buffer(scmd, modes, mode_len); in myrs_mode_sense()
1585 struct scsi_cmnd *scmd) in myrs_queuecommand() argument
1587 struct request *rq = scsi_cmd_to_rq(scmd); in myrs_queuecommand()
1589 struct myrs_cmdblk *cmd_blk = scsi_cmd_priv(scmd); in myrs_queuecommand()
1591 struct scsi_device *sdev = scmd->device; in myrs_queuecommand()
1598 if (!scmd->device->hostdata) { in myrs_queuecommand()
[all …]
H A Dsr.c940 struct scsi_cmnd *scmd; in sr_read_cdda_bpc() local
948 scmd = blk_mq_rq_to_pdu(rq); in sr_read_cdda_bpc()
954 scmd->cmnd[0] = GPCMD_READ_CD; in sr_read_cdda_bpc()
955 scmd->cmnd[1] = 1 << 2; in sr_read_cdda_bpc()
956 scmd->cmnd[2] = (lba >> 24) & 0xff; in sr_read_cdda_bpc()
957 scmd->cmnd[3] = (lba >> 16) & 0xff; in sr_read_cdda_bpc()
958 scmd->cmnd[4] = (lba >> 8) & 0xff; in sr_read_cdda_bpc()
959 scmd->cmnd[5] = lba & 0xff; in sr_read_cdda_bpc()
960 scmd->cmnd[6] = (nr >> 16) & 0xff; in sr_read_cdda_bpc()
961 scmd->cmnd[7] = (nr >> 8) & 0xff; in sr_read_cdda_bpc()
[all …]
H A Dscsi_lib.c211 static int scsi_check_passthrough(struct scsi_cmnd *scmd, in scsi_check_passthrough() argument
218 if (!scmd->result) in scsi_check_passthrough()
229 if (host_byte(scmd->result) && in scsi_check_passthrough()
230 host_byte(scmd->result) == host_byte(failure->result)) in scsi_check_passthrough()
233 status = status_byte(scmd->result); in scsi_check_passthrough()
238 !scsi_status_is_good(scmd->result)) in scsi_check_passthrough()
248 if (!scsi_command_normalize_sense(scmd, &sshdr)) in scsi_check_passthrough()
302 struct scsi_cmnd *scmd; in scsi_execute_cmd() local
321 scmd = blk_mq_rq_to_pdu(req); in scsi_execute_cmd()
322 scmd->cmd_len = COMMAND_SIZE(cmd[0]); in scsi_execute_cmd()
[all …]
H A Dscsi_logging.c29 static inline const char *scmd_name(struct scsi_cmnd *scmd) in scmd_name() argument
31 const struct request *rq = scsi_cmd_to_rq(scmd); in scmd_name()
83 void scmd_printk(const char *level, struct scsi_cmnd *scmd, const char *fmt, in scmd_printk() argument
90 if (!scmd) in scmd_printk()
96 off = sdev_format_header(logbuf, logbuf_len, scmd_name(scmd), in scmd_printk()
97 scsi_cmd_to_rq(scmd)->tag); in scmd_printk()
103 dev_printk(level, &scmd->device->sdev_gendev, "%s", logbuf); in scmd_printk()
H A Dst.c487 struct scsi_cmnd *scmd = blk_mq_rq_to_pdu(req); in st_do_stats() local
491 if (scmd->cmnd[0] == WRITE_6) { in st_do_stats()
496 if (scmd->result) { in st_do_stats()
505 } else if (scmd->cmnd[0] == READ_6) { in st_do_stats()
510 if (scmd->result) { in st_do_stats()
531 struct scsi_cmnd *scmd = blk_mq_rq_to_pdu(req); in st_scsi_execute_end() local
536 STp->buffer->cmdstat.midlevel_result = SRpnt->result = scmd->result; in st_scsi_execute_end()
537 STp->buffer->cmdstat.residual = scmd->resid_len; in st_scsi_execute_end()
542 if (scmd->sense_len) in st_scsi_execute_end()
543 memcpy(SRpnt->sense, scmd->sense_buffer, SCSI_SENSE_BUFFERSIZE); in st_scsi_execute_end()
[all …]
H A Dsd.c892 static unsigned char sd_setup_protect_cmnd(struct scsi_cmnd *scmd, in sd_setup_protect_cmnd() argument
895 struct request *rq = scsi_cmd_to_rq(scmd); in sd_setup_protect_cmnd()
902 scmd->prot_flags |= SCSI_PROT_IP_CHECKSUM; in sd_setup_protect_cmnd()
905 scmd->prot_flags |= SCSI_PROT_GUARD_CHECK; in sd_setup_protect_cmnd()
909 scmd->prot_flags |= SCSI_PROT_REF_INCREMENT; in sd_setup_protect_cmnd()
912 scmd->prot_flags |= SCSI_PROT_REF_CHECK; in sd_setup_protect_cmnd()
916 scmd->prot_flags |= SCSI_PROT_TRANSFER_PI; in sd_setup_protect_cmnd()
924 scsi_set_prot_op(scmd, prot_op); in sd_setup_protect_cmnd()
925 scsi_set_prot_type(scmd, dif); in sd_setup_protect_cmnd()
926 scmd->prot_flags &= sd_prot_flag_mask(prot_op); in sd_setup_protect_cmnd()
[all …]
/linux/include/scsi/
H A Dscsi_cmnd.h147 static inline struct request *scsi_cmd_to_rq(struct scsi_cmnd *scmd) in scsi_cmd_to_rq() argument
149 return blk_mq_rq_from_pdu(scmd); in scsi_cmd_to_rq()
223 static inline sector_t scsi_get_sector(struct scsi_cmnd *scmd) in scsi_get_sector() argument
225 return blk_rq_pos(scsi_cmd_to_rq(scmd)); in scsi_get_sector()
228 static inline sector_t scsi_get_lba(struct scsi_cmnd *scmd) in scsi_get_lba() argument
230 unsigned int shift = ilog2(scmd->device->sector_size) - SECTOR_SHIFT; in scsi_get_lba()
232 return blk_rq_pos(scsi_cmd_to_rq(scmd)) >> shift; in scsi_get_lba()
235 static inline unsigned int scsi_logical_block_count(struct scsi_cmnd *scmd) in scsi_logical_block_count() argument
237 unsigned int shift = ilog2(scmd->device->sector_size); in scsi_logical_block_count()
239 return blk_rq_bytes(scsi_cmd_to_rq(scmd)) >> shift; in scsi_logical_block_count()
[all …]
H A Dscsi_eh.h12 extern void scsi_eh_finish_cmd(struct scsi_cmnd *scmd,
52 extern void scsi_eh_prep_cmnd(struct scsi_cmnd *scmd,
56 extern void scsi_eh_restore_cmnd(struct scsi_cmnd* scmd,
H A Dscsi_device.h325 #define scmd_dbg(scmd, fmt, a...) \ argument
327 struct request *__rq = scsi_cmd_to_rq((scmd)); \
330 sdev_dbg((scmd)->device, "[%s] " fmt, \
333 sdev_dbg((scmd)->device, fmt, ##a); \
570 void scsi_put_internal_cmd(struct scsi_cmnd *scmd);
599 #define scmd_id(scmd) sdev_id((scmd)->device) argument
600 #define scmd_channel(scmd) sdev_channel((scmd)->device) argument
/linux/drivers/scsi/mpi3mr/
H A Dmpi3mr_os.c69 struct scsi_cmnd *scmd) in mpi3mr_host_tag_for_scmd() argument
75 unique_tag = blk_mq_unique_tag(scsi_cmd_to_rq(scmd)); in mpi3mr_host_tag_for_scmd()
85 priv = scsi_cmd_priv(scmd); in mpi3mr_host_tag_for_scmd()
88 priv->scmd = scmd; in mpi3mr_host_tag_for_scmd()
111 struct scsi_cmnd *scmd = NULL; in mpi3mr_scmd_from_host_tag() local
120 scmd = scsi_host_find_tag(mrioc->shost, unique_tag); in mpi3mr_scmd_from_host_tag()
121 if (scmd) { in mpi3mr_scmd_from_host_tag()
122 priv = scsi_cmd_priv(scmd); in mpi3mr_scmd_from_host_tag()
124 scmd = NULL; in mpi3mr_scmd_from_host_tag()
127 return scmd; in mpi3mr_scmd_from_host_tag()
[all …]
/linux/Documentation/scsi/
H A Dscsi_eh.rst15 [1-2] How do scmd's get completed?
16 [1-2-1] Completing a scmd w/ scsi_done
17 [1-2-2] Completing a scmd w/ timeout
36 Each SCSI command is represented with struct scsi_cmnd (== scmd). A
37 scmd has two list_head's to link itself into lists. The two are
38 scmd->list and scmd->eh_entry. The former is used for free list or
39 per-device allocated scmd list and not of much interest to this EH
41 otherwise stated scmds are always linked using scmd->eh_entry in this
45 1.2 How do scmd's get completed?
48 Once LLDD gets hold of a scmd, either the LLDD will complete the
[all …]
/linux/drivers/s390/scsi/
H A Dzfcp_dbf.h387 void _zfcp_dbf_scsi(char *tag, int level, struct scsi_cmnd *scmd, in _zfcp_dbf_scsi() argument
391 scmd->device->host->hostdata[0]; in _zfcp_dbf_scsi()
394 zfcp_dbf_scsi_common(tag, level, scmd->device, scmd, req); in _zfcp_dbf_scsi()
403 void zfcp_dbf_scsi_result(struct scsi_cmnd *scmd, struct zfcp_fsf_req *req) in zfcp_dbf_scsi_result() argument
405 if (scmd->result != 0) in zfcp_dbf_scsi_result()
406 _zfcp_dbf_scsi("rsl_err", 3, scmd, req); in zfcp_dbf_scsi_result()
407 else if (scmd->retries > 0) in zfcp_dbf_scsi_result()
408 _zfcp_dbf_scsi("rsl_ret", 4, scmd, req); in zfcp_dbf_scsi_result()
410 _zfcp_dbf_scsi("rsl_nor", 6, scmd, req); in zfcp_dbf_scsi_result()
418 void zfcp_dbf_scsi_fail_send(struct scsi_cmnd *scmd) in zfcp_dbf_scsi_fail_send() argument
[all …]
/linux/drivers/macintosh/
H A Dsmu.c290 int smu_queue_simple(struct smu_simple_cmd *scmd, u8 command, in smu_queue_simple() argument
295 struct smu_cmd *cmd = &scmd->cmd; in smu_queue_simple()
299 if (data_len > sizeof(scmd->buffer)) in smu_queue_simple()
302 memset(scmd, 0, sizeof(*scmd)); in smu_queue_simple()
305 cmd->data_buf = scmd->buffer; in smu_queue_simple()
306 cmd->reply_len = sizeof(scmd->buffer); in smu_queue_simple()
307 cmd->reply_buf = scmd->buffer; in smu_queue_simple()
313 scmd->buffer[i] = (u8)va_arg(list, int); in smu_queue_simple()
739 list_add_tail(&cmd->scmd.link, &smu->cmd_list); in smu_i2c_complete_command()
760 cmd->scmd.reply_len = sizeof(cmd->pdata); in smu_i2c_retry()
[all …]
/linux/drivers/scsi/smartpqi/
H A Dsmartpqi_init.c83 struct scsi_cmnd *scmd, u32 aio_handle, u8 *cdb,
87 struct scsi_cmnd *scmd, struct pqi_queue_group *queue_group,
91 struct scsi_cmnd *scmd, struct pqi_queue_group *queue_group,
223 static inline void pqi_scsi_done(struct scsi_cmnd *scmd) in pqi_scsi_done() argument
225 pqi_prep_for_scsi_done(scmd); in pqi_scsi_done()
226 scsi_done(scmd); in pqi_scsi_done()
542 static inline bool pqi_is_io_high_priority(struct pqi_scsi_dev *device, struct scsi_cmnd *scmd) in pqi_is_io_high_priority() argument
551 IOPRIO_PRIO_CLASS(req_get_ioprio(scsi_cmd_to_rq(scmd))); in pqi_is_io_high_priority()
554 switch (scmd->cmnd[0]) { in pqi_is_io_high_priority()
721 io_request->scmd = NULL; in pqi_reinit_io_request()
[all …]
/linux/drivers/scsi/megaraid/
H A Dmegaraid_sas_fusion.c225 struct scsi_cmnd *scmd) in megasas_sdev_busy_inc() argument
229 scmd->device->hostdata; in megasas_sdev_busy_inc()
236 struct scsi_cmnd *scmd) in megasas_sdev_busy_dec() argument
240 scmd->device->hostdata; in megasas_sdev_busy_dec()
247 struct scsi_cmnd *scmd) in megasas_sdev_busy_read() argument
251 scmd->device->hostdata; in megasas_sdev_busy_read()
281 cmd->scmd = NULL; in megasas_return_cmd_fusion()
390 struct scsi_cmnd *scmd, in megasas_get_msix_index() argument
395 (megasas_sdev_busy_read(instance, scmd) > in megasas_get_msix_index()
405 u32 tag = blk_mq_unique_tag(scsi_cmd_to_rq(scmd)); in megasas_get_msix_index()
[all …]
H A Dmegaraid_sas_base.c235 struct scsi_cmnd *scmd);
363 cmd->scmd = NULL; in megasas_return_cmd()
1693 if (!cmd->scmd) in megasas_dump_pending_frames()
1696 if (megasas_cmd_type(cmd->scmd) == READ_WRITE_LDIO) { in megasas_dump_pending_frames()
1741 struct scsi_cmnd *scmd) in megasas_build_and_issue_cmd() argument
1753 if (megasas_cmd_type(scmd) == READ_WRITE_LDIO) in megasas_build_and_issue_cmd()
1754 frame_count = megasas_build_ldio(instance, scmd, cmd); in megasas_build_and_issue_cmd()
1756 frame_count = megasas_build_dcdb(instance, scmd, cmd); in megasas_build_and_issue_cmd()
1761 cmd->scmd = scmd; in megasas_build_and_issue_cmd()
1762 megasas_priv(scmd)->cmd_priv = cmd; in megasas_build_and_issue_cmd()
[all …]
/linux/drivers/scsi/mpt3sas/
H A Dmpt3sas_scsih.c1758 struct scsi_cmnd *scmd; in _scsih_scsi_lookup_find_by_target() local
1762 scmd = mpt3sas_scsih_scsi_lookup_get(ioc, smid); in _scsih_scsi_lookup_find_by_target()
1763 if (!scmd) in _scsih_scsi_lookup_find_by_target()
1765 if (scmd->device->id == id && in _scsih_scsi_lookup_find_by_target()
1766 scmd->device->channel == channel) in _scsih_scsi_lookup_find_by_target()
1788 struct scsi_cmnd *scmd; in _scsih_scsi_lookup_find_by_lun() local
1792 scmd = mpt3sas_scsih_scsi_lookup_get(ioc, smid); in _scsih_scsi_lookup_find_by_lun()
1793 if (!scmd) in _scsih_scsi_lookup_find_by_lun()
1795 if (scmd->device->id == id && in _scsih_scsi_lookup_find_by_lun()
1796 scmd->device->channel == channel && in _scsih_scsi_lookup_find_by_lun()
[all …]
H A Dmpt3sas_warpdrive.c255 mpt3sas_setup_direct_io(struct MPT3SAS_ADAPTER *ioc, struct scsi_cmnd *scmd, in mpt3sas_setup_direct_io() argument
260 u8 num_pds, cmd = scmd->cmnd[0]; in mpt3sas_setup_direct_io()
261 struct scsiio_tracker *st = scsi_cmd_priv(scmd); in mpt3sas_setup_direct_io()
272 io_size = scsi_bufflen(scmd) >> raid_device->block_exponent; in mpt3sas_setup_direct_io()
/linux/drivers/target/
H A Dtarget_core_pscsi.c938 struct scsi_cmnd *scmd; in pscsi_execute_cmd() local
957 scmd = blk_mq_rq_to_pdu(req); in pscsi_execute_cmd()
958 scmd->cmd_len = scsi_command_size(cmd->t_task_cdb); in pscsi_execute_cmd()
959 if (scmd->cmd_len > sizeof(scmd->cmnd)) { in pscsi_execute_cmd()
963 memcpy(scmd->cmnd, cmd->t_task_cdb, scmd->cmd_len); in pscsi_execute_cmd()
970 scmd->allowed = PS_RETRY; in pscsi_execute_cmd()
972 cmd->priv = scmd->cmnd; in pscsi_execute_cmd()
1009 struct scsi_cmnd *scmd = blk_mq_rq_to_pdu(req); in pscsi_req_done() local
1010 enum sam_status scsi_status = scmd->result & 0xff; in pscsi_req_done()
1011 int valid_data = cmd->data_length - scmd->resid_len; in pscsi_req_done()
[all …]
/linux/arch/powerpc/include/asm/
H A Dsmu.h427 extern int smu_queue_simple(struct smu_simple_cmd *scmd, u8 command,
445 static inline void smu_spinwait_simple(struct smu_simple_cmd *scmd) in smu_spinwait_simple() argument
447 smu_spinwait_cmd(&scmd->cmd); in smu_spinwait_simple()
503 struct smu_cmd scmd; member

123