Lines Matching refs:lba
673 static void *fake_store(unsigned long long lba) in fake_store() argument
675 lba = do_div(lba, sdebug_store_sectors); in fake_store()
677 return fake_storep + lba * scsi_debug_sector_size; in fake_store()
2345 unsigned long long lba, unsigned int num) in check_device_access_params() argument
2347 if (lba + num > sdebug_capacity) { in check_device_access_params()
2362 do_device_access(struct scsi_cmnd *scmd, u64 lba, u32 num, bool do_write) in do_device_access() argument
2382 block = do_div(lba, sdebug_store_sectors); in do_device_access()
2405 comp_write_worker(u64 lba, u32 num, const u8 *arr) in comp_write_worker() argument
2412 block = do_div(lba, store_blks); in comp_write_worker()
2548 u64 lba; in resp_read_dt0() local
2558 lba = get_unaligned_be64(cmd + 2); in resp_read_dt0()
2564 lba = get_unaligned_be32(cmd + 2); in resp_read_dt0()
2570 lba = (u32)cmd[3] | (u32)cmd[2] << 8 | in resp_read_dt0()
2577 lba = get_unaligned_be32(cmd + 2); in resp_read_dt0()
2583 lba = get_unaligned_be32(cmd + 2); in resp_read_dt0()
2588 lba = get_unaligned_be64(cmd + 12); in resp_read_dt0()
2614 if (lba + num > sdebug_capacity) { in resp_read_dt0()
2626 (lba <= (OPT_MEDIUM_ERR_ADDR + OPT_MEDIUM_ERR_NUM - 1)) && in resp_read_dt0()
2627 ((lba + num) > OPT_MEDIUM_ERR_ADDR)) { in resp_read_dt0()
2633 ret = (lba < OPT_MEDIUM_ERR_ADDR) in resp_read_dt0()
2634 ? OPT_MEDIUM_ERR_ADDR : (int)lba; in resp_read_dt0()
2645 int prot_ret = prot_verify_read(scp, lba, num, ei_lba); in resp_read_dt0()
2654 ret = do_device_access(scp, lba, num, false); in resp_read_dt0()
2778 static unsigned long lba_to_map_index(sector_t lba) in lba_to_map_index() argument
2781 lba += scsi_debug_unmap_granularity - in lba_to_map_index()
2784 do_div(lba, scsi_debug_unmap_granularity); in lba_to_map_index()
2786 return lba; in lba_to_map_index()
2791 sector_t lba = index * scsi_debug_unmap_granularity; in map_index_to_lba() local
2794 lba -= scsi_debug_unmap_granularity - in map_index_to_lba()
2798 return lba; in map_index_to_lba()
2801 static unsigned int map_state(sector_t lba, unsigned int *num) in map_state() argument
2808 index = lba_to_map_index(lba); in map_state()
2817 *num = end - lba; in map_state()
2822 static void map_region(sector_t lba, unsigned int len) in map_region() argument
2824 sector_t end = lba + len; in map_region()
2826 while (lba < end) { in map_region()
2827 unsigned long index = lba_to_map_index(lba); in map_region()
2832 lba = map_index_to_lba(index + 1); in map_region()
2836 static void unmap_region(sector_t lba, unsigned int len) in unmap_region() argument
2838 sector_t end = lba + len; in unmap_region()
2840 while (lba < end) { in unmap_region()
2841 unsigned long index = lba_to_map_index(lba); in unmap_region()
2843 if (lba == map_index_to_lba(index) && in unmap_region()
2844 lba + scsi_debug_unmap_granularity <= end && in unmap_region()
2849 lba * scsi_debug_sector_size, 0, in unmap_region()
2854 memset(dif_storep + lba, 0xff, in unmap_region()
2859 lba = map_index_to_lba(index + 1); in unmap_region()
2867 u64 lba; in resp_write_dt0() local
2877 lba = get_unaligned_be64(cmd + 2); in resp_write_dt0()
2883 lba = get_unaligned_be32(cmd + 2); in resp_write_dt0()
2889 lba = (u32)cmd[3] | (u32)cmd[2] << 8 | in resp_write_dt0()
2896 lba = get_unaligned_be32(cmd + 2); in resp_write_dt0()
2902 lba = get_unaligned_be32(cmd + 2); in resp_write_dt0()
2907 lba = get_unaligned_be64(cmd + 12); in resp_write_dt0()
2927 if (lba + num > sdebug_capacity) { in resp_write_dt0()
2942 int prot_ret = prot_verify_write(scp, lba, num, ei_lba); in resp_write_dt0()
2951 ret = do_device_access(scp, lba, num, true); in resp_write_dt0()
2953 map_region(lba, num); in resp_write_dt0()
2983 resp_write_same(struct scsi_cmnd *scp, u64 lba, u32 num, u32 ei_lba, in resp_write_same() argument
2990 ret = check_device_access_params(scp, lba, num); in resp_write_same()
2997 unmap_region(lba, num); in resp_write_same()
3003 memset(fake_storep + (lba * scsi_debug_sector_size), 0, in resp_write_same()
3008 (lba * scsi_debug_sector_size), in resp_write_same()
3023 memcpy(fake_storep + ((lba + i) * scsi_debug_sector_size), in resp_write_same()
3024 fake_storep + (lba * scsi_debug_sector_size), in resp_write_same()
3028 map_region(lba, num); in resp_write_same()
3039 u32 lba; in resp_write_same_10() local
3051 lba = get_unaligned_be32(cmd + 2); in resp_write_same_10()
3057 return resp_write_same(scp, lba, num, ei_lba, unmap, false); in resp_write_same_10()
3064 u64 lba; in resp_write_same_16() local
3079 lba = get_unaligned_be64(cmd + 2); in resp_write_same_16()
3085 return resp_write_same(scp, lba, num, ei_lba, unmap, ndob); in resp_write_same_16()
3143 u64 lba; in resp_comp_write() local
3151 lba = get_unaligned_be64(cmd + 2); in resp_comp_write()
3167 if (lba + num > sdebug_capacity) { in resp_comp_write()
3201 if (!comp_write_worker(lba, num, arr)) { in resp_comp_write()
3207 map_region(lba, num); in resp_comp_write()
3215 __be64 lba; member
3258 unsigned long long lba = get_unaligned_be64(&desc[i].lba); in resp_unmap() local
3261 ret = check_device_access_params(scp, lba, num); in resp_unmap()
3265 unmap_region(lba, num); in resp_unmap()
3283 u64 lba; in resp_get_lba_status() local
3288 lba = get_unaligned_be64(cmd + 2); in resp_get_lba_status()
3294 ret = check_device_access_params(scp, lba, 1); in resp_get_lba_status()
3299 mapped = map_state(lba, &num); in resp_get_lba_status()
3304 if (sdebug_capacity - lba <= 0xffffffff) in resp_get_lba_status()
3305 num = sdebug_capacity - lba; in resp_get_lba_status()
3312 put_unaligned_be64(lba, arr + 8); /* LBA */ in resp_get_lba_status()
3378 static int resp_xdwriteread(struct scsi_cmnd *scp, unsigned long long lba, in resp_xdwriteread() argument
3418 u64 lba; in resp_xdwriteread_10() local
3435 lba = get_unaligned_be32(cmd + 2); in resp_xdwriteread_10()
3437 return resp_xdwriteread(scp, lba, num, devip); in resp_xdwriteread_10()