Lines Matching refs:scp
914 static void mk_sense_invalid_fld(struct scsi_cmnd *scp, in mk_sense_invalid_fld() argument
922 sbuff = scp->sense_buffer; in mk_sense_invalid_fld()
924 sdev_printk(KERN_ERR, scp->device, in mk_sense_invalid_fld()
949 sdev_printk(KERN_INFO, scp->device, "%s: [sense_key,asc,ascq" in mk_sense_invalid_fld()
954 static void mk_sense_buffer(struct scsi_cmnd *scp, int key, int asc, int asq) in mk_sense_buffer() argument
958 sbuff = scp->sense_buffer; in mk_sense_buffer()
960 sdev_printk(KERN_ERR, scp->device, in mk_sense_buffer()
969 sdev_printk(KERN_INFO, scp->device, in mk_sense_buffer()
974 static void mk_sense_invalid_opcode(struct scsi_cmnd *scp) in mk_sense_invalid_opcode() argument
976 mk_sense_buffer(scp, ILLEGAL_REQUEST, INVALID_OPCODE, 0); in mk_sense_invalid_opcode()
1069 static int make_ua(struct scsi_cmnd *scp, struct sdebug_dev_info *devip) in make_ua() argument
1079 mk_sense_buffer(scp, UNIT_ATTENTION, UA_RESET_ASC, in make_ua()
1085 mk_sense_buffer(scp, UNIT_ATTENTION, UA_RESET_ASC, in make_ua()
1091 mk_sense_buffer(scp, UNIT_ATTENTION, UA_CHANGED_ASC, in make_ua()
1097 mk_sense_buffer(scp, UNIT_ATTENTION, UA_CHANGED_ASC, in make_ua()
1103 mk_sense_buffer(scp, UNIT_ATTENTION, in make_ua()
1110 mk_sense_buffer(scp, UNIT_ATTENTION, in make_ua()
1127 mk_sense_buffer(scp, UNIT_ATTENTION, in make_ua()
1141 sdev_printk(KERN_INFO, scp->device, in make_ua()
1150 static int fill_from_dev_buffer(struct scsi_cmnd *scp, unsigned char *arr, in fill_from_dev_buffer() argument
1154 struct scsi_data_buffer *sdb = &scp->sdb; in fill_from_dev_buffer()
1158 if (scp->sc_data_direction != DMA_FROM_DEVICE) in fill_from_dev_buffer()
1163 scsi_set_resid(scp, scsi_bufflen(scp) - act_len); in fill_from_dev_buffer()
1173 static int p_fill_from_dev_buffer(struct scsi_cmnd *scp, const void *arr, in p_fill_from_dev_buffer() argument
1177 struct scsi_data_buffer *sdb = &scp->sdb; in p_fill_from_dev_buffer()
1182 if (scp->sc_data_direction != DMA_FROM_DEVICE) in p_fill_from_dev_buffer()
1188 __func__, off_dst, scsi_bufflen(scp), act_len, in p_fill_from_dev_buffer()
1189 scsi_get_resid(scp)); in p_fill_from_dev_buffer()
1190 n = scsi_bufflen(scp) - (off_dst + act_len); in p_fill_from_dev_buffer()
1191 scsi_set_resid(scp, min_t(int, scsi_get_resid(scp), n)); in p_fill_from_dev_buffer()
1198 static int fetch_to_dev_buffer(struct scsi_cmnd *scp, unsigned char *arr, in fetch_to_dev_buffer() argument
1201 if (!scsi_bufflen(scp)) in fetch_to_dev_buffer()
1203 if (scp->sc_data_direction != DMA_TO_DEVICE) in fetch_to_dev_buffer()
1206 return scsi_sg_copy_to_buffer(scp, arr, arr_len); in fetch_to_dev_buffer()
1559 static int resp_inquiry(struct scsi_cmnd *scp, struct sdebug_dev_info *devip) in resp_inquiry() argument
1563 unsigned char *cmd = scp->cmnd; in resp_inquiry()
1574 have_wlun = scsi_is_wlun(scp->device->lun); in resp_inquiry()
1583 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 1, 1); in resp_inquiry()
1674 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 2, -1); in resp_inquiry()
1679 ret = fill_from_dev_buffer(scp, arr, in resp_inquiry()
1715 ret = fill_from_dev_buffer(scp, arr, in resp_inquiry()
1725 static int resp_requests(struct scsi_cmnd *scp, in resp_requests() argument
1728 unsigned char *cmd = scp->cmnd; in resp_requests()
1776 return fill_from_dev_buffer(scp, arr, min_t(int, len, alloc_len)); in resp_requests()
1779 static int resp_start_stop(struct scsi_cmnd *scp, struct sdebug_dev_info *devip) in resp_start_stop() argument
1781 unsigned char *cmd = scp->cmnd; in resp_start_stop()
1787 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 4, 7); in resp_start_stop()
1808 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 4, 0 /* START bit */); in resp_start_stop()
1834 static int resp_readcap(struct scsi_cmnd *scp, in resp_readcap() argument
1849 return fill_from_dev_buffer(scp, arr, SDEBUG_READCAP_ARR_SZ); in resp_readcap()
1853 static int resp_readcap16(struct scsi_cmnd *scp, in resp_readcap16() argument
1856 unsigned char *cmd = scp->cmnd; in resp_readcap16()
1886 return fill_from_dev_buffer(scp, arr, in resp_readcap16()
1892 static int resp_report_tgtpgs(struct scsi_cmnd *scp, in resp_report_tgtpgs() argument
1895 unsigned char *cmd = scp->cmnd; in resp_report_tgtpgs()
1962 ret = fill_from_dev_buffer(scp, arr, in resp_report_tgtpgs()
1968 static int resp_rsup_opcodes(struct scsi_cmnd *scp, in resp_rsup_opcodes() argument
1979 u8 *cmd = scp->cmnd; in resp_rsup_opcodes()
1987 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 6, -1); in resp_rsup_opcodes()
1996 mk_sense_buffer(scp, ILLEGAL_REQUEST, INSUFF_RES_ASC, in resp_rsup_opcodes()
2057 mk_sense_invalid_fld(scp, SDEB_IN_CDB, in resp_rsup_opcodes()
2065 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 4, -1); in resp_rsup_opcodes()
2108 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 2, 2); in resp_rsup_opcodes()
2114 errsts = fill_from_dev_buffer(scp, arr, len); in resp_rsup_opcodes()
2119 static int resp_rsup_tmfs(struct scsi_cmnd *scp, in resp_rsup_tmfs() argument
2125 u8 *cmd = scp->cmnd; in resp_rsup_tmfs()
2131 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 6, -1); in resp_rsup_tmfs()
2143 return fill_from_dev_buffer(scp, arr, len); in resp_rsup_tmfs()
2308 static int resp_mode_sense(struct scsi_cmnd *scp, in resp_mode_sense() argument
2314 int target = scp->device->id; in resp_mode_sense()
2317 unsigned char *cmd = scp->cmnd; in resp_mode_sense()
2335 mk_sense_buffer(scp, ILLEGAL_REQUEST, SAVING_PARAMS_UNSUP, 0); in resp_mode_sense()
2379 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 3, -1); in resp_mode_sense()
2413 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 3, -1); in resp_mode_sense()
2453 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 3, -1); in resp_mode_sense()
2462 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 2, 5); in resp_mode_sense()
2469 return fill_from_dev_buffer(scp, arr, min_t(int, alloc_len, offset)); in resp_mode_sense()
2474 static int resp_mode_select(struct scsi_cmnd *scp, in resp_mode_select() argument
2480 unsigned char *cmd = scp->cmnd; in resp_mode_select()
2488 mk_sense_invalid_fld(scp, SDEB_IN_CDB, mselect6 ? 4 : 7, -1); in resp_mode_select()
2491 res = fetch_to_dev_buffer(scp, arr, param_len); in resp_mode_select()
2495 sdev_printk(KERN_INFO, scp->device, in resp_mode_select()
2501 mk_sense_invalid_fld(scp, SDEB_IN_DATA, 0, -1); in resp_mode_select()
2508 mk_sense_invalid_fld(scp, SDEB_IN_DATA, off, 7); in resp_mode_select()
2515 mk_sense_buffer(scp, ILLEGAL_REQUEST, in resp_mode_select()
2549 mk_sense_invalid_fld(scp, SDEB_IN_DATA, off, 5); in resp_mode_select()
2581 static int resp_log_sense(struct scsi_cmnd *scp, in resp_log_sense() argument
2586 unsigned char *cmd = scp->cmnd; in resp_log_sense()
2592 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 1, ppc ? 1 : 0); in resp_log_sense()
2615 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 2, 5); in resp_log_sense()
2647 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 2, 5); in resp_log_sense()
2651 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 3, -1); in resp_log_sense()
2655 return fill_from_dev_buffer(scp, arr, in resp_log_sense()
2786 static int check_zbc_access_params(struct scsi_cmnd *scp, in check_zbc_access_params() argument
2789 struct scsi_device *sdp = scp->device; in check_zbc_access_params()
2801 mk_sense_buffer(scp, ILLEGAL_REQUEST, in check_zbc_access_params()
2812 mk_sense_buffer(scp, ILLEGAL_REQUEST, in check_zbc_access_params()
2823 mk_sense_buffer(scp, ILLEGAL_REQUEST, in check_zbc_access_params()
2830 mk_sense_buffer(scp, ILLEGAL_REQUEST, in check_zbc_access_params()
2836 mk_sense_buffer(scp, ILLEGAL_REQUEST, in check_zbc_access_params()
2847 mk_sense_buffer(scp, DATA_PROTECT, in check_zbc_access_params()
2859 (struct scsi_cmnd *scp, unsigned long long lba, in check_device_access_params() argument
2862 struct scsi_device *sdp = scp->device; in check_device_access_params()
2866 mk_sense_buffer(scp, ILLEGAL_REQUEST, LBA_OUT_OF_RANGE, 0); in check_device_access_params()
2872 mk_sense_buffer(scp, ILLEGAL_REQUEST, INVALID_FIELD_IN_CDB, 0); in check_device_access_params()
2876 mk_sense_buffer(scp, DATA_PROTECT, WRITE_PROTECTED, 0x2); in check_device_access_params()
2880 return check_zbc_access_params(scp, lba, num, write); in check_device_access_params()
2902 static int do_device_access(struct sdeb_store_info *sip, struct scsi_cmnd *scp, in do_device_access() argument
2908 struct scsi_data_buffer *sdb = &scp->sdb; in do_device_access()
2920 if (scp->sc_data_direction != dir) in do_device_access()
2945 static int do_dout_fetch(struct scsi_cmnd *scp, u32 num, u8 *doutp) in do_dout_fetch() argument
2947 struct scsi_data_buffer *sdb = &scp->sdb; in do_dout_fetch()
2951 if (scp->sc_data_direction != DMA_TO_DEVICE) in do_dout_fetch()
3029 static void dif_copy_prot(struct scsi_cmnd *scp, sector_t sector, in dif_copy_prot() argument
3035 scp->device->hostdata, true); in dif_copy_prot()
3043 sg_miter_start(&miter, scsi_prot_sglist(scp), in dif_copy_prot()
3044 scsi_prot_sg_count(scp), SG_MITER_ATOMIC | in dif_copy_prot()
3075 static int prot_verify_read(struct scsi_cmnd *scp, sector_t start_sec, in prot_verify_read() argument
3081 scp->device->hostdata, true); in prot_verify_read()
3101 dif_copy_prot(scp, start_sec, sectors, true); in prot_verify_read()
3107 static int resp_read_dt0(struct scsi_cmnd *scp, struct sdebug_dev_info *devip) in resp_read_dt0() argument
3116 u8 *cmd = scp->cmnd; in resp_read_dt0()
3160 mk_sense_invalid_opcode(scp); in resp_read_dt0()
3166 sdev_printk(KERN_ERR, scp->device, "Unprotected RD " in resp_read_dt0()
3175 ret = check_device_access_params(scp, lba, num, false); in resp_read_dt0()
3182 mk_sense_buffer(scp, MEDIUM_ERROR, UNRECOVERED_READ_ERR, 0); in resp_read_dt0()
3184 if (0x70 == (scp->sense_buffer[0] & 0x7f)) { in resp_read_dt0()
3185 scp->sense_buffer[0] |= 0x80; /* Valid bit */ in resp_read_dt0()
3188 put_unaligned_be32(ret, scp->sense_buffer + 3); in resp_read_dt0()
3190 scsi_set_resid(scp, scsi_bufflen(scp)); in resp_read_dt0()
3197 if (unlikely(sdebug_dix && scsi_prot_sg_count(scp))) { in resp_read_dt0()
3198 int prot_ret = prot_verify_read(scp, lba, num, ei_lba); in resp_read_dt0()
3202 mk_sense_buffer(scp, ABORTED_COMMAND, 0x10, prot_ret); in resp_read_dt0()
3207 ret = do_device_access(sip, scp, 0, lba, num, false); in resp_read_dt0()
3212 scsi_set_resid(scp, scsi_bufflen(scp) - ret); in resp_read_dt0()
3217 mk_sense_buffer(scp, RECOVERED_ERROR, THRESHOLD_EXCEEDED, 0); in resp_read_dt0()
3222 mk_sense_buffer(scp, ABORTED_COMMAND, 0x10, 1); in resp_read_dt0()
3226 mk_sense_buffer(scp, ILLEGAL_REQUEST, 0x10, 1); in resp_read_dt0()
3410 static int resp_write_dt0(struct scsi_cmnd *scp, struct sdebug_dev_info *devip) in resp_write_dt0() argument
3419 u8 *cmd = scp->cmnd; in resp_write_dt0()
3463 mk_sense_invalid_opcode(scp); in resp_write_dt0()
3469 sdev_printk(KERN_ERR, scp->device, "Unprotected WR " in resp_write_dt0()
3474 ret = check_device_access_params(scp, lba, num, true); in resp_write_dt0()
3481 if (unlikely(sdebug_dix && scsi_prot_sg_count(scp))) { in resp_write_dt0()
3482 int prot_ret = prot_verify_write(scp, lba, num, ei_lba); in resp_write_dt0()
3486 mk_sense_buffer(scp, ILLEGAL_REQUEST, 0x10, prot_ret); in resp_write_dt0()
3491 ret = do_device_access(sip, scp, 0, lba, num, true); in resp_write_dt0()
3502 sdev_printk(KERN_INFO, scp->device, in resp_write_dt0()
3509 mk_sense_buffer(scp, RECOVERED_ERROR, THRESHOLD_EXCEEDED, 0); in resp_write_dt0()
3514 mk_sense_buffer(scp, ABORTED_COMMAND, 0x10, 1); in resp_write_dt0()
3518 mk_sense_buffer(scp, ILLEGAL_REQUEST, 0x10, 1); in resp_write_dt0()
3530 static int resp_write_scat(struct scsi_cmnd *scp, in resp_write_scat() argument
3533 u8 *cmd = scp->cmnd; in resp_write_scat()
3563 mk_sense_invalid_opcode(scp); in resp_write_scat()
3569 sdev_printk(KERN_ERR, scp->device, in resp_write_scat()
3577 sdev_printk(KERN_INFO, scp->device, in resp_write_scat()
3580 mk_sense_buffer(scp, ILLEGAL_REQUEST, INVALID_FIELD_IN_CDB, 0); in resp_write_scat()
3586 sdev_printk(KERN_INFO, scp->device, in resp_write_scat()
3589 mk_sense_buffer(scp, ILLEGAL_REQUEST, INVALID_FIELD_IN_CDB, 0); in resp_write_scat()
3596 sdev_printk(KERN_INFO, scp->device, in resp_write_scat()
3599 res = fetch_to_dev_buffer(scp, lrdp, lbdof_blen); in resp_write_scat()
3613 sdev_printk(KERN_INFO, scp->device, in resp_write_scat()
3618 ret = check_device_access_params(scp, lba, num, true); in resp_write_scat()
3626 sdev_printk(KERN_INFO, scp->device, in resp_write_scat()
3629 mk_sense_buffer(scp, ILLEGAL_REQUEST, WRITE_ERROR_ASC, in resp_write_scat()
3636 if (unlikely(sdebug_dix && scsi_prot_sg_count(scp))) { in resp_write_scat()
3637 int prot_ret = prot_verify_write(scp, lba, num, in resp_write_scat()
3641 mk_sense_buffer(scp, ILLEGAL_REQUEST, 0x10, in resp_write_scat()
3648 ret = do_device_access(sip, scp, sg_off, lba, num, true); in resp_write_scat()
3658 sdev_printk(KERN_INFO, scp->device, in resp_write_scat()
3665 mk_sense_buffer(scp, RECOVERED_ERROR, THRESHOLD_EXCEEDED, 0); in resp_write_scat()
3671 mk_sense_buffer(scp, ABORTED_COMMAND, 0x10, 1); in resp_write_scat()
3676 mk_sense_buffer(scp, ILLEGAL_REQUEST, 0x10, 1); in resp_write_scat()
3693 static int resp_write_same(struct scsi_cmnd *scp, u64 lba, u32 num, in resp_write_same() argument
3696 struct scsi_device *sdp = scp->device; in resp_write_same()
3703 scp->device->hostdata, true); in resp_write_same()
3710 ret = check_device_access_params(scp, lba, num, true); in resp_write_same()
3729 ret = fetch_to_dev_buffer(scp, fs1p, lb_size); in resp_write_same()
3735 sdev_printk(KERN_INFO, scp->device, in resp_write_same()
3756 static int resp_write_same_10(struct scsi_cmnd *scp, in resp_write_same_10() argument
3759 u8 *cmd = scp->cmnd; in resp_write_same_10()
3767 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 1, 3); in resp_write_same_10()
3775 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 7, -1); in resp_write_same_10()
3778 return resp_write_same(scp, lba, num, ei_lba, unmap, false); in resp_write_same_10()
3781 static int resp_write_same_16(struct scsi_cmnd *scp, in resp_write_same_16() argument
3784 u8 *cmd = scp->cmnd; in resp_write_same_16()
3793 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 1, 3); in resp_write_same_16()
3803 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 10, -1); in resp_write_same_16()
3806 return resp_write_same(scp, lba, num, ei_lba, unmap, ndob); in resp_write_same_16()
3812 static int resp_write_buffer(struct scsi_cmnd *scp, in resp_write_buffer() argument
3815 u8 *cmd = scp->cmnd; in resp_write_buffer()
3816 struct scsi_device *sdp = scp->device; in resp_write_buffer()
3858 static int resp_comp_write(struct scsi_cmnd *scp, in resp_comp_write() argument
3861 u8 *cmd = scp->cmnd; in resp_comp_write()
3878 mk_sense_invalid_opcode(scp); in resp_comp_write()
3884 sdev_printk(KERN_ERR, scp->device, "Unprotected WR " in resp_comp_write()
3886 ret = check_device_access_params(scp, lba, num, false); in resp_comp_write()
3892 mk_sense_buffer(scp, ILLEGAL_REQUEST, INSUFF_RES_ASC, in resp_comp_write()
3899 ret = do_dout_fetch(scp, dnum, arr); in resp_comp_write()
3904 sdev_printk(KERN_INFO, scp->device, "%s: compare_write: cdb " in resp_comp_write()
3908 mk_sense_buffer(scp, MISCOMPARE, MISCOMPARE_VERIFY_ASC, 0); in resp_comp_write()
3926 static int resp_unmap(struct scsi_cmnd *scp, struct sdebug_dev_info *devip) in resp_unmap() argument
3937 payload_len = get_unaligned_be16(scp->cmnd + 7); in resp_unmap()
3938 BUG_ON(scsi_bufflen(scp) != payload_len); in resp_unmap()
3942 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 7, -1); in resp_unmap()
3946 buf = kzalloc(scsi_bufflen(scp), GFP_ATOMIC); in resp_unmap()
3948 mk_sense_buffer(scp, ILLEGAL_REQUEST, INSUFF_RES_ASC, in resp_unmap()
3953 scsi_sg_copy_to_buffer(scp, buf, scsi_bufflen(scp)); in resp_unmap()
3966 ret = check_device_access_params(scp, lba, num, true); in resp_unmap()
3984 static int resp_get_lba_status(struct scsi_cmnd *scp, in resp_get_lba_status() argument
3987 u8 *cmd = scp->cmnd; in resp_get_lba_status()
3999 ret = check_device_access_params(scp, lba, 1, false); in resp_get_lba_status()
4023 return fill_from_dev_buffer(scp, arr, SDEBUG_GET_LBA_STATUS_LEN); in resp_get_lba_status()
4026 static int resp_sync_cache(struct scsi_cmnd *scp, in resp_sync_cache() argument
4032 u8 *cmd = scp->cmnd; in resp_sync_cache()
4042 mk_sense_buffer(scp, ILLEGAL_REQUEST, LBA_OUT_OF_RANGE, 0); in resp_sync_cache()
4059 static int resp_pre_fetch(struct scsi_cmnd *scp, in resp_pre_fetch() argument
4066 u8 *cmd = scp->cmnd; in resp_pre_fetch()
4079 mk_sense_buffer(scp, ILLEGAL_REQUEST, LBA_OUT_OF_RANGE, 0); in resp_pre_fetch()
4112 static int resp_report_luns(struct scsi_cmnd *scp, in resp_report_luns() argument
4115 unsigned char *cmd = scp->cmnd; in resp_report_luns()
4136 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 6, -1); in resp_report_luns()
4158 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 2, -1); in resp_report_luns()
4167 scsi_set_resid(scp, scsi_bufflen(scp)); in resp_report_luns()
4191 res = p_fill_from_dev_buffer(scp, arr, n, off_rsp); in resp_report_luns()
4201 res = p_fill_from_dev_buffer(scp, arr, j * sz_lun, off_rsp); in resp_report_luns()
4205 static int resp_verify(struct scsi_cmnd *scp, struct sdebug_dev_info *devip) in resp_verify() argument
4214 u8 *cmd = scp->cmnd; in resp_verify()
4222 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 2, 2); in resp_verify()
4237 mk_sense_invalid_opcode(scp); in resp_verify()
4242 ret = check_device_access_params(scp, lba, a_num, false); in resp_verify()
4248 mk_sense_buffer(scp, ILLEGAL_REQUEST, INSUFF_RES_ASC, in resp_verify()
4255 ret = do_dout_fetch(scp, a_num, arr); in resp_verify()
4260 sdev_printk(KERN_INFO, scp->device, in resp_verify()
4270 mk_sense_buffer(scp, MISCOMPARE, MISCOMPARE_VERIFY_ASC, 0); in resp_verify()
4283 static int resp_report_zones(struct scsi_cmnd *scp, in resp_report_zones() argument
4292 u8 *cmd = scp->cmnd; in resp_report_zones()
4298 mk_sense_invalid_opcode(scp); in resp_report_zones()
4307 mk_sense_buffer(scp, ILLEGAL_REQUEST, LBA_OUT_OF_RANGE, 0); in resp_report_zones()
4317 mk_sense_buffer(scp, ILLEGAL_REQUEST, INSUFF_RES_ASC, in resp_report_zones()
4378 mk_sense_buffer(scp, ILLEGAL_REQUEST, in resp_report_zones()
4407 ret = fill_from_dev_buffer(scp, arr, min_t(int, alloc_len, rep_len)); in resp_report_zones()
4427 static int resp_open_zone(struct scsi_cmnd *scp, struct sdebug_dev_info *devip) in resp_open_zone() argument
4432 u8 *cmd = scp->cmnd; in resp_open_zone()
4439 mk_sense_invalid_opcode(scp); in resp_open_zone()
4449 mk_sense_buffer(scp, DATA_PROTECT, INSUFF_RES_ASC, in resp_open_zone()
4462 mk_sense_buffer(scp, ILLEGAL_REQUEST, LBA_OUT_OF_RANGE, 0); in resp_open_zone()
4469 mk_sense_buffer(scp, ILLEGAL_REQUEST, INVALID_FIELD_IN_CDB, 0); in resp_open_zone()
4474 mk_sense_buffer(scp, ILLEGAL_REQUEST, INVALID_FIELD_IN_CDB, 0); in resp_open_zone()
4484 mk_sense_buffer(scp, DATA_PROTECT, INSUFF_RES_ASC, in resp_open_zone()
4504 static int resp_close_zone(struct scsi_cmnd *scp, in resp_close_zone() argument
4509 u8 *cmd = scp->cmnd; in resp_close_zone()
4516 mk_sense_invalid_opcode(scp); in resp_close_zone()
4530 mk_sense_buffer(scp, ILLEGAL_REQUEST, LBA_OUT_OF_RANGE, 0); in resp_close_zone()
4537 mk_sense_buffer(scp, ILLEGAL_REQUEST, INVALID_FIELD_IN_CDB, 0); in resp_close_zone()
4542 mk_sense_buffer(scp, ILLEGAL_REQUEST, INVALID_FIELD_IN_CDB, 0); in resp_close_zone()
4577 static int resp_finish_zone(struct scsi_cmnd *scp, in resp_finish_zone() argument
4583 u8 *cmd = scp->cmnd; in resp_finish_zone()
4589 mk_sense_invalid_opcode(scp); in resp_finish_zone()
4603 mk_sense_buffer(scp, ILLEGAL_REQUEST, LBA_OUT_OF_RANGE, 0); in resp_finish_zone()
4610 mk_sense_buffer(scp, ILLEGAL_REQUEST, INVALID_FIELD_IN_CDB, 0); in resp_finish_zone()
4615 mk_sense_buffer(scp, ILLEGAL_REQUEST, INVALID_FIELD_IN_CDB, 0); in resp_finish_zone()
4654 static int resp_rwp_zone(struct scsi_cmnd *scp, struct sdebug_dev_info *devip) in resp_rwp_zone() argument
4659 u8 *cmd = scp->cmnd; in resp_rwp_zone()
4665 mk_sense_invalid_opcode(scp); in resp_rwp_zone()
4678 mk_sense_buffer(scp, ILLEGAL_REQUEST, LBA_OUT_OF_RANGE, 0); in resp_rwp_zone()
4685 mk_sense_buffer(scp, ILLEGAL_REQUEST, INVALID_FIELD_IN_CDB, 0); in resp_rwp_zone()
4690 mk_sense_buffer(scp, ILLEGAL_REQUEST, INVALID_FIELD_IN_CDB, 0); in resp_rwp_zone()
4729 struct scsi_cmnd *scp; in sdebug_q_cmd_complete() local
4748 scp = sqcp->a_cmnd; in sdebug_q_cmd_complete()
4749 if (unlikely(scp == NULL)) { in sdebug_q_cmd_complete()
4755 devip = (struct sdebug_dev_info *)scp->device->hostdata; in sdebug_q_cmd_complete()
4791 scp->scsi_done(scp); /* callback to mid level */ in sdebug_q_cmd_complete()
7146 static bool fake_timeout(struct scsi_cmnd *scp) in fake_timeout() argument
7154 scsi_medium_access_command(scp)) in fake_timeout()
7161 static int resp_not_ready(struct scsi_cmnd *scp, struct sdebug_dev_info *devip) in resp_not_ready() argument
7166 struct scsi_device *sdp = scp->device; in resp_not_ready()
7178 mk_sense_buffer(scp, NOT_READY, LOGICAL_UNIT_NOT_READY, 0x1); in resp_not_ready()
7182 if (scp->cmnd[0] == TEST_UNIT_READY) { in resp_not_ready()
7191 scsi_set_sense_information(scp->sense_buffer, SCSI_SENSE_BUFFERSIZE, in resp_not_ready()
7196 mk_sense_buffer(scp, NOT_READY, LOGICAL_UNIT_NOT_READY, 0x2); in resp_not_ready()
7204 struct scsi_cmnd *scp) in scsi_debug_queuecommand() argument
7207 struct scsi_device *sdp = scp->device; in scsi_debug_queuecommand()
7211 u8 *cmd = scp->cmnd; in scsi_debug_queuecommand()
7223 scsi_set_resid(scp, 0); in scsi_debug_queuecommand()
7235 len = scp->cmd_len; in scsi_debug_queuecommand()
7245 blk_mq_unique_tag(scp->request), b); in scsi_debug_queuecommand()
7285 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 1, 4); in scsi_debug_queuecommand()
7287 mk_sense_invalid_fld(scp, SDEB_IN_CDB, 8, 7); in scsi_debug_queuecommand()
7289 mk_sense_invalid_opcode(scp); in scsi_debug_queuecommand()
7295 mk_sense_invalid_opcode(scp); in scsi_debug_queuecommand()
7302 mk_sense_invalid_opcode(scp); in scsi_debug_queuecommand()
7316 mk_sense_invalid_fld(scp, SDEB_IN_CDB, k, j); in scsi_debug_queuecommand()
7324 errsts = make_ua(scp, devip); in scsi_debug_queuecommand()
7328 if (unlikely(((F_M_ACCESS & flags) || scp->cmnd[0] == TEST_UNIT_READY) && in scsi_debug_queuecommand()
7330 errsts = resp_not_ready(scp, devip); in scsi_debug_queuecommand()
7337 if (fake_timeout(scp)) in scsi_debug_queuecommand()
7347 return schedule_resp(scp, devip, errsts, pfp, 0, 0); in scsi_debug_queuecommand()
7360 return schedule_resp(scp, devip, errsts, pfp, jdelay, 0); in scsi_debug_queuecommand()
7362 return schedule_resp(scp, devip, errsts, pfp, sdebug_jdelay, in scsi_debug_queuecommand()
7365 return schedule_resp(scp, devip, check_condition_result, NULL, 0, 0); in scsi_debug_queuecommand()
7367 return schedule_resp(scp, NULL, DID_NO_CONNECT << 16, NULL, 0, 0); in scsi_debug_queuecommand()