Lines Matching refs:cdb

35 	unsigned char *cdb = cmd->t_task_cdb;  in sbc_emulate_readcapacity()  local
53 if (!(cdb[8] & 1) && !!(cdb[2] | cdb[3] | cdb[4] | cdb[5])) in sbc_emulate_readcapacity()
140 unsigned char *cdb = cmd->t_task_cdb; in sbc_emulate_startstop() local
147 if (!(cdb[1] & 1) || cdb[2] || cdb[3]) in sbc_emulate_startstop()
154 if (cdb[4] >> 4 & 0xf) in sbc_emulate_startstop()
162 if (!(cdb[4] & 1) || (cdb[4] & 2) || (cdb[4] & 4)) in sbc_emulate_startstop()
221 static inline u32 transport_get_sectors_6(unsigned char *cdb) in transport_get_sectors_6() argument
231 return cdb[4] ? : 256; in transport_get_sectors_6()
234 static inline u32 transport_get_sectors_10(unsigned char *cdb) in transport_get_sectors_10() argument
236 return get_unaligned_be16(&cdb[7]); in transport_get_sectors_10()
239 static inline u32 transport_get_sectors_12(unsigned char *cdb) in transport_get_sectors_12() argument
241 return get_unaligned_be32(&cdb[6]); in transport_get_sectors_12()
244 static inline u32 transport_get_sectors_16(unsigned char *cdb) in transport_get_sectors_16() argument
246 return get_unaligned_be32(&cdb[10]); in transport_get_sectors_16()
252 static inline u32 transport_get_sectors_32(unsigned char *cdb) in transport_get_sectors_32() argument
254 return get_unaligned_be32(&cdb[28]); in transport_get_sectors_32()
258 static inline u32 transport_lba_21(unsigned char *cdb) in transport_lba_21() argument
260 return get_unaligned_be24(&cdb[1]) & 0x1fffff; in transport_lba_21()
263 static inline u32 transport_lba_32(unsigned char *cdb) in transport_lba_32() argument
265 return get_unaligned_be32(&cdb[2]); in transport_lba_32()
268 static inline unsigned long long transport_lba_64(unsigned char *cdb) in transport_lba_64() argument
270 return get_unaligned_be64(&cdb[2]); in transport_lba_64()
276 static inline unsigned long long transport_lba_64_ext(unsigned char *cdb) in transport_lba_64_ext() argument
278 return get_unaligned_be64(&cdb[12]); in transport_lba_64_ext()
689 sbc_check_prot(struct se_device *dev, struct se_cmd *cmd, unsigned char *cdb, in sbc_check_prot() argument
692 u8 protect = cdb[1] >> 5; in sbc_check_prot()
740 "PROTECT: 0x%02x\n", cdb[0], protect); in sbc_check_prot()
768 sbc_check_dpofua(struct se_device *dev, struct se_cmd *cmd, unsigned char *cdb) in sbc_check_dpofua() argument
770 if (cdb[1] & 0x10) { in sbc_check_dpofua()
774 " does not advertise support for DPO\n", cdb[0]); in sbc_check_dpofua()
778 if (cdb[1] & 0x8) { in sbc_check_dpofua()
782 cdb[0]); in sbc_check_dpofua()
794 unsigned char *cdb = cmd->t_task_cdb; in sbc_parse_cdb() local
801 switch (cdb[0]) { in sbc_parse_cdb()
803 sectors = transport_get_sectors_6(cdb); in sbc_parse_cdb()
804 cmd->t_task_lba = transport_lba_21(cdb); in sbc_parse_cdb()
809 sectors = transport_get_sectors_10(cdb); in sbc_parse_cdb()
810 cmd->t_task_lba = transport_lba_32(cdb); in sbc_parse_cdb()
812 if (sbc_check_dpofua(dev, cmd, cdb)) in sbc_parse_cdb()
815 ret = sbc_check_prot(dev, cmd, cdb, sectors, false); in sbc_parse_cdb()
823 sectors = transport_get_sectors_12(cdb); in sbc_parse_cdb()
824 cmd->t_task_lba = transport_lba_32(cdb); in sbc_parse_cdb()
826 if (sbc_check_dpofua(dev, cmd, cdb)) in sbc_parse_cdb()
829 ret = sbc_check_prot(dev, cmd, cdb, sectors, false); in sbc_parse_cdb()
837 sectors = transport_get_sectors_16(cdb); in sbc_parse_cdb()
838 cmd->t_task_lba = transport_lba_64(cdb); in sbc_parse_cdb()
840 if (sbc_check_dpofua(dev, cmd, cdb)) in sbc_parse_cdb()
843 ret = sbc_check_prot(dev, cmd, cdb, sectors, false); in sbc_parse_cdb()
851 sectors = transport_get_sectors_6(cdb); in sbc_parse_cdb()
852 cmd->t_task_lba = transport_lba_21(cdb); in sbc_parse_cdb()
858 sectors = transport_get_sectors_10(cdb); in sbc_parse_cdb()
859 cmd->t_task_lba = transport_lba_32(cdb); in sbc_parse_cdb()
861 if (sbc_check_dpofua(dev, cmd, cdb)) in sbc_parse_cdb()
864 ret = sbc_check_prot(dev, cmd, cdb, sectors, true); in sbc_parse_cdb()
872 sectors = transport_get_sectors_12(cdb); in sbc_parse_cdb()
873 cmd->t_task_lba = transport_lba_32(cdb); in sbc_parse_cdb()
875 if (sbc_check_dpofua(dev, cmd, cdb)) in sbc_parse_cdb()
878 ret = sbc_check_prot(dev, cmd, cdb, sectors, true); in sbc_parse_cdb()
887 sectors = transport_get_sectors_16(cdb); in sbc_parse_cdb()
888 cmd->t_task_lba = transport_lba_64(cdb); in sbc_parse_cdb()
890 if (sbc_check_dpofua(dev, cmd, cdb)) in sbc_parse_cdb()
893 ret = sbc_check_prot(dev, cmd, cdb, sectors, true); in sbc_parse_cdb()
904 sectors = transport_get_sectors_10(cdb); in sbc_parse_cdb()
906 if (sbc_check_dpofua(dev, cmd, cdb)) in sbc_parse_cdb()
909 cmd->t_task_lba = transport_lba_32(cdb); in sbc_parse_cdb()
920 u16 service_action = get_unaligned_be16(&cdb[8]); in sbc_parse_cdb()
923 sectors = transport_get_sectors_32(cdb); in sbc_parse_cdb()
925 if (sbc_check_dpofua(dev, cmd, cdb)) in sbc_parse_cdb()
931 cmd->t_task_lba = transport_lba_64_ext(cdb); in sbc_parse_cdb()
942 sectors = transport_get_sectors_32(cdb); in sbc_parse_cdb()
950 cmd->t_task_lba = get_unaligned_be64(&cdb[12]); in sbc_parse_cdb()
952 ret = sbc_setup_write_same(cmd, &cdb[10], ops); in sbc_parse_cdb()
971 sectors = cdb[13]; in sbc_parse_cdb()
980 if (sbc_check_dpofua(dev, cmd, cdb)) in sbc_parse_cdb()
988 cmd->t_task_lba = get_unaligned_be64(&cdb[2]); in sbc_parse_cdb()
1011 size = get_unaligned_be32(&cdb[10]); in sbc_parse_cdb()
1015 if (cdb[0] == SYNCHRONIZE_CACHE) { in sbc_parse_cdb()
1016 sectors = transport_get_sectors_10(cdb); in sbc_parse_cdb()
1017 cmd->t_task_lba = transport_lba_32(cdb); in sbc_parse_cdb()
1019 sectors = transport_get_sectors_16(cdb); in sbc_parse_cdb()
1020 cmd->t_task_lba = transport_lba_64(cdb); in sbc_parse_cdb()
1038 size = get_unaligned_be16(&cdb[7]); in sbc_parse_cdb()
1042 sectors = transport_get_sectors_16(cdb); in sbc_parse_cdb()
1049 cmd->t_task_lba = get_unaligned_be64(&cdb[2]); in sbc_parse_cdb()
1051 ret = sbc_setup_write_same(cmd, &cdb[1], ops); in sbc_parse_cdb()
1056 sectors = transport_get_sectors_10(cdb); in sbc_parse_cdb()
1063 cmd->t_task_lba = get_unaligned_be32(&cdb[2]); in sbc_parse_cdb()
1069 ret = sbc_setup_write_same(cmd, &cdb[1], ops); in sbc_parse_cdb()
1076 if (cdb[0] == VERIFY) { in sbc_parse_cdb()
1077 sectors = transport_get_sectors_10(cdb); in sbc_parse_cdb()
1078 cmd->t_task_lba = transport_lba_32(cdb); in sbc_parse_cdb()
1080 sectors = transport_get_sectors_16(cdb); in sbc_parse_cdb()
1081 cmd->t_task_lba = transport_lba_64(cdb); in sbc_parse_cdb()