Lines Matching refs:scp
918 static void mk_sense_invalid_fld(struct scsi_cmnd *scp, in mk_sense_invalid_fld() argument
926 sbuff = scp->sense_buffer; in mk_sense_invalid_fld()
928 sdev_printk(KERN_ERR, scp->device, in mk_sense_invalid_fld()
934 scsi_build_sense(scp, sdebug_dsense, ILLEGAL_REQUEST, asc, 0); in mk_sense_invalid_fld()
953 sdev_printk(KERN_INFO, scp->device, "%s: [sense_key,asc,ascq" in mk_sense_invalid_fld()
958 static void mk_sense_buffer(struct scsi_cmnd *scp, int key, int asc, int asq) in mk_sense_buffer() argument
960 if (!scp->sense_buffer) { in mk_sense_buffer()
961 sdev_printk(KERN_ERR, scp->device, in mk_sense_buffer()
965 memset(scp->sense_buffer, 0, SCSI_SENSE_BUFFERSIZE); in mk_sense_buffer()
967 scsi_build_sense(scp, sdebug_dsense, key, asc, asq); in mk_sense_buffer()
970 sdev_printk(KERN_INFO, scp->device, in mk_sense_buffer()
975 static void mk_sense_invalid_opcode(struct scsi_cmnd *scp) in mk_sense_invalid_opcode() argument
977 mk_sense_buffer(scp, ILLEGAL_REQUEST, INVALID_OPCODE, 0); in mk_sense_invalid_opcode()
1070 static int make_ua(struct scsi_cmnd *scp, struct sdebug_dev_info *devip) in make_ua() argument
1080 mk_sense_buffer(scp, UNIT_ATTENTION, UA_RESET_ASC, in make_ua()
1086 mk_sense_buffer(scp, UNIT_ATTENTION, UA_RESET_ASC, in make_ua()
1092 mk_sense_buffer(scp, UNIT_ATTENTION, UA_CHANGED_ASC, in make_ua()
1098 mk_sense_buffer(scp, UNIT_ATTENTION, UA_CHANGED_ASC, in make_ua()
1104 mk_sense_buffer(scp, UNIT_ATTENTION, in make_ua()
1111 mk_sense_buffer(scp, UNIT_ATTENTION, in make_ua()
1128 mk_sense_buffer(scp, UNIT_ATTENTION, in make_ua()
1142 sdev_printk(KERN_INFO, scp->device, in make_ua()
1151 static int fill_from_dev_buffer(struct scsi_cmnd *scp, unsigned char *arr, in fill_from_dev_buffer() argument
1155 struct scsi_data_buffer *sdb = &scp->sdb; in fill_from_dev_buffer()
1159 if (scp->sc_data_direction != DMA_FROM_DEVICE) in fill_from_dev_buffer()
1164 scsi_set_resid(scp, scsi_bufflen(scp) - act_len); in fill_from_dev_buffer()
1174 static int p_fill_from_dev_buffer(struct scsi_cmnd *scp, const void *arr, in p_fill_from_dev_buffer() argument
1178 struct scsi_data_buffer *sdb = &scp->sdb; in p_fill_from_dev_buffer()
1183 if (scp->sc_data_direction != DMA_FROM_DEVICE) in p_fill_from_dev_buffer()
1189 __func__, off_dst, scsi_bufflen(scp), act_len, in p_fill_from_dev_buffer()
1190 scsi_get_resid(scp)); in p_fill_from_dev_buffer()
1191 n = scsi_bufflen(scp) - (off_dst + act_len); in p_fill_from_dev_buffer()
1192 scsi_set_resid(scp, min_t(u32, scsi_get_resid(scp), n)); in p_fill_from_dev_buffer()
1199 static int fetch_to_dev_buffer(struct scsi_cmnd *scp, unsigned char *arr, in fetch_to_dev_buffer() argument
1202 if (!scsi_bufflen(scp)) in fetch_to_dev_buffer()
1204 if (scp->sc_data_direction != DMA_TO_DEVICE) in fetch_to_dev_buffer()
1207 return scsi_sg_copy_to_buffer(scp, arr, arr_len); in fetch_to_dev_buffer()
1560 static int resp_inquiry(struct scsi_cmnd *scp, struct sdebug_dev_info *devip) in resp_inquiry() argument
1564 unsigned char *cmd = scp->cmnd; in resp_inquiry()
1576 have_wlun = scsi_is_wlun(scp->device->lun); in resp_inquiry()
1585 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 1, 1); in resp_inquiry()
1677 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 2, -1); in resp_inquiry()
1682 ret = fill_from_dev_buffer(scp, arr, in resp_inquiry()
1718 ret = fill_from_dev_buffer(scp, arr, in resp_inquiry()
1728 static int resp_requests(struct scsi_cmnd *scp, in resp_requests() argument
1731 unsigned char *cmd = scp->cmnd; in resp_requests()
1779 return fill_from_dev_buffer(scp, arr, min_t(u32, len, alloc_len)); in resp_requests()
1782 static int resp_start_stop(struct scsi_cmnd *scp, struct sdebug_dev_info *devip) in resp_start_stop() argument
1784 unsigned char *cmd = scp->cmnd; in resp_start_stop()
1790 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 4, 7); in resp_start_stop()
1811 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 4, 0 /* START bit */); in resp_start_stop()
1837 static int resp_readcap(struct scsi_cmnd *scp, in resp_readcap() argument
1852 return fill_from_dev_buffer(scp, arr, SDEBUG_READCAP_ARR_SZ); in resp_readcap()
1856 static int resp_readcap16(struct scsi_cmnd *scp, in resp_readcap16() argument
1859 unsigned char *cmd = scp->cmnd; in resp_readcap16()
1889 return fill_from_dev_buffer(scp, arr, in resp_readcap16()
1895 static int resp_report_tgtpgs(struct scsi_cmnd *scp, in resp_report_tgtpgs() argument
1898 unsigned char *cmd = scp->cmnd; in resp_report_tgtpgs()
1966 ret = fill_from_dev_buffer(scp, arr, in resp_report_tgtpgs()
1972 static int resp_rsup_opcodes(struct scsi_cmnd *scp, in resp_rsup_opcodes() argument
1983 u8 *cmd = scp->cmnd; in resp_rsup_opcodes()
1991 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 6, -1); in resp_rsup_opcodes()
2000 mk_sense_buffer(scp, ILLEGAL_REQUEST, INSUFF_RES_ASC, in resp_rsup_opcodes()
2061 mk_sense_invalid_fld(scp, SDEB_IN_CDB, in resp_rsup_opcodes()
2069 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 4, -1); in resp_rsup_opcodes()
2112 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 2, 2); in resp_rsup_opcodes()
2118 errsts = fill_from_dev_buffer(scp, arr, len); in resp_rsup_opcodes()
2123 static int resp_rsup_tmfs(struct scsi_cmnd *scp, in resp_rsup_tmfs() argument
2129 u8 *cmd = scp->cmnd; in resp_rsup_tmfs()
2135 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 6, -1); in resp_rsup_tmfs()
2147 return fill_from_dev_buffer(scp, arr, len); in resp_rsup_tmfs()
2312 static int resp_mode_sense(struct scsi_cmnd *scp, in resp_mode_sense() argument
2319 int target = scp->device->id; in resp_mode_sense()
2322 unsigned char *cmd = scp->cmnd; in resp_mode_sense()
2340 mk_sense_buffer(scp, ILLEGAL_REQUEST, SAVING_PARAMS_UNSUP, 0); in resp_mode_sense()
2384 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 3, -1); in resp_mode_sense()
2418 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 3, -1); in resp_mode_sense()
2458 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 3, -1); in resp_mode_sense()
2467 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 2, 5); in resp_mode_sense()
2474 return fill_from_dev_buffer(scp, arr, min_t(u32, alloc_len, offset)); in resp_mode_sense()
2479 static int resp_mode_select(struct scsi_cmnd *scp, in resp_mode_select() argument
2485 unsigned char *cmd = scp->cmnd; in resp_mode_select()
2493 mk_sense_invalid_fld(scp, SDEB_IN_CDB, mselect6 ? 4 : 7, -1); in resp_mode_select()
2496 res = fetch_to_dev_buffer(scp, arr, param_len); in resp_mode_select()
2500 sdev_printk(KERN_INFO, scp->device, in resp_mode_select()
2507 mk_sense_invalid_fld(scp, SDEB_IN_DATA, 0, -1); in resp_mode_select()
2513 mk_sense_invalid_fld(scp, SDEB_IN_DATA, off, 7); in resp_mode_select()
2520 mk_sense_buffer(scp, ILLEGAL_REQUEST, in resp_mode_select()
2554 mk_sense_invalid_fld(scp, SDEB_IN_DATA, off, 5); in resp_mode_select()
2586 static int resp_log_sense(struct scsi_cmnd *scp, in resp_log_sense() argument
2592 unsigned char *cmd = scp->cmnd; in resp_log_sense()
2598 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 1, ppc ? 1 : 0); in resp_log_sense()
2621 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 2, 5); in resp_log_sense()
2653 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 2, 5); in resp_log_sense()
2657 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 3, -1); in resp_log_sense()
2661 return fill_from_dev_buffer(scp, arr, in resp_log_sense()
2792 static int check_zbc_access_params(struct scsi_cmnd *scp, in check_zbc_access_params() argument
2795 struct scsi_device *sdp = scp->device; in check_zbc_access_params()
2807 mk_sense_buffer(scp, ILLEGAL_REQUEST, in check_zbc_access_params()
2818 mk_sense_buffer(scp, ILLEGAL_REQUEST, in check_zbc_access_params()
2829 mk_sense_buffer(scp, ILLEGAL_REQUEST, in check_zbc_access_params()
2836 mk_sense_buffer(scp, ILLEGAL_REQUEST, in check_zbc_access_params()
2842 mk_sense_buffer(scp, ILLEGAL_REQUEST, in check_zbc_access_params()
2853 mk_sense_buffer(scp, DATA_PROTECT, in check_zbc_access_params()
2865 (struct scsi_cmnd *scp, unsigned long long lba, in check_device_access_params() argument
2868 struct scsi_device *sdp = scp->device; in check_device_access_params()
2872 mk_sense_buffer(scp, ILLEGAL_REQUEST, LBA_OUT_OF_RANGE, 0); in check_device_access_params()
2878 mk_sense_buffer(scp, ILLEGAL_REQUEST, INVALID_FIELD_IN_CDB, 0); in check_device_access_params()
2882 mk_sense_buffer(scp, DATA_PROTECT, WRITE_PROTECTED, 0x2); in check_device_access_params()
2886 return check_zbc_access_params(scp, lba, num, write); in check_device_access_params()
2908 static int do_device_access(struct sdeb_store_info *sip, struct scsi_cmnd *scp, in do_device_access() argument
2914 struct scsi_data_buffer *sdb = &scp->sdb; in do_device_access()
2926 if (scp->sc_data_direction != dir) in do_device_access()
2951 static int do_dout_fetch(struct scsi_cmnd *scp, u32 num, u8 *doutp) in do_dout_fetch() argument
2953 struct scsi_data_buffer *sdb = &scp->sdb; in do_dout_fetch()
2957 if (scp->sc_data_direction != DMA_TO_DEVICE) in do_dout_fetch()
3035 static void dif_copy_prot(struct scsi_cmnd *scp, sector_t sector, in dif_copy_prot() argument
3041 scp->device->hostdata, true); in dif_copy_prot()
3049 sg_miter_start(&miter, scsi_prot_sglist(scp), in dif_copy_prot()
3050 scsi_prot_sg_count(scp), SG_MITER_ATOMIC | in dif_copy_prot()
3081 static int prot_verify_read(struct scsi_cmnd *scp, sector_t start_sec, in prot_verify_read() argument
3088 scp->device->hostdata, true); in prot_verify_read()
3105 if (scp->cmnd[1] >> 5) { /* RDPROTECT */ in prot_verify_read()
3115 dif_copy_prot(scp, start_sec, sectors, true); in prot_verify_read()
3121 static int resp_read_dt0(struct scsi_cmnd *scp, struct sdebug_dev_info *devip) in resp_read_dt0() argument
3130 u8 *cmd = scp->cmnd; in resp_read_dt0()
3174 mk_sense_invalid_opcode(scp); in resp_read_dt0()
3180 sdev_printk(KERN_ERR, scp->device, "Unprotected RD " in resp_read_dt0()
3189 ret = check_device_access_params(scp, lba, num, false); in resp_read_dt0()
3196 mk_sense_buffer(scp, MEDIUM_ERROR, UNRECOVERED_READ_ERR, 0); in resp_read_dt0()
3198 if (0x70 == (scp->sense_buffer[0] & 0x7f)) { in resp_read_dt0()
3199 scp->sense_buffer[0] |= 0x80; /* Valid bit */ in resp_read_dt0()
3202 put_unaligned_be32(ret, scp->sense_buffer + 3); in resp_read_dt0()
3204 scsi_set_resid(scp, scsi_bufflen(scp)); in resp_read_dt0()
3211 if (unlikely(sdebug_dix && scsi_prot_sg_count(scp))) { in resp_read_dt0()
3212 switch (prot_verify_read(scp, lba, num, ei_lba)) { in resp_read_dt0()
3216 mk_sense_buffer(scp, ABORTED_COMMAND, 0x10, 1); in resp_read_dt0()
3218 } else if (scp->prot_flags & SCSI_PROT_GUARD_CHECK) { in resp_read_dt0()
3220 mk_sense_buffer(scp, ILLEGAL_REQUEST, 0x10, 1); in resp_read_dt0()
3227 mk_sense_buffer(scp, ABORTED_COMMAND, 0x10, 3); in resp_read_dt0()
3229 } else if (scp->prot_flags & SCSI_PROT_REF_CHECK) { in resp_read_dt0()
3231 mk_sense_buffer(scp, ILLEGAL_REQUEST, 0x10, 3); in resp_read_dt0()
3238 ret = do_device_access(sip, scp, 0, lba, num, false); in resp_read_dt0()
3243 scsi_set_resid(scp, scsi_bufflen(scp) - ret); in resp_read_dt0()
3248 mk_sense_buffer(scp, RECOVERED_ERROR, THRESHOLD_EXCEEDED, 0); in resp_read_dt0()
3253 mk_sense_buffer(scp, ABORTED_COMMAND, 0x10, 1); in resp_read_dt0()
3257 mk_sense_buffer(scp, ILLEGAL_REQUEST, 0x10, 1); in resp_read_dt0()
3419 static int resp_write_dt0(struct scsi_cmnd *scp, struct sdebug_dev_info *devip) in resp_write_dt0() argument
3428 u8 *cmd = scp->cmnd; in resp_write_dt0()
3472 mk_sense_invalid_opcode(scp); in resp_write_dt0()
3478 sdev_printk(KERN_ERR, scp->device, "Unprotected WR " in resp_write_dt0()
3483 ret = check_device_access_params(scp, lba, num, true); in resp_write_dt0()
3490 if (unlikely(sdebug_dix && scsi_prot_sg_count(scp))) { in resp_write_dt0()
3491 switch (prot_verify_write(scp, lba, num, ei_lba)) { in resp_write_dt0()
3493 if (scp->prot_flags & SCSI_PROT_GUARD_CHECK) { in resp_write_dt0()
3495 mk_sense_buffer(scp, ILLEGAL_REQUEST, 0x10, 1); in resp_write_dt0()
3497 } else if (scp->cmnd[1] >> 5 != 3) { /* WRPROTECT != 3 */ in resp_write_dt0()
3499 mk_sense_buffer(scp, ABORTED_COMMAND, 0x10, 1); in resp_write_dt0()
3504 if (scp->prot_flags & SCSI_PROT_REF_CHECK) { in resp_write_dt0()
3506 mk_sense_buffer(scp, ILLEGAL_REQUEST, 0x10, 3); in resp_write_dt0()
3508 } else if (scp->cmnd[1] >> 5 != 3) { /* WRPROTECT != 3 */ in resp_write_dt0()
3510 mk_sense_buffer(scp, ABORTED_COMMAND, 0x10, 3); in resp_write_dt0()
3517 ret = do_device_access(sip, scp, 0, lba, num, true); in resp_write_dt0()
3528 sdev_printk(KERN_INFO, scp->device, in resp_write_dt0()
3535 mk_sense_buffer(scp, RECOVERED_ERROR, THRESHOLD_EXCEEDED, 0); in resp_write_dt0()
3540 mk_sense_buffer(scp, ABORTED_COMMAND, 0x10, 1); in resp_write_dt0()
3544 mk_sense_buffer(scp, ILLEGAL_REQUEST, 0x10, 1); in resp_write_dt0()
3556 static int resp_write_scat(struct scsi_cmnd *scp, in resp_write_scat() argument
3559 u8 *cmd = scp->cmnd; in resp_write_scat()
3589 mk_sense_invalid_opcode(scp); in resp_write_scat()
3595 sdev_printk(KERN_ERR, scp->device, in resp_write_scat()
3603 sdev_printk(KERN_INFO, scp->device, in resp_write_scat()
3606 mk_sense_buffer(scp, ILLEGAL_REQUEST, INVALID_FIELD_IN_CDB, 0); in resp_write_scat()
3612 sdev_printk(KERN_INFO, scp->device, in resp_write_scat()
3615 mk_sense_buffer(scp, ILLEGAL_REQUEST, INVALID_FIELD_IN_CDB, 0); in resp_write_scat()
3622 sdev_printk(KERN_INFO, scp->device, in resp_write_scat()
3625 res = fetch_to_dev_buffer(scp, lrdp, lbdof_blen); in resp_write_scat()
3639 sdev_printk(KERN_INFO, scp->device, in resp_write_scat()
3644 ret = check_device_access_params(scp, lba, num, true); in resp_write_scat()
3652 sdev_printk(KERN_INFO, scp->device, in resp_write_scat()
3655 mk_sense_buffer(scp, ILLEGAL_REQUEST, WRITE_ERROR_ASC, in resp_write_scat()
3662 if (unlikely(sdebug_dix && scsi_prot_sg_count(scp))) { in resp_write_scat()
3663 int prot_ret = prot_verify_write(scp, lba, num, in resp_write_scat()
3667 mk_sense_buffer(scp, ILLEGAL_REQUEST, 0x10, in resp_write_scat()
3674 ret = do_device_access(sip, scp, sg_off, lba, num, true); in resp_write_scat()
3684 sdev_printk(KERN_INFO, scp->device, in resp_write_scat()
3691 mk_sense_buffer(scp, RECOVERED_ERROR, THRESHOLD_EXCEEDED, 0); in resp_write_scat()
3697 mk_sense_buffer(scp, ABORTED_COMMAND, 0x10, 1); in resp_write_scat()
3702 mk_sense_buffer(scp, ILLEGAL_REQUEST, 0x10, 1); in resp_write_scat()
3719 static int resp_write_same(struct scsi_cmnd *scp, u64 lba, u32 num, in resp_write_same() argument
3722 struct scsi_device *sdp = scp->device; in resp_write_same()
3729 scp->device->hostdata, true); in resp_write_same()
3736 ret = check_device_access_params(scp, lba, num, true); in resp_write_same()
3755 ret = fetch_to_dev_buffer(scp, fs1p, lb_size); in resp_write_same()
3761 sdev_printk(KERN_INFO, scp->device, in resp_write_same()
3782 static int resp_write_same_10(struct scsi_cmnd *scp, in resp_write_same_10() argument
3785 u8 *cmd = scp->cmnd; in resp_write_same_10()
3793 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 1, 3); in resp_write_same_10()
3801 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 7, -1); in resp_write_same_10()
3804 return resp_write_same(scp, lba, num, ei_lba, unmap, false); in resp_write_same_10()
3807 static int resp_write_same_16(struct scsi_cmnd *scp, in resp_write_same_16() argument
3810 u8 *cmd = scp->cmnd; in resp_write_same_16()
3819 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 1, 3); in resp_write_same_16()
3829 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 10, -1); in resp_write_same_16()
3832 return resp_write_same(scp, lba, num, ei_lba, unmap, ndob); in resp_write_same_16()
3838 static int resp_write_buffer(struct scsi_cmnd *scp, in resp_write_buffer() argument
3841 u8 *cmd = scp->cmnd; in resp_write_buffer()
3842 struct scsi_device *sdp = scp->device; in resp_write_buffer()
3884 static int resp_comp_write(struct scsi_cmnd *scp, in resp_comp_write() argument
3887 u8 *cmd = scp->cmnd; in resp_comp_write()
3904 mk_sense_invalid_opcode(scp); in resp_comp_write()
3910 sdev_printk(KERN_ERR, scp->device, "Unprotected WR " in resp_comp_write()
3912 ret = check_device_access_params(scp, lba, num, false); in resp_comp_write()
3918 mk_sense_buffer(scp, ILLEGAL_REQUEST, INSUFF_RES_ASC, in resp_comp_write()
3925 ret = do_dout_fetch(scp, dnum, arr); in resp_comp_write()
3930 sdev_printk(KERN_INFO, scp->device, "%s: compare_write: cdb " in resp_comp_write()
3934 mk_sense_buffer(scp, MISCOMPARE, MISCOMPARE_VERIFY_ASC, 0); in resp_comp_write()
3952 static int resp_unmap(struct scsi_cmnd *scp, struct sdebug_dev_info *devip) in resp_unmap() argument
3963 payload_len = get_unaligned_be16(scp->cmnd + 7); in resp_unmap()
3964 BUG_ON(scsi_bufflen(scp) != payload_len); in resp_unmap()
3968 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 7, -1); in resp_unmap()
3972 buf = kzalloc(scsi_bufflen(scp), GFP_ATOMIC); in resp_unmap()
3974 mk_sense_buffer(scp, ILLEGAL_REQUEST, INSUFF_RES_ASC, in resp_unmap()
3979 scsi_sg_copy_to_buffer(scp, buf, scsi_bufflen(scp)); in resp_unmap()
3992 ret = check_device_access_params(scp, lba, num, true); in resp_unmap()
4010 static int resp_get_lba_status(struct scsi_cmnd *scp, in resp_get_lba_status() argument
4013 u8 *cmd = scp->cmnd; in resp_get_lba_status()
4025 ret = check_device_access_params(scp, lba, 1, false); in resp_get_lba_status()
4049 return fill_from_dev_buffer(scp, arr, SDEBUG_GET_LBA_STATUS_LEN); in resp_get_lba_status()
4052 static int resp_sync_cache(struct scsi_cmnd *scp, in resp_sync_cache() argument
4058 u8 *cmd = scp->cmnd; in resp_sync_cache()
4068 mk_sense_buffer(scp, ILLEGAL_REQUEST, LBA_OUT_OF_RANGE, 0); in resp_sync_cache()
4085 static int resp_pre_fetch(struct scsi_cmnd *scp, in resp_pre_fetch() argument
4092 u8 *cmd = scp->cmnd; in resp_pre_fetch()
4105 mk_sense_buffer(scp, ILLEGAL_REQUEST, LBA_OUT_OF_RANGE, 0); in resp_pre_fetch()
4138 static int resp_report_luns(struct scsi_cmnd *scp, in resp_report_luns() argument
4141 unsigned char *cmd = scp->cmnd; in resp_report_luns()
4162 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 6, -1); in resp_report_luns()
4184 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 2, -1); in resp_report_luns()
4193 scsi_set_resid(scp, scsi_bufflen(scp)); in resp_report_luns()
4217 res = p_fill_from_dev_buffer(scp, arr, n, off_rsp); in resp_report_luns()
4227 res = p_fill_from_dev_buffer(scp, arr, j * sz_lun, off_rsp); in resp_report_luns()
4231 static int resp_verify(struct scsi_cmnd *scp, struct sdebug_dev_info *devip) in resp_verify() argument
4240 u8 *cmd = scp->cmnd; in resp_verify()
4248 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 2, 2); in resp_verify()
4263 mk_sense_invalid_opcode(scp); in resp_verify()
4270 ret = check_device_access_params(scp, lba, a_num, false); in resp_verify()
4276 mk_sense_buffer(scp, ILLEGAL_REQUEST, INSUFF_RES_ASC, in resp_verify()
4283 ret = do_dout_fetch(scp, a_num, arr); in resp_verify()
4288 sdev_printk(KERN_INFO, scp->device, in resp_verify()
4298 mk_sense_buffer(scp, MISCOMPARE, MISCOMPARE_VERIFY_ASC, 0); in resp_verify()
4311 static int resp_report_zones(struct scsi_cmnd *scp, in resp_report_zones() argument
4320 u8 *cmd = scp->cmnd; in resp_report_zones()
4326 mk_sense_invalid_opcode(scp); in resp_report_zones()
4337 mk_sense_buffer(scp, ILLEGAL_REQUEST, LBA_OUT_OF_RANGE, 0); in resp_report_zones()
4347 mk_sense_buffer(scp, ILLEGAL_REQUEST, INSUFF_RES_ASC, in resp_report_zones()
4408 mk_sense_buffer(scp, ILLEGAL_REQUEST, in resp_report_zones()
4437 ret = fill_from_dev_buffer(scp, arr, min_t(u32, alloc_len, rep_len)); in resp_report_zones()
4457 static int resp_open_zone(struct scsi_cmnd *scp, struct sdebug_dev_info *devip) in resp_open_zone() argument
4462 u8 *cmd = scp->cmnd; in resp_open_zone()
4469 mk_sense_invalid_opcode(scp); in resp_open_zone()
4479 mk_sense_buffer(scp, DATA_PROTECT, INSUFF_RES_ASC, in resp_open_zone()
4492 mk_sense_buffer(scp, ILLEGAL_REQUEST, LBA_OUT_OF_RANGE, 0); in resp_open_zone()
4499 mk_sense_buffer(scp, ILLEGAL_REQUEST, INVALID_FIELD_IN_CDB, 0); in resp_open_zone()
4504 mk_sense_buffer(scp, ILLEGAL_REQUEST, INVALID_FIELD_IN_CDB, 0); in resp_open_zone()
4514 mk_sense_buffer(scp, DATA_PROTECT, INSUFF_RES_ASC, in resp_open_zone()
4534 static int resp_close_zone(struct scsi_cmnd *scp, in resp_close_zone() argument
4539 u8 *cmd = scp->cmnd; in resp_close_zone()
4546 mk_sense_invalid_opcode(scp); in resp_close_zone()
4560 mk_sense_buffer(scp, ILLEGAL_REQUEST, LBA_OUT_OF_RANGE, 0); in resp_close_zone()
4567 mk_sense_buffer(scp, ILLEGAL_REQUEST, INVALID_FIELD_IN_CDB, 0); in resp_close_zone()
4572 mk_sense_buffer(scp, ILLEGAL_REQUEST, INVALID_FIELD_IN_CDB, 0); in resp_close_zone()
4607 static int resp_finish_zone(struct scsi_cmnd *scp, in resp_finish_zone() argument
4613 u8 *cmd = scp->cmnd; in resp_finish_zone()
4619 mk_sense_invalid_opcode(scp); in resp_finish_zone()
4633 mk_sense_buffer(scp, ILLEGAL_REQUEST, LBA_OUT_OF_RANGE, 0); in resp_finish_zone()
4640 mk_sense_buffer(scp, ILLEGAL_REQUEST, INVALID_FIELD_IN_CDB, 0); in resp_finish_zone()
4645 mk_sense_buffer(scp, ILLEGAL_REQUEST, INVALID_FIELD_IN_CDB, 0); in resp_finish_zone()
4689 static int resp_rwp_zone(struct scsi_cmnd *scp, struct sdebug_dev_info *devip) in resp_rwp_zone() argument
4694 u8 *cmd = scp->cmnd; in resp_rwp_zone()
4700 mk_sense_invalid_opcode(scp); in resp_rwp_zone()
4713 mk_sense_buffer(scp, ILLEGAL_REQUEST, LBA_OUT_OF_RANGE, 0); in resp_rwp_zone()
4720 mk_sense_buffer(scp, ILLEGAL_REQUEST, INVALID_FIELD_IN_CDB, 0); in resp_rwp_zone()
4725 mk_sense_buffer(scp, ILLEGAL_REQUEST, INVALID_FIELD_IN_CDB, 0); in resp_rwp_zone()
4764 struct scsi_cmnd *scp; in sdebug_q_cmd_complete() local
4783 scp = sqcp->a_cmnd; in sdebug_q_cmd_complete()
4784 if (unlikely(scp == NULL)) { in sdebug_q_cmd_complete()
4790 devip = (struct sdebug_dev_info *)scp->device->hostdata; in sdebug_q_cmd_complete()
4826 scsi_done(scp); /* callback to mid level */ in sdebug_q_cmd_complete()
7218 static bool fake_timeout(struct scsi_cmnd *scp) in fake_timeout() argument
7226 scsi_medium_access_command(scp)) in fake_timeout()
7233 static int resp_not_ready(struct scsi_cmnd *scp, struct sdebug_dev_info *devip) in resp_not_ready() argument
7238 struct scsi_device *sdp = scp->device; in resp_not_ready()
7250 mk_sense_buffer(scp, NOT_READY, LOGICAL_UNIT_NOT_READY, 0x1); in resp_not_ready()
7254 if (scp->cmnd[0] == TEST_UNIT_READY) { in resp_not_ready()
7263 scsi_set_sense_information(scp->sense_buffer, SCSI_SENSE_BUFFERSIZE, in resp_not_ready()
7268 mk_sense_buffer(scp, NOT_READY, LOGICAL_UNIT_NOT_READY, 0x2); in resp_not_ready()
7317 struct scsi_cmnd *scp; in sdebug_blk_mq_poll() local
7338 scp = sqcp->a_cmnd; in sdebug_blk_mq_poll()
7339 if (unlikely(scp == NULL)) { in sdebug_blk_mq_poll()
7350 devip = (struct sdebug_dev_info *)scp->device->hostdata; in sdebug_blk_mq_poll()
7380 scsi_done(scp); /* callback to mid level */ in sdebug_blk_mq_poll()
7391 struct scsi_cmnd *scp) in scsi_debug_queuecommand() argument
7394 struct scsi_device *sdp = scp->device; in scsi_debug_queuecommand()
7398 u8 *cmd = scp->cmnd; in scsi_debug_queuecommand()
7410 scsi_set_resid(scp, 0); in scsi_debug_queuecommand()
7422 len = scp->cmd_len; in scsi_debug_queuecommand()
7432 blk_mq_unique_tag(scsi_cmd_to_rq(scp)), b); in scsi_debug_queuecommand()
7472 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 1, 4); in scsi_debug_queuecommand()
7474 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 8, 7); in scsi_debug_queuecommand()
7476 mk_sense_invalid_opcode(scp); in scsi_debug_queuecommand()
7482 mk_sense_invalid_opcode(scp); in scsi_debug_queuecommand()
7489 mk_sense_invalid_opcode(scp); in scsi_debug_queuecommand()
7503 mk_sense_invalid_fld(scp, SDEB_IN_CDB, k, j); in scsi_debug_queuecommand()
7511 errsts = make_ua(scp, devip); in scsi_debug_queuecommand()
7515 if (unlikely(((F_M_ACCESS & flags) || scp->cmnd[0] == TEST_UNIT_READY) && in scsi_debug_queuecommand()
7517 errsts = resp_not_ready(scp, devip); in scsi_debug_queuecommand()
7524 if (fake_timeout(scp)) in scsi_debug_queuecommand()
7534 return schedule_resp(scp, devip, errsts, pfp, 0, 0); in scsi_debug_queuecommand()
7547 return schedule_resp(scp, devip, errsts, pfp, jdelay, 0); in scsi_debug_queuecommand()
7549 return schedule_resp(scp, devip, errsts, pfp, sdebug_jdelay, in scsi_debug_queuecommand()
7552 return schedule_resp(scp, devip, check_condition_result, NULL, 0, 0); in scsi_debug_queuecommand()
7554 return schedule_resp(scp, NULL, DID_NO_CONNECT << 16, NULL, 0, 0); in scsi_debug_queuecommand()