Lines Matching refs:cdb

46 	unsigned char *cdb = cmd->t_task_cdb;  in sbc_emulate_readcapacity()  local
64 if (!(cdb[8] & 1) && !!(cdb[2] | cdb[3] | cdb[4] | cdb[5])) in sbc_emulate_readcapacity()
191 static inline u32 transport_get_sectors_6(unsigned char *cdb) in transport_get_sectors_6() argument
201 return cdb[4] ? : 256; in transport_get_sectors_6()
204 static inline u32 transport_get_sectors_10(unsigned char *cdb) in transport_get_sectors_10() argument
206 return (u32)(cdb[7] << 8) + cdb[8]; in transport_get_sectors_10()
209 static inline u32 transport_get_sectors_12(unsigned char *cdb) in transport_get_sectors_12() argument
211 return (u32)(cdb[6] << 24) + (cdb[7] << 16) + (cdb[8] << 8) + cdb[9]; in transport_get_sectors_12()
214 static inline u32 transport_get_sectors_16(unsigned char *cdb) in transport_get_sectors_16() argument
216 return (u32)(cdb[10] << 24) + (cdb[11] << 16) + in transport_get_sectors_16()
217 (cdb[12] << 8) + cdb[13]; in transport_get_sectors_16()
223 static inline u32 transport_get_sectors_32(unsigned char *cdb) in transport_get_sectors_32() argument
225 return (u32)(cdb[28] << 24) + (cdb[29] << 16) + in transport_get_sectors_32()
226 (cdb[30] << 8) + cdb[31]; in transport_get_sectors_32()
230 static inline u32 transport_lba_21(unsigned char *cdb) in transport_lba_21() argument
232 return ((cdb[1] & 0x1f) << 16) | (cdb[2] << 8) | cdb[3]; in transport_lba_21()
235 static inline u32 transport_lba_32(unsigned char *cdb) in transport_lba_32() argument
237 return (cdb[2] << 24) | (cdb[3] << 16) | (cdb[4] << 8) | cdb[5]; in transport_lba_32()
240 static inline unsigned long long transport_lba_64(unsigned char *cdb) in transport_lba_64() argument
244 __v1 = (cdb[2] << 24) | (cdb[3] << 16) | (cdb[4] << 8) | cdb[5]; in transport_lba_64()
245 __v2 = (cdb[6] << 24) | (cdb[7] << 16) | (cdb[8] << 8) | cdb[9]; in transport_lba_64()
253 static inline unsigned long long transport_lba_64_ext(unsigned char *cdb) in transport_lba_64_ext() argument
257 __v1 = (cdb[12] << 24) | (cdb[13] << 16) | (cdb[14] << 8) | cdb[15]; in transport_lba_64_ext()
258 __v2 = (cdb[16] << 24) | (cdb[17] << 16) | (cdb[18] << 8) | cdb[19]; in transport_lba_64_ext()
664 sbc_check_prot(struct se_device *dev, struct se_cmd *cmd, unsigned char *cdb, in sbc_check_prot() argument
667 u8 protect = cdb[1] >> 5; in sbc_check_prot()
715 "PROTECT: 0x%02x\n", cdb[0], protect); in sbc_check_prot()
743 sbc_check_dpofua(struct se_device *dev, struct se_cmd *cmd, unsigned char *cdb) in sbc_check_dpofua() argument
745 if (cdb[1] & 0x10) { in sbc_check_dpofua()
748 " does not advertise support for DPO\n", cdb[0]); in sbc_check_dpofua()
752 if (cdb[1] & 0x8) { in sbc_check_dpofua()
756 cdb[0]); in sbc_check_dpofua()
768 unsigned char *cdb = cmd->t_task_cdb; in sbc_parse_cdb() local
773 switch (cdb[0]) { in sbc_parse_cdb()
775 sectors = transport_get_sectors_6(cdb); in sbc_parse_cdb()
776 cmd->t_task_lba = transport_lba_21(cdb); in sbc_parse_cdb()
782 sectors = transport_get_sectors_10(cdb); 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()
797 sectors = transport_get_sectors_12(cdb); 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()
812 sectors = transport_get_sectors_16(cdb); 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()
827 sectors = transport_get_sectors_6(cdb); in sbc_parse_cdb()
828 cmd->t_task_lba = transport_lba_21(cdb); in sbc_parse_cdb()
835 sectors = transport_get_sectors_10(cdb); 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()
850 sectors = transport_get_sectors_12(cdb); 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()
865 sectors = transport_get_sectors_16(cdb); 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()
883 sectors = transport_get_sectors_10(cdb); 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()
900 u16 service_action = get_unaligned_be16(&cdb[8]); in sbc_parse_cdb()
903 sectors = transport_get_sectors_32(cdb); 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()
923 sectors = transport_get_sectors_32(cdb); 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()
945 sectors = cdb[13]; in sbc_parse_cdb()
959 cmd->t_task_lba = get_unaligned_be64(&cdb[2]); in sbc_parse_cdb()
983 size = (cdb[10] << 24) | (cdb[11] << 16) | in sbc_parse_cdb()
984 (cdb[12] << 8) | cdb[13]; in sbc_parse_cdb()
988 if (cdb[0] == SYNCHRONIZE_CACHE) { in sbc_parse_cdb()
989 sectors = transport_get_sectors_10(cdb); in sbc_parse_cdb()
990 cmd->t_task_lba = transport_lba_32(cdb); in sbc_parse_cdb()
992 sectors = transport_get_sectors_16(cdb); in sbc_parse_cdb()
993 cmd->t_task_lba = transport_lba_64(cdb); in sbc_parse_cdb()
1011 size = get_unaligned_be16(&cdb[7]); in sbc_parse_cdb()
1015 sectors = transport_get_sectors_16(cdb); 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()
1029 sectors = transport_get_sectors_10(cdb); 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()
1048 sectors = transport_get_sectors_10(cdb); in sbc_parse_cdb()
1049 cmd->t_task_lba = transport_lba_32(cdb); in sbc_parse_cdb()