Lines Matching refs:cmd

43 sbc_emulate_readcapacity(struct se_cmd *cmd)  in sbc_emulate_readcapacity()  argument
45 struct se_device *dev = cmd->se_dev; in sbc_emulate_readcapacity()
46 unsigned char *cdb = cmd->t_task_cdb; in sbc_emulate_readcapacity()
81 rbuf = transport_kmap_data_sg(cmd); in sbc_emulate_readcapacity()
83 memcpy(rbuf, buf, min_t(u32, sizeof(buf), cmd->data_length)); in sbc_emulate_readcapacity()
84 transport_kunmap_data_sg(cmd); in sbc_emulate_readcapacity()
87 target_complete_cmd_with_length(cmd, GOOD, 8); in sbc_emulate_readcapacity()
92 sbc_emulate_readcapacity_16(struct se_cmd *cmd) in sbc_emulate_readcapacity_16() argument
94 struct se_device *dev = cmd->se_dev; in sbc_emulate_readcapacity_16()
95 struct se_session *sess = cmd->se_sess; in sbc_emulate_readcapacity_16()
146 rbuf = transport_kmap_data_sg(cmd); in sbc_emulate_readcapacity_16()
148 memcpy(rbuf, buf, min_t(u32, sizeof(buf), cmd->data_length)); in sbc_emulate_readcapacity_16()
149 transport_kunmap_data_sg(cmd); in sbc_emulate_readcapacity_16()
152 target_complete_cmd_with_length(cmd, GOOD, 32); in sbc_emulate_readcapacity_16()
156 sector_t sbc_get_write_same_sectors(struct se_cmd *cmd) in sbc_get_write_same_sectors() argument
160 if (cmd->t_task_cdb[0] == WRITE_SAME) in sbc_get_write_same_sectors()
161 num_blocks = get_unaligned_be16(&cmd->t_task_cdb[7]); in sbc_get_write_same_sectors()
162 else if (cmd->t_task_cdb[0] == WRITE_SAME_16) in sbc_get_write_same_sectors()
163 num_blocks = get_unaligned_be32(&cmd->t_task_cdb[10]); in sbc_get_write_same_sectors()
165 num_blocks = get_unaligned_be32(&cmd->t_task_cdb[28]); in sbc_get_write_same_sectors()
174 return cmd->se_dev->transport->get_blocks(cmd->se_dev) - in sbc_get_write_same_sectors()
175 cmd->t_task_lba + 1; in sbc_get_write_same_sectors()
180 sbc_emulate_noop(struct se_cmd *cmd) in sbc_emulate_noop() argument
182 target_complete_cmd(cmd, GOOD); in sbc_emulate_noop()
186 static inline u32 sbc_get_size(struct se_cmd *cmd, u32 sectors) in sbc_get_size() argument
188 return cmd->se_dev->dev_attrib.block_size * sectors; in sbc_get_size()
264 sbc_setup_write_same(struct se_cmd *cmd, unsigned char *flags, struct sbc_ops *ops) in sbc_setup_write_same() argument
266 struct se_device *dev = cmd->se_dev; in sbc_setup_write_same()
268 unsigned int sectors = sbc_get_write_same_sectors(cmd); in sbc_setup_write_same()
277 if (sectors > cmd->se_dev->dev_attrib.max_write_same_len) { in sbc_setup_write_same()
279 sectors, cmd->se_dev->dev_attrib.max_write_same_len); in sbc_setup_write_same()
285 if (((cmd->t_task_lba + sectors) < cmd->t_task_lba) || in sbc_setup_write_same()
286 ((cmd->t_task_lba + sectors) > end_lba)) { in sbc_setup_write_same()
288 (unsigned long long)end_lba, cmd->t_task_lba, sectors); in sbc_setup_write_same()
310 cmd->execute_cmd = ops->execute_write_same_unmap; in sbc_setup_write_same()
316 ret = sbc_check_prot(dev, cmd, &cmd->t_task_cdb[0], sectors, true); in sbc_setup_write_same()
320 cmd->execute_cmd = ops->execute_write_same; in sbc_setup_write_same()
324 static sense_reason_t xdreadwrite_callback(struct se_cmd *cmd, bool success, in xdreadwrite_callback() argument
343 buf = kmalloc(cmd->data_length, GFP_KERNEL); in xdreadwrite_callback()
352 sg_copy_to_buffer(cmd->t_data_sg, in xdreadwrite_callback()
353 cmd->t_data_nents, in xdreadwrite_callback()
355 cmd->data_length); in xdreadwrite_callback()
363 for_each_sg(cmd->t_bidi_data_sg, sg, cmd->t_bidi_data_nents, count) { in xdreadwrite_callback()
383 sbc_execute_rw(struct se_cmd *cmd) in sbc_execute_rw() argument
385 return cmd->execute_rw(cmd, cmd->t_data_sg, cmd->t_data_nents, in sbc_execute_rw()
386 cmd->data_direction); in sbc_execute_rw()
389 static sense_reason_t compare_and_write_post(struct se_cmd *cmd, bool success, in compare_and_write_post() argument
392 struct se_device *dev = cmd->se_dev; in compare_and_write_post()
399 spin_lock_irq(&cmd->t_state_lock); in compare_and_write_post()
400 if ((cmd->transport_state & CMD_T_SENT) && !cmd->scsi_status) { in compare_and_write_post()
401 cmd->se_cmd_flags |= SCF_COMPARE_AND_WRITE_POST; in compare_and_write_post()
404 spin_unlock_irq(&cmd->t_state_lock); in compare_and_write_post()
415 static sense_reason_t compare_and_write_callback(struct se_cmd *cmd, bool success, in compare_and_write_callback() argument
418 struct se_device *dev = cmd->se_dev; in compare_and_write_callback()
423 unsigned int nlbas = cmd->t_task_nolb; in compare_and_write_callback()
433 if (!success && (!cmd->t_data_sg || !cmd->t_bidi_data_sg)) in compare_and_write_callback()
438 if (!cmd->data_length) in compare_and_write_callback()
444 if (cmd->scsi_status) { in compare_and_write_callback()
446 " 0x%02x\n", cmd->scsi_status); in compare_and_write_callback()
450 buf = kzalloc(cmd->data_length, GFP_KERNEL); in compare_and_write_callback()
457 write_sg = kmalloc(sizeof(struct scatterlist) * cmd->t_data_nents, in compare_and_write_callback()
464 sg_init_table(write_sg, cmd->t_data_nents); in compare_and_write_callback()
468 rc = sg_copy_to_buffer(cmd->t_data_sg, cmd->t_data_nents, buf, in compare_and_write_callback()
469 cmd->data_length); in compare_and_write_callback()
478 for_each_sg(cmd->t_bidi_data_sg, sg, cmd->t_bidi_data_nents, i) { in compare_and_write_callback()
502 len = cmd->t_task_nolb * block_size; in compare_and_write_callback()
503 sg_miter_start(&m, cmd->t_data_sg, cmd->t_data_nents, SG_MITER_TO_SG); in compare_and_write_callback()
527 cmd->t_data_sg_orig = cmd->t_data_sg; in compare_and_write_callback()
528 cmd->t_data_sg = write_sg; in compare_and_write_callback()
529 cmd->t_data_nents_orig = cmd->t_data_nents; in compare_and_write_callback()
530 cmd->t_data_nents = 1; in compare_and_write_callback()
532 cmd->sam_task_attr = TCM_HEAD_TAG; in compare_and_write_callback()
533 cmd->transport_complete_callback = compare_and_write_post; in compare_and_write_callback()
538 cmd->execute_cmd = sbc_execute_rw; in compare_and_write_callback()
540 spin_lock_irq(&cmd->t_state_lock); in compare_and_write_callback()
541 cmd->t_state = TRANSPORT_PROCESSING; in compare_and_write_callback()
542 cmd->transport_state |= CMD_T_ACTIVE|CMD_T_BUSY|CMD_T_SENT; in compare_and_write_callback()
543 spin_unlock_irq(&cmd->t_state_lock); in compare_and_write_callback()
545 __target_execute_cmd(cmd); in compare_and_write_callback()
566 sbc_compare_and_write(struct se_cmd *cmd) in sbc_compare_and_write() argument
568 struct se_device *dev = cmd->se_dev; in sbc_compare_and_write()
577 cmd->transport_complete_callback = NULL; in sbc_compare_and_write()
585 cmd->data_length = cmd->t_task_nolb * dev->dev_attrib.block_size; in sbc_compare_and_write()
587 ret = cmd->execute_rw(cmd, cmd->t_bidi_data_sg, cmd->t_bidi_data_nents, in sbc_compare_and_write()
590 cmd->transport_complete_callback = NULL; in sbc_compare_and_write()
604 bool is_write, struct se_cmd *cmd) in sbc_set_prot_op_checks() argument
607 cmd->prot_op = fabric_prot ? TARGET_PROT_DOUT_STRIP : in sbc_set_prot_op_checks()
613 cmd->prot_checks = 0; in sbc_set_prot_op_checks()
617 cmd->prot_checks = TARGET_DIF_CHECK_GUARD; in sbc_set_prot_op_checks()
619 cmd->prot_checks |= TARGET_DIF_CHECK_REFTAG; in sbc_set_prot_op_checks()
623 cmd->prot_checks = TARGET_DIF_CHECK_REFTAG; in sbc_set_prot_op_checks()
626 cmd->prot_checks = TARGET_DIF_CHECK_GUARD; in sbc_set_prot_op_checks()
633 cmd->prot_op = fabric_prot ? TARGET_PROT_DIN_INSERT : in sbc_set_prot_op_checks()
640 cmd->prot_checks = TARGET_DIF_CHECK_GUARD; in sbc_set_prot_op_checks()
642 cmd->prot_checks |= TARGET_DIF_CHECK_REFTAG; in sbc_set_prot_op_checks()
646 cmd->prot_checks = TARGET_DIF_CHECK_REFTAG; in sbc_set_prot_op_checks()
649 cmd->prot_checks = 0; in sbc_set_prot_op_checks()
652 cmd->prot_checks = TARGET_DIF_CHECK_GUARD; in sbc_set_prot_op_checks()
664 sbc_check_prot(struct se_device *dev, struct se_cmd *cmd, unsigned char *cdb, in sbc_check_prot() argument
668 int sp_ops = cmd->se_sess->sup_prot_ops; in sbc_check_prot()
672 if (!cmd->t_prot_sg || !cmd->t_prot_nents) { in sbc_check_prot()
674 !dev->dev_attrib.pi_prot_type && !cmd->se_sess->sess_prot_type)) { in sbc_check_prot()
679 if (cmd->prot_pto) in sbc_check_prot()
685 cmd->reftag_seed = 0xffffffff; in sbc_check_prot()
691 cmd->reftag_seed = cmd->t_task_lba; in sbc_check_prot()
694 cmd->reftag_seed = cmd->t_task_lba; in sbc_check_prot()
706 if (fabric_prot && cmd->se_sess->sess_prot_type) { in sbc_check_prot()
707 pi_prot_type = cmd->se_sess->sess_prot_type; in sbc_check_prot()
719 if (sbc_set_prot_op_checks(protect, fabric_prot, pi_prot_type, is_write, cmd)) in sbc_check_prot()
722 cmd->prot_type = pi_prot_type; in sbc_check_prot()
723 cmd->prot_length = dev->prot_length * sectors; in sbc_check_prot()
732 cmd->data_length = sectors * dev->dev_attrib.block_size; in sbc_check_prot()
736 __func__, cmd->prot_type, cmd->data_length, cmd->prot_length, in sbc_check_prot()
737 cmd->prot_op, cmd->prot_checks); in sbc_check_prot()
743 sbc_check_dpofua(struct se_device *dev, struct se_cmd *cmd, unsigned char *cdb) in sbc_check_dpofua() argument
759 cmd->se_cmd_flags |= SCF_FUA; in sbc_check_dpofua()
765 sbc_parse_cdb(struct se_cmd *cmd, struct sbc_ops *ops) in sbc_parse_cdb() argument
767 struct se_device *dev = cmd->se_dev; in sbc_parse_cdb()
768 unsigned char *cdb = cmd->t_task_cdb; in sbc_parse_cdb()
776 cmd->t_task_lba = transport_lba_21(cdb); in sbc_parse_cdb()
777 cmd->se_cmd_flags |= SCF_SCSI_DATA_CDB; in sbc_parse_cdb()
778 cmd->execute_rw = ops->execute_rw; in sbc_parse_cdb()
779 cmd->execute_cmd = sbc_execute_rw; in sbc_parse_cdb()
783 cmd->t_task_lba = transport_lba_32(cdb); in sbc_parse_cdb()
785 if (sbc_check_dpofua(dev, cmd, cdb)) in sbc_parse_cdb()
788 ret = sbc_check_prot(dev, cmd, cdb, sectors, false); in sbc_parse_cdb()
792 cmd->se_cmd_flags |= SCF_SCSI_DATA_CDB; in sbc_parse_cdb()
793 cmd->execute_rw = ops->execute_rw; in sbc_parse_cdb()
794 cmd->execute_cmd = sbc_execute_rw; in sbc_parse_cdb()
798 cmd->t_task_lba = transport_lba_32(cdb); in sbc_parse_cdb()
800 if (sbc_check_dpofua(dev, cmd, cdb)) in sbc_parse_cdb()
803 ret = sbc_check_prot(dev, cmd, cdb, sectors, false); in sbc_parse_cdb()
807 cmd->se_cmd_flags |= SCF_SCSI_DATA_CDB; in sbc_parse_cdb()
808 cmd->execute_rw = ops->execute_rw; in sbc_parse_cdb()
809 cmd->execute_cmd = sbc_execute_rw; in sbc_parse_cdb()
813 cmd->t_task_lba = transport_lba_64(cdb); in sbc_parse_cdb()
815 if (sbc_check_dpofua(dev, cmd, cdb)) in sbc_parse_cdb()
818 ret = sbc_check_prot(dev, cmd, cdb, sectors, false); in sbc_parse_cdb()
822 cmd->se_cmd_flags |= SCF_SCSI_DATA_CDB; in sbc_parse_cdb()
823 cmd->execute_rw = ops->execute_rw; in sbc_parse_cdb()
824 cmd->execute_cmd = sbc_execute_rw; in sbc_parse_cdb()
828 cmd->t_task_lba = transport_lba_21(cdb); in sbc_parse_cdb()
829 cmd->se_cmd_flags |= SCF_SCSI_DATA_CDB; in sbc_parse_cdb()
830 cmd->execute_rw = ops->execute_rw; in sbc_parse_cdb()
831 cmd->execute_cmd = sbc_execute_rw; in sbc_parse_cdb()
836 cmd->t_task_lba = transport_lba_32(cdb); in sbc_parse_cdb()
838 if (sbc_check_dpofua(dev, cmd, cdb)) in sbc_parse_cdb()
841 ret = sbc_check_prot(dev, cmd, cdb, sectors, true); in sbc_parse_cdb()
845 cmd->se_cmd_flags |= SCF_SCSI_DATA_CDB; in sbc_parse_cdb()
846 cmd->execute_rw = ops->execute_rw; in sbc_parse_cdb()
847 cmd->execute_cmd = sbc_execute_rw; in sbc_parse_cdb()
851 cmd->t_task_lba = transport_lba_32(cdb); in sbc_parse_cdb()
853 if (sbc_check_dpofua(dev, cmd, cdb)) in sbc_parse_cdb()
856 ret = sbc_check_prot(dev, cmd, cdb, sectors, true); in sbc_parse_cdb()
860 cmd->se_cmd_flags |= SCF_SCSI_DATA_CDB; in sbc_parse_cdb()
861 cmd->execute_rw = ops->execute_rw; in sbc_parse_cdb()
862 cmd->execute_cmd = sbc_execute_rw; in sbc_parse_cdb()
866 cmd->t_task_lba = transport_lba_64(cdb); in sbc_parse_cdb()
868 if (sbc_check_dpofua(dev, cmd, cdb)) in sbc_parse_cdb()
871 ret = sbc_check_prot(dev, cmd, cdb, sectors, true); in sbc_parse_cdb()
875 cmd->se_cmd_flags |= SCF_SCSI_DATA_CDB; in sbc_parse_cdb()
876 cmd->execute_rw = ops->execute_rw; in sbc_parse_cdb()
877 cmd->execute_cmd = sbc_execute_rw; in sbc_parse_cdb()
880 if (cmd->data_direction != DMA_TO_DEVICE || in sbc_parse_cdb()
881 !(cmd->se_cmd_flags & SCF_BIDI)) in sbc_parse_cdb()
885 if (sbc_check_dpofua(dev, cmd, cdb)) in sbc_parse_cdb()
888 cmd->t_task_lba = transport_lba_32(cdb); in sbc_parse_cdb()
889 cmd->se_cmd_flags |= SCF_SCSI_DATA_CDB; in sbc_parse_cdb()
894 cmd->execute_rw = ops->execute_rw; in sbc_parse_cdb()
895 cmd->execute_cmd = sbc_execute_rw; in sbc_parse_cdb()
896 cmd->transport_complete_callback = &xdreadwrite_callback; in sbc_parse_cdb()
905 if (sbc_check_dpofua(dev, cmd, cdb)) in sbc_parse_cdb()
911 cmd->t_task_lba = transport_lba_64_ext(cdb); in sbc_parse_cdb()
912 cmd->se_cmd_flags |= SCF_SCSI_DATA_CDB; in sbc_parse_cdb()
918 cmd->execute_rw = ops->execute_rw; in sbc_parse_cdb()
919 cmd->execute_cmd = sbc_execute_rw; in sbc_parse_cdb()
920 cmd->transport_complete_callback = &xdreadwrite_callback; in sbc_parse_cdb()
930 size = sbc_get_size(cmd, 1); in sbc_parse_cdb()
931 cmd->t_task_lba = get_unaligned_be64(&cdb[12]); in sbc_parse_cdb()
933 ret = sbc_setup_write_same(cmd, &cdb[10], ops); in sbc_parse_cdb()
958 size = 2 * sbc_get_size(cmd, sectors); in sbc_parse_cdb()
959 cmd->t_task_lba = get_unaligned_be64(&cdb[2]); in sbc_parse_cdb()
960 cmd->t_task_nolb = sectors; in sbc_parse_cdb()
961 cmd->se_cmd_flags |= SCF_SCSI_DATA_CDB | SCF_COMPARE_AND_WRITE; in sbc_parse_cdb()
962 cmd->execute_rw = ops->execute_rw; in sbc_parse_cdb()
963 cmd->execute_cmd = sbc_compare_and_write; in sbc_parse_cdb()
964 cmd->transport_complete_callback = compare_and_write_callback; in sbc_parse_cdb()
968 cmd->execute_cmd = sbc_emulate_readcapacity; in sbc_parse_cdb()
971 switch (cmd->t_task_cdb[1] & 0x1f) { in sbc_parse_cdb()
973 cmd->execute_cmd = sbc_emulate_readcapacity_16; in sbc_parse_cdb()
976 cmd->execute_cmd = target_emulate_report_referrals; in sbc_parse_cdb()
980 cmd->t_task_cdb[1] & 0x1f); in sbc_parse_cdb()
990 cmd->t_task_lba = transport_lba_32(cdb); in sbc_parse_cdb()
993 cmd->t_task_lba = transport_lba_64(cdb); in sbc_parse_cdb()
996 cmd->execute_cmd = ops->execute_sync_cache; in sbc_parse_cdb()
1000 cmd->execute_cmd = sbc_emulate_noop; in sbc_parse_cdb()
1012 cmd->execute_cmd = ops->execute_unmap; in sbc_parse_cdb()
1021 size = sbc_get_size(cmd, 1); in sbc_parse_cdb()
1022 cmd->t_task_lba = get_unaligned_be64(&cdb[2]); in sbc_parse_cdb()
1024 ret = sbc_setup_write_same(cmd, &cdb[1], ops); in sbc_parse_cdb()
1035 size = sbc_get_size(cmd, 1); in sbc_parse_cdb()
1036 cmd->t_task_lba = get_unaligned_be32(&cdb[2]); in sbc_parse_cdb()
1042 ret = sbc_setup_write_same(cmd, &cdb[1], ops); in sbc_parse_cdb()
1049 cmd->t_task_lba = transport_lba_32(cdb); in sbc_parse_cdb()
1050 cmd->execute_cmd = sbc_emulate_noop; in sbc_parse_cdb()
1062 cmd->execute_cmd = sbc_emulate_noop; in sbc_parse_cdb()
1065 ret = spc_parse_cdb(cmd, &size); in sbc_parse_cdb()
1071 if (!cmd->execute_cmd) in sbc_parse_cdb()
1074 if (cmd->se_cmd_flags & SCF_SCSI_DATA_CDB) { in sbc_parse_cdb()
1078 if (((cmd->t_task_lba + sectors) < cmd->t_task_lba) || in sbc_parse_cdb()
1079 ((cmd->t_task_lba + sectors) > end_lba)) { in sbc_parse_cdb()
1082 end_lba, cmd->t_task_lba, sectors); in sbc_parse_cdb()
1086 if (!(cmd->se_cmd_flags & SCF_COMPARE_AND_WRITE)) in sbc_parse_cdb()
1087 size = sbc_get_size(cmd, sectors); in sbc_parse_cdb()
1090 return target_cmd_size_check(cmd, size); in sbc_parse_cdb()
1101 sbc_execute_unmap(struct se_cmd *cmd, in sbc_execute_unmap() argument
1106 struct se_device *dev = cmd->se_dev; in sbc_execute_unmap()
1115 if (cmd->t_task_cdb[1]) in sbc_execute_unmap()
1118 if (cmd->data_length == 0) { in sbc_execute_unmap()
1119 target_complete_cmd(cmd, SAM_STAT_GOOD); in sbc_execute_unmap()
1123 if (cmd->data_length < 8) { in sbc_execute_unmap()
1125 cmd->data_length); in sbc_execute_unmap()
1129 buf = transport_kmap_data_sg(cmd); in sbc_execute_unmap()
1136 size = cmd->data_length - 8; in sbc_execute_unmap()
1139 cmd->data_length, bd_dl); in sbc_execute_unmap()
1169 ret = do_unmap_fn(cmd, priv, lba, range); in sbc_execute_unmap()
1178 transport_kunmap_data_sg(cmd); in sbc_execute_unmap()
1180 target_complete_cmd(cmd, GOOD); in sbc_execute_unmap()
1186 sbc_dif_generate(struct se_cmd *cmd) in sbc_dif_generate() argument
1188 struct se_device *dev = cmd->se_dev; in sbc_dif_generate()
1190 struct scatterlist *dsg, *psg = cmd->t_prot_sg; in sbc_dif_generate()
1191 sector_t sector = cmd->t_task_lba; in sbc_dif_generate()
1195 for_each_sg(cmd->t_data_sg, dsg, cmd->t_data_nents, i) { in sbc_dif_generate()
1211 if (cmd->prot_type == TARGET_DIF_TYPE1_PROT) in sbc_dif_generate()
1217 (cmd->data_direction == DMA_TO_DEVICE) ? in sbc_dif_generate()
1232 sbc_dif_v1_verify(struct se_cmd *cmd, struct se_dif_v1_tuple *sdt, in sbc_dif_v1_verify() argument
1235 struct se_device *dev = cmd->se_dev; in sbc_dif_v1_verify()
1239 if (!(cmd->prot_checks & TARGET_DIF_CHECK_GUARD)) in sbc_dif_v1_verify()
1252 if (!(cmd->prot_checks & TARGET_DIF_CHECK_REFTAG)) in sbc_dif_v1_verify()
1255 if (cmd->prot_type == TARGET_DIF_TYPE1_PROT && in sbc_dif_v1_verify()
1263 if (cmd->prot_type == TARGET_DIF_TYPE2_PROT && in sbc_dif_v1_verify()
1275 sbc_dif_copy_prot(struct se_cmd *cmd, unsigned int sectors, bool read, in sbc_dif_copy_prot() argument
1278 struct se_device *dev = cmd->se_dev; in sbc_dif_copy_prot()
1289 for_each_sg(cmd->t_prot_sg, psg, cmd->t_prot_nents, i) { in sbc_dif_copy_prot()
1319 sbc_dif_verify_write(struct se_cmd *cmd, sector_t start, unsigned int sectors, in sbc_dif_verify_write() argument
1322 struct se_device *dev = cmd->se_dev; in sbc_dif_verify_write()
1324 struct scatterlist *dsg, *psg = cmd->t_prot_sg; in sbc_dif_verify_write()
1330 for_each_sg(cmd->t_data_sg, dsg, cmd->t_data_nents, i) { in sbc_dif_verify_write()
1350 rc = sbc_dif_v1_verify(cmd, sdt, daddr + j, sector, in sbc_dif_verify_write()
1355 cmd->bad_sector = sector; in sbc_dif_verify_write()
1370 sbc_dif_copy_prot(cmd, sectors, false, sg, sg_off); in sbc_dif_verify_write()
1377 __sbc_dif_verify_read(struct se_cmd *cmd, sector_t start, unsigned int sectors, in __sbc_dif_verify_read() argument
1380 struct se_device *dev = cmd->se_dev; in __sbc_dif_verify_read()
1388 for_each_sg(cmd->t_data_sg, dsg, cmd->t_data_nents, i) { in __sbc_dif_verify_read()
1414 rc = sbc_dif_v1_verify(cmd, sdt, daddr + j, sector, in __sbc_dif_verify_read()
1419 cmd->bad_sector = sector; in __sbc_dif_verify_read()
1436 sbc_dif_read_strip(struct se_cmd *cmd) in sbc_dif_read_strip() argument
1438 struct se_device *dev = cmd->se_dev; in sbc_dif_read_strip()
1439 u32 sectors = cmd->prot_length / dev->prot_length; in sbc_dif_read_strip()
1441 return __sbc_dif_verify_read(cmd, cmd->t_task_lba, sectors, 0, in sbc_dif_read_strip()
1442 cmd->t_prot_sg, 0); in sbc_dif_read_strip()
1446 sbc_dif_verify_read(struct se_cmd *cmd, sector_t start, unsigned int sectors, in sbc_dif_verify_read() argument
1451 rc = __sbc_dif_verify_read(cmd, start, sectors, ei_lba, sg, sg_off); in sbc_dif_verify_read()
1455 sbc_dif_copy_prot(cmd, sectors, true, sg, sg_off); in sbc_dif_verify_read()