Lines Matching refs:lba
670 static void *fake_store(unsigned long long lba) in fake_store() argument
672 lba = do_div(lba, sdebug_store_sectors); in fake_store()
674 return fake_storep + lba * scsi_debug_sector_size; in fake_store()
2343 unsigned long long lba, unsigned int num) in check_device_access_params() argument
2345 if (lba + num > sdebug_capacity) { in check_device_access_params()
2360 do_device_access(struct scsi_cmnd *scmd, u64 lba, u32 num, bool do_write) in do_device_access() argument
2384 block = do_div(lba, sdebug_store_sectors); in do_device_access()
2407 comp_write_worker(u64 lba, u32 num, const u8 *arr) in comp_write_worker() argument
2414 block = do_div(lba, store_blks); in comp_write_worker()
2551 u64 lba; in resp_read_dt0() local
2561 lba = get_unaligned_be64(cmd + 2); in resp_read_dt0()
2567 lba = get_unaligned_be32(cmd + 2); in resp_read_dt0()
2573 lba = (u32)cmd[3] | (u32)cmd[2] << 8 | in resp_read_dt0()
2580 lba = get_unaligned_be32(cmd + 2); in resp_read_dt0()
2586 lba = get_unaligned_be32(cmd + 2); in resp_read_dt0()
2591 lba = get_unaligned_be64(cmd + 12); in resp_read_dt0()
2617 if (lba + num > sdebug_capacity) { in resp_read_dt0()
2629 (lba <= (OPT_MEDIUM_ERR_ADDR + OPT_MEDIUM_ERR_NUM - 1)) && in resp_read_dt0()
2630 ((lba + num) > OPT_MEDIUM_ERR_ADDR)) { in resp_read_dt0()
2636 ret = (lba < OPT_MEDIUM_ERR_ADDR) in resp_read_dt0()
2637 ? OPT_MEDIUM_ERR_ADDR : (int)lba; in resp_read_dt0()
2648 int prot_ret = prot_verify_read(scp, lba, num, ei_lba); in resp_read_dt0()
2657 ret = do_device_access(scp, lba, num, false); in resp_read_dt0()
2781 static unsigned long lba_to_map_index(sector_t lba) in lba_to_map_index() argument
2784 lba += scsi_debug_unmap_granularity - in lba_to_map_index()
2787 do_div(lba, scsi_debug_unmap_granularity); in lba_to_map_index()
2789 return lba; in lba_to_map_index()
2794 sector_t lba = index * scsi_debug_unmap_granularity; in map_index_to_lba() local
2797 lba -= scsi_debug_unmap_granularity - in map_index_to_lba()
2801 return lba; in map_index_to_lba()
2804 static unsigned int map_state(sector_t lba, unsigned int *num) in map_state() argument
2811 index = lba_to_map_index(lba); in map_state()
2820 *num = end - lba; in map_state()
2825 static void map_region(sector_t lba, unsigned int len) in map_region() argument
2827 sector_t end = lba + len; in map_region()
2829 while (lba < end) { in map_region()
2830 unsigned long index = lba_to_map_index(lba); in map_region()
2835 lba = map_index_to_lba(index + 1); in map_region()
2839 static void unmap_region(sector_t lba, unsigned int len) in unmap_region() argument
2841 sector_t end = lba + len; in unmap_region()
2843 while (lba < end) { in unmap_region()
2844 unsigned long index = lba_to_map_index(lba); in unmap_region()
2846 if (lba == map_index_to_lba(index) && in unmap_region()
2847 lba + scsi_debug_unmap_granularity <= end && in unmap_region()
2852 lba * scsi_debug_sector_size, 0, in unmap_region()
2857 memset(dif_storep + lba, 0xff, in unmap_region()
2862 lba = map_index_to_lba(index + 1); in unmap_region()
2870 u64 lba; in resp_write_dt0() local
2880 lba = get_unaligned_be64(cmd + 2); in resp_write_dt0()
2886 lba = get_unaligned_be32(cmd + 2); in resp_write_dt0()
2892 lba = (u32)cmd[3] | (u32)cmd[2] << 8 | in resp_write_dt0()
2899 lba = get_unaligned_be32(cmd + 2); in resp_write_dt0()
2905 lba = get_unaligned_be32(cmd + 2); in resp_write_dt0()
2910 lba = get_unaligned_be64(cmd + 12); in resp_write_dt0()
2930 if (lba + num > sdebug_capacity) { in resp_write_dt0()
2945 int prot_ret = prot_verify_write(scp, lba, num, ei_lba); in resp_write_dt0()
2954 ret = do_device_access(scp, lba, num, true); in resp_write_dt0()
2956 map_region(lba, num); in resp_write_dt0()
2986 resp_write_same(struct scsi_cmnd *scp, u64 lba, u32 num, u32 ei_lba, in resp_write_same() argument
2993 ret = check_device_access_params(scp, lba, num); in resp_write_same()
3000 unmap_region(lba, num); in resp_write_same()
3006 memset(fake_storep + (lba * scsi_debug_sector_size), 0, in resp_write_same()
3011 (lba * scsi_debug_sector_size), in resp_write_same()
3026 memcpy(fake_storep + ((lba + i) * scsi_debug_sector_size), in resp_write_same()
3027 fake_storep + (lba * scsi_debug_sector_size), in resp_write_same()
3031 map_region(lba, num); in resp_write_same()
3042 u32 lba; in resp_write_same_10() local
3054 lba = get_unaligned_be32(cmd + 2); in resp_write_same_10()
3060 return resp_write_same(scp, lba, num, ei_lba, unmap, false); in resp_write_same_10()
3067 u64 lba; in resp_write_same_16() local
3082 lba = get_unaligned_be64(cmd + 2); in resp_write_same_16()
3088 return resp_write_same(scp, lba, num, ei_lba, unmap, ndob); in resp_write_same_16()
3146 u64 lba; in resp_comp_write() local
3154 lba = get_unaligned_be64(cmd + 2); in resp_comp_write()
3170 if (lba + num > sdebug_capacity) { in resp_comp_write()
3204 if (!comp_write_worker(lba, num, arr)) { in resp_comp_write()
3210 map_region(lba, num); in resp_comp_write()
3218 __be64 lba; member
3261 unsigned long long lba = get_unaligned_be64(&desc[i].lba); in resp_unmap() local
3264 ret = check_device_access_params(scp, lba, num); in resp_unmap()
3268 unmap_region(lba, num); in resp_unmap()
3286 u64 lba; in resp_get_lba_status() local
3291 lba = get_unaligned_be64(cmd + 2); in resp_get_lba_status()
3297 ret = check_device_access_params(scp, lba, 1); in resp_get_lba_status()
3302 mapped = map_state(lba, &num); in resp_get_lba_status()
3307 if (sdebug_capacity - lba <= 0xffffffff) in resp_get_lba_status()
3308 num = sdebug_capacity - lba; in resp_get_lba_status()
3315 put_unaligned_be64(lba, arr + 8); /* LBA */ in resp_get_lba_status()
3381 static int resp_xdwriteread(struct scsi_cmnd *scp, unsigned long long lba, in resp_xdwriteread() argument
3421 u64 lba; in resp_xdwriteread_10() local
3438 lba = get_unaligned_be32(cmd + 2); in resp_xdwriteread_10()
3440 return resp_xdwriteread(scp, lba, num, devip); in resp_xdwriteread_10()