Lines Matching refs:cmd

873 static blk_status_t sd_setup_unmap_cmnd(struct scsi_cmnd *cmd)  in sd_setup_unmap_cmnd()  argument
875 struct scsi_device *sdp = cmd->device; in sd_setup_unmap_cmnd()
876 struct request *rq = cmd->request; in sd_setup_unmap_cmnd()
891 cmd->cmd_len = 10; in sd_setup_unmap_cmnd()
892 cmd->cmnd[0] = UNMAP; in sd_setup_unmap_cmnd()
893 cmd->cmnd[8] = 24; in sd_setup_unmap_cmnd()
901 cmd->allowed = sdkp->max_retries; in sd_setup_unmap_cmnd()
902 cmd->transfersize = data_len; in sd_setup_unmap_cmnd()
905 return scsi_alloc_sgtables(cmd); in sd_setup_unmap_cmnd()
908 static blk_status_t sd_setup_write_same16_cmnd(struct scsi_cmnd *cmd, in sd_setup_write_same16_cmnd() argument
911 struct scsi_device *sdp = cmd->device; in sd_setup_write_same16_cmnd()
912 struct request *rq = cmd->request; in sd_setup_write_same16_cmnd()
926 cmd->cmd_len = 16; in sd_setup_write_same16_cmnd()
927 cmd->cmnd[0] = WRITE_SAME_16; in sd_setup_write_same16_cmnd()
929 cmd->cmnd[1] = 0x8; /* UNMAP */ in sd_setup_write_same16_cmnd()
930 put_unaligned_be64(lba, &cmd->cmnd[2]); in sd_setup_write_same16_cmnd()
931 put_unaligned_be32(nr_blocks, &cmd->cmnd[10]); in sd_setup_write_same16_cmnd()
933 cmd->allowed = sdkp->max_retries; in sd_setup_write_same16_cmnd()
934 cmd->transfersize = data_len; in sd_setup_write_same16_cmnd()
937 return scsi_alloc_sgtables(cmd); in sd_setup_write_same16_cmnd()
940 static blk_status_t sd_setup_write_same10_cmnd(struct scsi_cmnd *cmd, in sd_setup_write_same10_cmnd() argument
943 struct scsi_device *sdp = cmd->device; in sd_setup_write_same10_cmnd()
944 struct request *rq = cmd->request; in sd_setup_write_same10_cmnd()
958 cmd->cmd_len = 10; in sd_setup_write_same10_cmnd()
959 cmd->cmnd[0] = WRITE_SAME; in sd_setup_write_same10_cmnd()
961 cmd->cmnd[1] = 0x8; /* UNMAP */ in sd_setup_write_same10_cmnd()
962 put_unaligned_be32(lba, &cmd->cmnd[2]); in sd_setup_write_same10_cmnd()
963 put_unaligned_be16(nr_blocks, &cmd->cmnd[7]); in sd_setup_write_same10_cmnd()
965 cmd->allowed = sdkp->max_retries; in sd_setup_write_same10_cmnd()
966 cmd->transfersize = data_len; in sd_setup_write_same10_cmnd()
969 return scsi_alloc_sgtables(cmd); in sd_setup_write_same10_cmnd()
972 static blk_status_t sd_setup_write_zeroes_cmnd(struct scsi_cmnd *cmd) in sd_setup_write_zeroes_cmnd() argument
974 struct request *rq = cmd->request; in sd_setup_write_zeroes_cmnd()
975 struct scsi_device *sdp = cmd->device; in sd_setup_write_zeroes_cmnd()
983 return sd_setup_write_same16_cmnd(cmd, true); in sd_setup_write_zeroes_cmnd()
985 return sd_setup_write_same10_cmnd(cmd, true); in sd_setup_write_zeroes_cmnd()
995 return sd_setup_write_same16_cmnd(cmd, false); in sd_setup_write_zeroes_cmnd()
997 return sd_setup_write_same10_cmnd(cmd, false); in sd_setup_write_zeroes_cmnd()
1069 static blk_status_t sd_setup_write_same_cmnd(struct scsi_cmnd *cmd) in sd_setup_write_same_cmnd() argument
1071 struct request *rq = cmd->request; in sd_setup_write_same_cmnd()
1072 struct scsi_device *sdp = cmd->device; in sd_setup_write_same_cmnd()
1088 cmd->cmd_len = 16; in sd_setup_write_same_cmnd()
1089 cmd->cmnd[0] = WRITE_SAME_16; in sd_setup_write_same_cmnd()
1090 put_unaligned_be64(lba, &cmd->cmnd[2]); in sd_setup_write_same_cmnd()
1091 put_unaligned_be32(nr_blocks, &cmd->cmnd[10]); in sd_setup_write_same_cmnd()
1093 cmd->cmd_len = 10; in sd_setup_write_same_cmnd()
1094 cmd->cmnd[0] = WRITE_SAME; in sd_setup_write_same_cmnd()
1095 put_unaligned_be32(lba, &cmd->cmnd[2]); in sd_setup_write_same_cmnd()
1096 put_unaligned_be16(nr_blocks, &cmd->cmnd[7]); in sd_setup_write_same_cmnd()
1099 cmd->transfersize = sdp->sector_size; in sd_setup_write_same_cmnd()
1100 cmd->allowed = sdkp->max_retries; in sd_setup_write_same_cmnd()
1113 ret = scsi_alloc_sgtables(cmd); in sd_setup_write_same_cmnd()
1119 static blk_status_t sd_setup_flush_cmnd(struct scsi_cmnd *cmd) in sd_setup_flush_cmnd() argument
1121 struct request *rq = cmd->request; in sd_setup_flush_cmnd()
1125 memset(&cmd->sdb, 0, sizeof(cmd->sdb)); in sd_setup_flush_cmnd()
1127 cmd->cmnd[0] = SYNCHRONIZE_CACHE; in sd_setup_flush_cmnd()
1128 cmd->cmd_len = 10; in sd_setup_flush_cmnd()
1129 cmd->transfersize = 0; in sd_setup_flush_cmnd()
1130 cmd->allowed = sdkp->max_retries; in sd_setup_flush_cmnd()
1136 static blk_status_t sd_setup_rw32_cmnd(struct scsi_cmnd *cmd, bool write, in sd_setup_rw32_cmnd() argument
1140 cmd->cmnd = mempool_alloc(sd_cdb_pool, GFP_ATOMIC); in sd_setup_rw32_cmnd()
1141 if (unlikely(cmd->cmnd == NULL)) in sd_setup_rw32_cmnd()
1144 cmd->cmd_len = SD_EXT_CDB_SIZE; in sd_setup_rw32_cmnd()
1145 memset(cmd->cmnd, 0, cmd->cmd_len); in sd_setup_rw32_cmnd()
1147 cmd->cmnd[0] = VARIABLE_LENGTH_CMD; in sd_setup_rw32_cmnd()
1148 cmd->cmnd[7] = 0x18; /* Additional CDB len */ in sd_setup_rw32_cmnd()
1149 cmd->cmnd[9] = write ? WRITE_32 : READ_32; in sd_setup_rw32_cmnd()
1150 cmd->cmnd[10] = flags; in sd_setup_rw32_cmnd()
1151 put_unaligned_be64(lba, &cmd->cmnd[12]); in sd_setup_rw32_cmnd()
1152 put_unaligned_be32(lba, &cmd->cmnd[20]); /* Expected Indirect LBA */ in sd_setup_rw32_cmnd()
1153 put_unaligned_be32(nr_blocks, &cmd->cmnd[28]); in sd_setup_rw32_cmnd()
1158 static blk_status_t sd_setup_rw16_cmnd(struct scsi_cmnd *cmd, bool write, in sd_setup_rw16_cmnd() argument
1162 cmd->cmd_len = 16; in sd_setup_rw16_cmnd()
1163 cmd->cmnd[0] = write ? WRITE_16 : READ_16; in sd_setup_rw16_cmnd()
1164 cmd->cmnd[1] = flags; in sd_setup_rw16_cmnd()
1165 cmd->cmnd[14] = 0; in sd_setup_rw16_cmnd()
1166 cmd->cmnd[15] = 0; in sd_setup_rw16_cmnd()
1167 put_unaligned_be64(lba, &cmd->cmnd[2]); in sd_setup_rw16_cmnd()
1168 put_unaligned_be32(nr_blocks, &cmd->cmnd[10]); in sd_setup_rw16_cmnd()
1173 static blk_status_t sd_setup_rw10_cmnd(struct scsi_cmnd *cmd, bool write, in sd_setup_rw10_cmnd() argument
1177 cmd->cmd_len = 10; in sd_setup_rw10_cmnd()
1178 cmd->cmnd[0] = write ? WRITE_10 : READ_10; in sd_setup_rw10_cmnd()
1179 cmd->cmnd[1] = flags; in sd_setup_rw10_cmnd()
1180 cmd->cmnd[6] = 0; in sd_setup_rw10_cmnd()
1181 cmd->cmnd[9] = 0; in sd_setup_rw10_cmnd()
1182 put_unaligned_be32(lba, &cmd->cmnd[2]); in sd_setup_rw10_cmnd()
1183 put_unaligned_be16(nr_blocks, &cmd->cmnd[7]); in sd_setup_rw10_cmnd()
1188 static blk_status_t sd_setup_rw6_cmnd(struct scsi_cmnd *cmd, bool write, in sd_setup_rw6_cmnd() argument
1202 scmd_printk(KERN_ERR, cmd, "FUA write on READ/WRITE(6) drive\n"); in sd_setup_rw6_cmnd()
1206 cmd->cmd_len = 6; in sd_setup_rw6_cmnd()
1207 cmd->cmnd[0] = write ? WRITE_6 : READ_6; in sd_setup_rw6_cmnd()
1208 cmd->cmnd[1] = (lba >> 16) & 0x1f; in sd_setup_rw6_cmnd()
1209 cmd->cmnd[2] = (lba >> 8) & 0xff; in sd_setup_rw6_cmnd()
1210 cmd->cmnd[3] = lba & 0xff; in sd_setup_rw6_cmnd()
1211 cmd->cmnd[4] = nr_blocks; in sd_setup_rw6_cmnd()
1212 cmd->cmnd[5] = 0; in sd_setup_rw6_cmnd()
1217 static blk_status_t sd_setup_read_write_cmnd(struct scsi_cmnd *cmd) in sd_setup_read_write_cmnd() argument
1219 struct request *rq = cmd->request; in sd_setup_read_write_cmnd()
1220 struct scsi_device *sdp = cmd->device; in sd_setup_read_write_cmnd()
1232 ret = scsi_alloc_sgtables(cmd); in sd_setup_read_write_cmnd()
1238 scmd_printk(KERN_ERR, cmd, "device offline or changed\n"); in sd_setup_read_write_cmnd()
1243 scmd_printk(KERN_ERR, cmd, "access beyond end of device\n"); in sd_setup_read_write_cmnd()
1248 scmd_printk(KERN_ERR, cmd, "request not aligned to the logical block size\n"); in sd_setup_read_write_cmnd()
1269 ret = sd_zbc_prepare_zone_append(cmd, &lba, nr_blocks); in sd_setup_read_write_cmnd()
1275 dix = scsi_prot_sg_count(cmd); in sd_setup_read_write_cmnd()
1276 dif = scsi_host_dif_capable(cmd->device->host, sdkp->protection_type); in sd_setup_read_write_cmnd()
1279 protect = sd_setup_protect_cmnd(cmd, dix, dif); in sd_setup_read_write_cmnd()
1284 ret = sd_setup_rw32_cmnd(cmd, write, lba, nr_blocks, in sd_setup_read_write_cmnd()
1287 ret = sd_setup_rw16_cmnd(cmd, write, lba, nr_blocks, in sd_setup_read_write_cmnd()
1291 ret = sd_setup_rw10_cmnd(cmd, write, lba, nr_blocks, in sd_setup_read_write_cmnd()
1294 ret = sd_setup_rw6_cmnd(cmd, write, lba, nr_blocks, in sd_setup_read_write_cmnd()
1306 cmd->transfersize = sdp->sector_size; in sd_setup_read_write_cmnd()
1307 cmd->underflow = nr_blocks << 9; in sd_setup_read_write_cmnd()
1308 cmd->allowed = sdkp->max_retries; in sd_setup_read_write_cmnd()
1309 cmd->sdb.length = nr_blocks * sdp->sector_size; in sd_setup_read_write_cmnd()
1312 scmd_printk(KERN_INFO, cmd, in sd_setup_read_write_cmnd()
1317 scmd_printk(KERN_INFO, cmd, in sd_setup_read_write_cmnd()
1327 scsi_free_sgtables(cmd); in sd_setup_read_write_cmnd()
1331 static blk_status_t sd_init_command(struct scsi_cmnd *cmd) in sd_init_command() argument
1333 struct request *rq = cmd->request; in sd_init_command()
1339 return sd_setup_unmap_cmnd(cmd); in sd_init_command()
1341 return sd_setup_write_same16_cmnd(cmd, true); in sd_init_command()
1343 return sd_setup_write_same10_cmnd(cmd, true); in sd_init_command()
1345 return sd_setup_write_same10_cmnd(cmd, false); in sd_init_command()
1350 return sd_setup_write_zeroes_cmnd(cmd); in sd_init_command()
1352 return sd_setup_write_same_cmnd(cmd); in sd_init_command()
1354 return sd_setup_flush_cmnd(cmd); in sd_init_command()
1358 return sd_setup_read_write_cmnd(cmd); in sd_init_command()
1360 return sd_zbc_setup_zone_mgmt_cmnd(cmd, ZO_RESET_WRITE_POINTER, in sd_init_command()
1363 return sd_zbc_setup_zone_mgmt_cmnd(cmd, ZO_RESET_WRITE_POINTER, in sd_init_command()
1366 return sd_zbc_setup_zone_mgmt_cmnd(cmd, ZO_OPEN_ZONE, false); in sd_init_command()
1368 return sd_zbc_setup_zone_mgmt_cmnd(cmd, ZO_CLOSE_ZONE, false); in sd_init_command()
1370 return sd_zbc_setup_zone_mgmt_cmnd(cmd, ZO_FINISH_ZONE, false); in sd_init_command()
1385 if (SCpnt->cmnd != scsi_req(rq)->cmd) { in sd_uninit_command()
1553 unsigned int cmd, void __user *p) in sd_ioctl_common() argument
1561 "cmd=0x%x\n", disk->disk_name, cmd)); in sd_ioctl_common()
1563 error = scsi_verify_blk_ioctl(bdev, cmd); in sd_ioctl_common()
1573 error = scsi_ioctl_block_when_processing_errors(sdp, cmd, in sd_ioctl_common()
1578 if (is_sed_ioctl(cmd)) in sd_ioctl_common()
1579 return sed_ioctl(sdkp->opal_dev, cmd, p); in sd_ioctl_common()
1586 switch (cmd) { in sd_ioctl_common()
1589 error = scsi_ioctl(sdp, cmd, p); in sd_ioctl_common()
1592 error = scsi_cmd_blk_ioctl(bdev, mode, cmd, p); in sd_ioctl_common()
1722 unsigned char cmd[10] = { 0 }; in sd_sync_cache() local
1724 cmd[0] = SYNCHRONIZE_CACHE; in sd_sync_cache()
1729 res = scsi_execute(sdp, cmd, DMA_NONE, NULL, 0, NULL, sshdr, in sd_sync_cache()
1777 unsigned int cmd, unsigned long arg) in sd_ioctl() argument
1782 ret = sd_ioctl_common(bdev, mode, cmd, p); in sd_ioctl()
1786 return scsi_ioctl(scsi_disk(bdev->bd_disk)->device, cmd, p); in sd_ioctl()
1791 unsigned int cmd, unsigned long arg) in sd_compat_ioctl() argument
1796 ret = sd_ioctl_common(bdev, mode, cmd, p); in sd_compat_ioctl()
1800 return scsi_compat_ioctl(scsi_disk(bdev->bd_disk)->device, cmd, p); in sd_compat_ioctl()
1831 u8 cmd[16] = { 0, }; in sd_pr_command() local
1834 cmd[0] = PERSISTENT_RESERVE_OUT; in sd_pr_command()
1835 cmd[1] = sa; in sd_pr_command()
1836 cmd[2] = type; in sd_pr_command()
1837 put_unaligned_be32(sizeof(data), &cmd[5]); in sd_pr_command()
1843 result = scsi_execute_req(sdev, cmd, DMA_TO_DEVICE, &data, sizeof(data), in sd_pr_command()
2159 unsigned char cmd[10]; in sd_spinup_disk() local
2174 cmd[0] = TEST_UNIT_READY; in sd_spinup_disk()
2175 memset((void *) &cmd[1], 0, 9); in sd_spinup_disk()
2177 the_result = scsi_execute_req(sdkp->device, cmd, in sd_spinup_disk()
2228 cmd[0] = START_STOP; in sd_spinup_disk()
2229 cmd[1] = 1; /* Return immediately */ in sd_spinup_disk()
2230 memset((void *) &cmd[2], 0, 8); in sd_spinup_disk()
2231 cmd[4] = 1; /* Start spin cycle */ in sd_spinup_disk()
2233 cmd[4] |= 1 << 4; in sd_spinup_disk()
2234 scsi_execute_req(sdkp->device, cmd, DMA_NONE, in sd_spinup_disk()
2357 unsigned char cmd[16]; in read_capacity_16() local
2370 memset(cmd, 0, 16); in read_capacity_16()
2371 cmd[0] = SERVICE_ACTION_IN_16; in read_capacity_16()
2372 cmd[1] = SAI_READ_CAPACITY_16; in read_capacity_16()
2373 cmd[13] = RC16_LEN; in read_capacity_16()
2376 the_result = scsi_execute_req(sdp, cmd, DMA_FROM_DEVICE, in read_capacity_16()
2448 unsigned char cmd[16]; in read_capacity_10() local
2457 cmd[0] = READ_CAPACITY; in read_capacity_10()
2458 memset(&cmd[1], 0, 9); in read_capacity_10()
2461 the_result = scsi_execute_req(sdp, cmd, DMA_FROM_DEVICE, in read_capacity_10()
3599 unsigned char cmd[6] = { START_STOP }; /* START_VALID */ in sd_start_stop_device() local
3605 cmd[4] |= 1; /* START */ in sd_start_stop_device()
3608 cmd[4] |= start ? 1 << 4 : 3 << 4; /* Active or Standby */ in sd_start_stop_device()
3613 res = scsi_execute(sdp, cmd, DMA_NONE, NULL, 0, NULL, &sshdr, in sd_start_stop_device()