Lines Matching refs:lba

730 static void *lba2fake_store(unsigned long long lba)  in lba2fake_store()  argument
732 lba = do_div(lba, sdebug_store_sectors); in lba2fake_store()
734 return fake_storep + lba * sdebug_sector_size; in lba2fake_store()
2459 unsigned long long lba, unsigned int num, bool write) in check_device_access_params() argument
2461 if (lba + num > sdebug_capacity) { in check_device_access_params()
2479 static int do_device_access(struct scsi_cmnd *scmd, u32 sg_skip, u64 lba, in do_device_access() argument
2499 block = do_div(lba, sdebug_store_sectors); in do_device_access()
2522 static bool comp_write_worker(u64 lba, u32 num, const u8 *arr) in comp_write_worker() argument
2529 block = do_div(lba, store_blks); in comp_write_worker()
2665 u64 lba; in resp_read_dt0() local
2675 lba = get_unaligned_be64(cmd + 2); in resp_read_dt0()
2681 lba = get_unaligned_be32(cmd + 2); in resp_read_dt0()
2687 lba = (u32)cmd[3] | (u32)cmd[2] << 8 | in resp_read_dt0()
2694 lba = get_unaligned_be32(cmd + 2); in resp_read_dt0()
2700 lba = get_unaligned_be32(cmd + 2); in resp_read_dt0()
2705 lba = get_unaligned_be64(cmd + 12); in resp_read_dt0()
2733 ret = check_device_access_params(scp, lba, num, false); in resp_read_dt0()
2737 (lba <= (sdebug_medium_error_start + sdebug_medium_error_count - 1)) && in resp_read_dt0()
2738 ((lba + num) > sdebug_medium_error_start))) { in resp_read_dt0()
2744 ret = (lba < OPT_MEDIUM_ERR_ADDR) in resp_read_dt0()
2745 ? OPT_MEDIUM_ERR_ADDR : (int)lba; in resp_read_dt0()
2756 int prot_ret = prot_verify_read(scp, lba, num, ei_lba); in resp_read_dt0()
2765 ret = do_device_access(scp, 0, lba, num, false); in resp_read_dt0()
2887 static unsigned long lba_to_map_index(sector_t lba) in lba_to_map_index() argument
2890 lba += sdebug_unmap_granularity - sdebug_unmap_alignment; in lba_to_map_index()
2891 sector_div(lba, sdebug_unmap_granularity); in lba_to_map_index()
2892 return lba; in lba_to_map_index()
2897 sector_t lba = index * sdebug_unmap_granularity; in map_index_to_lba() local
2900 lba -= sdebug_unmap_granularity - sdebug_unmap_alignment; in map_index_to_lba()
2901 return lba; in map_index_to_lba()
2904 static unsigned int map_state(sector_t lba, unsigned int *num) in map_state() argument
2911 index = lba_to_map_index(lba); in map_state()
2920 *num = end - lba; in map_state()
2924 static void map_region(sector_t lba, unsigned int len) in map_region() argument
2926 sector_t end = lba + len; in map_region()
2928 while (lba < end) { in map_region()
2929 unsigned long index = lba_to_map_index(lba); in map_region()
2934 lba = map_index_to_lba(index + 1); in map_region()
2938 static void unmap_region(sector_t lba, unsigned int len) in unmap_region() argument
2940 sector_t end = lba + len; in unmap_region()
2942 while (lba < end) { in unmap_region()
2943 unsigned long index = lba_to_map_index(lba); in unmap_region()
2945 if (lba == map_index_to_lba(index) && in unmap_region()
2946 lba + sdebug_unmap_granularity <= end && in unmap_region()
2951 lba * sdebug_sector_size, in unmap_region()
2957 memset(dif_storep + lba, 0xff, in unmap_region()
2962 lba = map_index_to_lba(index + 1); in unmap_region()
2969 u64 lba; in resp_write_dt0() local
2979 lba = get_unaligned_be64(cmd + 2); in resp_write_dt0()
2985 lba = get_unaligned_be32(cmd + 2); in resp_write_dt0()
2991 lba = (u32)cmd[3] | (u32)cmd[2] << 8 | in resp_write_dt0()
2998 lba = get_unaligned_be32(cmd + 2); in resp_write_dt0()
3004 lba = get_unaligned_be32(cmd + 2); in resp_write_dt0()
3009 lba = get_unaligned_be64(cmd + 12); in resp_write_dt0()
3027 ret = check_device_access_params(scp, lba, num, true); in resp_write_dt0()
3034 int prot_ret = prot_verify_write(scp, lba, num, ei_lba); in resp_write_dt0()
3043 ret = do_device_access(scp, 0, lba, num, true); in resp_write_dt0()
3045 map_region(lba, num); in resp_write_dt0()
3092 u64 lba; in resp_write_scat() local
3160 lba = get_unaligned_be64(up + 0); in resp_write_scat()
3165 my_name, __func__, k, lba, num, sg_off); in resp_write_scat()
3168 ret = check_device_access_params(scp, lba, num, true); in resp_write_scat()
3187 int prot_ret = prot_verify_write(scp, lba, num, in resp_write_scat()
3198 ret = do_device_access(scp, sg_off, lba, num, true); in resp_write_scat()
3200 map_region(lba, num); in resp_write_scat()
3244 static int resp_write_same(struct scsi_cmnd *scp, u64 lba, u32 num, in resp_write_same() argument
3254 ret = check_device_access_params(scp, lba, num, true); in resp_write_same()
3261 unmap_region(lba, num); in resp_write_same()
3264 lbaa = lba; in resp_write_same()
3284 lbaa = lba + i; in resp_write_same()
3289 map_region(lba, num); in resp_write_same()
3300 u32 lba; in resp_write_same_10() local
3312 lba = get_unaligned_be32(cmd + 2); in resp_write_same_10()
3318 return resp_write_same(scp, lba, num, ei_lba, unmap, false); in resp_write_same_10()
3325 u64 lba; in resp_write_same_16() local
3340 lba = get_unaligned_be64(cmd + 2); in resp_write_same_16()
3346 return resp_write_same(scp, lba, num, ei_lba, unmap, ndob); in resp_write_same_16()
3404 u64 lba; in resp_comp_write() local
3412 lba = get_unaligned_be64(cmd + 2); in resp_comp_write()
3426 ret = check_device_access_params(scp, lba, num, false); in resp_comp_write()
3452 if (!comp_write_worker(lba, num, arr)) { in resp_comp_write()
3458 map_region(lba, num); in resp_comp_write()
3466 __be64 lba; member
3508 unsigned long long lba = get_unaligned_be64(&desc[i].lba); in resp_unmap() local
3511 ret = check_device_access_params(scp, lba, num, true); in resp_unmap()
3515 unmap_region(lba, num); in resp_unmap()
3533 u64 lba; in resp_get_lba_status() local
3538 lba = get_unaligned_be64(cmd + 2); in resp_get_lba_status()
3544 ret = check_device_access_params(scp, lba, 1, false); in resp_get_lba_status()
3549 mapped = map_state(lba, &num); in resp_get_lba_status()
3554 if (sdebug_capacity - lba <= 0xffffffff) in resp_get_lba_status()
3555 num = sdebug_capacity - lba; in resp_get_lba_status()
3562 put_unaligned_be64(lba, arr + 8); /* LBA */ in resp_get_lba_status()
3573 u64 lba; in resp_sync_cache() local
3578 lba = get_unaligned_be32(cmd + 2); in resp_sync_cache()
3581 lba = get_unaligned_be64(cmd + 2); in resp_sync_cache()
3584 if (lba + num_blocks > sdebug_capacity) { in resp_sync_cache()