Lines Matching defs:cdb
35 unsigned char *cdb = cmd->t_task_cdb;
53 if (!(cdb[8] & 1) && !!(cdb[2] | cdb[3] | cdb[4] | cdb[5]))
140 unsigned char *cdb = cmd->t_task_cdb;
147 if (!(cdb[1] & 1) || cdb[2] || cdb[3])
154 if (cdb[4] >> 4 & 0xf)
162 if (!(cdb[4] & 1) || (cdb[4] & 2) || (cdb[4] & 4))
221 static inline u32 transport_get_sectors_6(unsigned char *cdb)
231 return cdb[4] ? : 256;
234 static inline u32 transport_get_sectors_10(unsigned char *cdb)
236 return get_unaligned_be16(&cdb[7]);
239 static inline u32 transport_get_sectors_12(unsigned char *cdb)
241 return get_unaligned_be32(&cdb[6]);
244 static inline u32 transport_get_sectors_16(unsigned char *cdb)
246 return get_unaligned_be32(&cdb[10]);
252 static inline u32 transport_get_sectors_32(unsigned char *cdb)
254 return get_unaligned_be32(&cdb[28]);
258 static inline u32 transport_lba_21(unsigned char *cdb)
260 return get_unaligned_be24(&cdb[1]) & 0x1fffff;
263 static inline u32 transport_lba_32(unsigned char *cdb)
265 return get_unaligned_be32(&cdb[2]);
268 static inline unsigned long long transport_lba_64(unsigned char *cdb)
270 return get_unaligned_be64(&cdb[2]);
745 sbc_check_dpofua(struct se_device *dev, struct se_cmd *cmd, unsigned char *cdb)
747 if (cdb[1] & 0x10) {
751 " does not advertise support for DPO\n", cdb[0]);
755 if (cdb[1] & 0x8) {
759 cdb[0]);
771 unsigned char *cdb = cmd->t_task_cdb;
778 switch (cdb[0]) {
780 sectors = transport_get_sectors_6(cdb);
781 cmd->t_task_lba = transport_lba_21(cdb);
786 sectors = transport_get_sectors_10(cdb);
787 cmd->t_task_lba = transport_lba_32(cdb);
789 if (sbc_check_dpofua(dev, cmd, cdb))
792 ret = sbc_check_prot(dev, cmd, cdb[1] >> 5, sectors, false);
800 sectors = transport_get_sectors_12(cdb);
801 cmd->t_task_lba = transport_lba_32(cdb);
803 if (sbc_check_dpofua(dev, cmd, cdb))
806 ret = sbc_check_prot(dev, cmd, cdb[1] >> 5, sectors, false);
814 sectors = transport_get_sectors_16(cdb);
815 cmd->t_task_lba = transport_lba_64(cdb);
817 if (sbc_check_dpofua(dev, cmd, cdb))
820 ret = sbc_check_prot(dev, cmd, cdb[1] >> 5, sectors, false);
828 sectors = transport_get_sectors_6(cdb);
829 cmd->t_task_lba = transport_lba_21(cdb);
835 sectors = transport_get_sectors_10(cdb);
836 cmd->t_task_lba = transport_lba_32(cdb);
838 if (sbc_check_dpofua(dev, cmd, cdb))
841 ret = sbc_check_prot(dev, cmd, cdb[1] >> 5, sectors, true);
849 sectors = transport_get_sectors_12(cdb);
850 cmd->t_task_lba = transport_lba_32(cdb);
852 if (sbc_check_dpofua(dev, cmd, cdb))
855 ret = sbc_check_prot(dev, cmd, cdb[1] >> 5, sectors, true);
864 sectors = transport_get_sectors_16(cdb);
865 cmd->t_task_lba = transport_lba_64(cdb);
867 if (sbc_check_dpofua(dev, cmd, cdb))
870 ret = sbc_check_prot(dev, cmd, cdb[1] >> 5, sectors, true);
879 u16 service_action = get_unaligned_be16(&cdb[8]);
882 sectors = transport_get_sectors_32(cdb);
890 cmd->t_task_lba = get_unaligned_be64(&cdb[12]);
892 ret = sbc_setup_write_same(cmd, cdb[10], ops);
911 sectors = cdb[13];
920 if (sbc_check_dpofua(dev, cmd, cdb))
928 cmd->t_task_lba = get_unaligned_be64(&cdb[2]);
951 size = get_unaligned_be32(&cdb[10]);
955 if (cdb[0] == SYNCHRONIZE_CACHE) {
956 sectors = transport_get_sectors_10(cdb);
957 cmd->t_task_lba = transport_lba_32(cdb);
959 sectors = transport_get_sectors_16(cdb);
960 cmd->t_task_lba = transport_lba_64(cdb);
978 size = get_unaligned_be16(&cdb[7]);
982 sectors = transport_get_sectors_16(cdb);
989 cmd->t_task_lba = get_unaligned_be64(&cdb[2]);
991 ret = sbc_setup_write_same(cmd, cdb[1], ops);
996 sectors = transport_get_sectors_10(cdb);
1003 cmd->t_task_lba = get_unaligned_be32(&cdb[2]);
1009 ret = sbc_setup_write_same(cmd, cdb[1], ops);
1016 if (cdb[0] == VERIFY) {
1017 sectors = transport_get_sectors_10(cdb);
1018 cmd->t_task_lba = transport_lba_32(cdb);
1020 sectors = transport_get_sectors_16(cdb);
1021 cmd->t_task_lba = transport_lba_64(cdb);