Lines Matching refs:cmd
70 spc_emulate_inquiry_std(struct se_cmd *cmd, unsigned char *buf) in spc_emulate_inquiry_std() argument
72 struct se_lun *lun = cmd->se_lun; in spc_emulate_inquiry_std()
73 struct se_device *dev = cmd->se_dev; in spc_emulate_inquiry_std()
74 struct se_session *sess = cmd->se_sess; in spc_emulate_inquiry_std()
111 if (dev->dev_attrib.pi_prot_type || cmd->se_sess->sess_prot_type) in spc_emulate_inquiry_std()
131 spc_emulate_evpd_80(struct se_cmd *cmd, unsigned char *buf) in spc_emulate_evpd_80() argument
133 struct se_device *dev = cmd->se_dev; in spc_emulate_evpd_80()
180 spc_emulate_evpd_83(struct se_cmd *cmd, unsigned char *buf) in spc_emulate_evpd_83() argument
182 struct se_device *dev = cmd->se_dev; in spc_emulate_evpd_83()
183 struct se_lun *lun = cmd->se_lun; in spc_emulate_evpd_83()
461 spc_emulate_evpd_86(struct se_cmd *cmd, unsigned char *buf) in spc_emulate_evpd_86() argument
463 struct se_device *dev = cmd->se_dev; in spc_emulate_evpd_86()
464 struct se_session *sess = cmd->se_sess; in spc_emulate_evpd_86()
473 cmd->se_sess->sess_prot_type == TARGET_DIF_TYPE1_PROT) in spc_emulate_evpd_86()
476 cmd->se_sess->sess_prot_type == TARGET_DIF_TYPE3_PROT) in spc_emulate_evpd_86()
487 spin_lock(&cmd->se_dev->t10_alua.lba_map_lock); in spc_emulate_evpd_86()
490 spin_unlock(&cmd->se_dev->t10_alua.lba_map_lock); in spc_emulate_evpd_86()
496 spc_emulate_evpd_b0(struct se_cmd *cmd, unsigned char *buf) in spc_emulate_evpd_b0() argument
498 struct se_device *dev = cmd->se_dev; in spc_emulate_evpd_b0()
583 spc_emulate_evpd_b1(struct se_cmd *cmd, unsigned char *buf) in spc_emulate_evpd_b1() argument
585 struct se_device *dev = cmd->se_dev; in spc_emulate_evpd_b1()
596 spc_emulate_evpd_b2(struct se_cmd *cmd, unsigned char *buf) in spc_emulate_evpd_b2() argument
598 struct se_device *dev = cmd->se_dev; in spc_emulate_evpd_b2()
648 spc_emulate_evpd_b3(struct se_cmd *cmd, unsigned char *buf) in spc_emulate_evpd_b3() argument
650 struct se_device *dev = cmd->se_dev; in spc_emulate_evpd_b3()
661 spc_emulate_evpd_00(struct se_cmd *cmd, unsigned char *buf);
679 spc_emulate_evpd_00(struct se_cmd *cmd, unsigned char *buf) in spc_emulate_evpd_00() argument
688 if (cmd->se_dev->dev_flags & DF_EMULATED_VPD_UNIT_SERIAL) { in spc_emulate_evpd_00()
698 spc_emulate_inquiry(struct se_cmd *cmd) in spc_emulate_inquiry() argument
700 struct se_device *dev = cmd->se_dev; in spc_emulate_inquiry()
701 struct se_portal_group *tpg = cmd->se_lun->lun_sep->sep_tpg; in spc_emulate_inquiry()
703 unsigned char *cdb = cmd->t_task_cdb; in spc_emulate_inquiry()
728 ret = spc_emulate_inquiry_std(cmd, buf); in spc_emulate_inquiry()
736 ret = evpd_handlers[p].emulate(cmd, buf); in spc_emulate_inquiry()
746 rbuf = transport_kmap_data_sg(cmd); in spc_emulate_inquiry()
748 memcpy(rbuf, buf, min_t(u32, SE_INQUIRY_BUF, cmd->data_length)); in spc_emulate_inquiry()
749 transport_kunmap_data_sg(cmd); in spc_emulate_inquiry()
754 target_complete_cmd_with_length(cmd, GOOD, len); in spc_emulate_inquiry()
758 static int spc_modesense_rwrecovery(struct se_cmd *cmd, u8 pc, u8 *p) in spc_modesense_rwrecovery() argument
771 static int spc_modesense_control(struct se_cmd *cmd, u8 pc, u8 *p) in spc_modesense_control() argument
773 struct se_device *dev = cmd->se_dev; in spc_modesense_control()
774 struct se_session *sess = cmd->se_sess; in spc_modesense_control()
880 static int spc_modesense_caching(struct se_cmd *cmd, u8 pc, u8 *p) in spc_modesense_caching() argument
882 struct se_device *dev = cmd->se_dev; in spc_modesense_caching()
899 static int spc_modesense_informational_exceptions(struct se_cmd *cmd, u8 pc, unsigned char *p) in spc_modesense_informational_exceptions() argument
973 static sense_reason_t spc_emulate_modesense(struct se_cmd *cmd) in spc_emulate_modesense() argument
975 struct se_device *dev = cmd->se_dev; in spc_emulate_modesense()
976 char *cdb = cmd->t_task_cdb; in spc_emulate_modesense()
979 int ten = (cmd->t_task_cdb[0] == MODE_SENSE_10); in spc_emulate_modesense()
998 if ((cmd->se_lun->lun_access & TRANSPORT_LUNFLAGS_READ_ONLY) || in spc_emulate_modesense()
999 (cmd->se_deve && in spc_emulate_modesense()
1000 (cmd->se_deve->lun_flags & TRANSPORT_LUNFLAGS_READ_ONLY))) in spc_emulate_modesense()
1053 ret = modesense_handlers[i].emulate(cmd, pc, &buf[length]); in spc_emulate_modesense()
1066 length += modesense_handlers[i].emulate(cmd, pc, &buf[length]); in spc_emulate_modesense()
1086 rbuf = transport_kmap_data_sg(cmd); in spc_emulate_modesense()
1088 memcpy(rbuf, buf, min_t(u32, SE_MODE_PAGE_BUF, cmd->data_length)); in spc_emulate_modesense()
1089 transport_kunmap_data_sg(cmd); in spc_emulate_modesense()
1092 target_complete_cmd_with_length(cmd, GOOD, length); in spc_emulate_modesense()
1096 static sense_reason_t spc_emulate_modeselect(struct se_cmd *cmd) in spc_emulate_modeselect() argument
1098 char *cdb = cmd->t_task_cdb; in spc_emulate_modeselect()
1109 if (!cmd->data_length) { in spc_emulate_modeselect()
1110 target_complete_cmd(cmd, GOOD); in spc_emulate_modeselect()
1114 if (cmd->data_length < off + 2) in spc_emulate_modeselect()
1117 buf = transport_kmap_data_sg(cmd); in spc_emulate_modeselect()
1133 length = modesense_handlers[i].emulate(cmd, 0, tbuf); in spc_emulate_modeselect()
1141 if (cmd->data_length < off + length) { in spc_emulate_modeselect()
1150 transport_kunmap_data_sg(cmd); in spc_emulate_modeselect()
1153 target_complete_cmd(cmd, GOOD); in spc_emulate_modeselect()
1157 static sense_reason_t spc_emulate_request_sense(struct se_cmd *cmd) in spc_emulate_request_sense() argument
1159 unsigned char *cdb = cmd->t_task_cdb; in spc_emulate_request_sense()
1172 rbuf = transport_kmap_data_sg(cmd); in spc_emulate_request_sense()
1176 if (!core_scsi3_ua_clear_for_request_sense(cmd, &ua_asc, &ua_ascq)) { in spc_emulate_request_sense()
1203 memcpy(rbuf, buf, min_t(u32, sizeof(buf), cmd->data_length)); in spc_emulate_request_sense()
1204 transport_kunmap_data_sg(cmd); in spc_emulate_request_sense()
1206 target_complete_cmd(cmd, GOOD); in spc_emulate_request_sense()
1210 sense_reason_t spc_emulate_report_luns(struct se_cmd *cmd) in spc_emulate_report_luns() argument
1213 struct se_session *sess = cmd->se_sess; in spc_emulate_report_luns()
1217 if (cmd->data_length < 16) { in spc_emulate_report_luns()
1219 cmd->data_length); in spc_emulate_report_luns()
1223 buf = transport_kmap_data_sg(cmd); in spc_emulate_report_luns()
1249 if ((offset + 8) > cmd->data_length) in spc_emulate_report_luns()
1266 transport_kunmap_data_sg(cmd); in spc_emulate_report_luns()
1268 target_complete_cmd_with_length(cmd, GOOD, 8 + lun_count * 8); in spc_emulate_report_luns()
1274 spc_emulate_testunitready(struct se_cmd *cmd) in spc_emulate_testunitready() argument
1276 target_complete_cmd(cmd, GOOD); in spc_emulate_testunitready()
1281 spc_parse_cdb(struct se_cmd *cmd, unsigned int *size) in spc_parse_cdb() argument
1283 struct se_device *dev = cmd->se_dev; in spc_parse_cdb()
1284 unsigned char *cdb = cmd->t_task_cdb; in spc_parse_cdb()
1289 cmd->execute_cmd = spc_emulate_modeselect; in spc_parse_cdb()
1293 cmd->execute_cmd = spc_emulate_modeselect; in spc_parse_cdb()
1297 cmd->execute_cmd = spc_emulate_modesense; in spc_parse_cdb()
1301 cmd->execute_cmd = spc_emulate_modesense; in spc_parse_cdb()
1309 cmd->execute_cmd = target_scsi3_emulate_pr_in; in spc_parse_cdb()
1313 cmd->execute_cmd = target_scsi3_emulate_pr_out; in spc_parse_cdb()
1320 *size = cmd->data_length; in spc_parse_cdb()
1322 cmd->execute_cmd = target_scsi2_reservation_release; in spc_parse_cdb()
1333 *size = cmd->data_length; in spc_parse_cdb()
1335 cmd->execute_cmd = target_scsi2_reservation_reserve; in spc_parse_cdb()
1339 cmd->execute_cmd = spc_emulate_request_sense; in spc_parse_cdb()
1348 cmd->sam_task_attr = TCM_HEAD_TAG; in spc_parse_cdb()
1349 cmd->execute_cmd = spc_emulate_inquiry; in spc_parse_cdb()
1357 cmd->execute_cmd = target_do_xcopy; in spc_parse_cdb()
1361 cmd->execute_cmd = target_do_receive_copy_results; in spc_parse_cdb()
1376 cmd->execute_cmd = spc_emulate_report_luns; in spc_parse_cdb()
1382 cmd->sam_task_attr = TCM_HEAD_TAG; in spc_parse_cdb()
1385 cmd->execute_cmd = spc_emulate_testunitready; in spc_parse_cdb()
1395 cmd->execute_cmd = in spc_parse_cdb()
1413 cmd->execute_cmd = in spc_parse_cdb()
1427 cmd->se_tfo->get_fabric_name(), cdb[0]); in spc_parse_cdb()