Lines Matching refs:lba

1325 			    unsigned long long lba)  in lba2fake_store()  argument
1329 lba = do_div(lba, sdebug_store_sectors); in lba2fake_store()
1334 return lsip->storep + lba * sdebug_sector_size; in lba2fake_store()
3741 unsigned long long lba) in zbc_zone() argument
3743 u32 zno = lba >> devip->zsize_shift; in zbc_zone()
3756 if (lba >= zsp->z_start + zsp->z_size) in zbc_zone()
3758 WARN_ON_ONCE(lba >= zsp->z_start + zsp->z_size); in zbc_zone()
3865 unsigned long long lba, unsigned int num) in zbc_inc_wp() argument
3867 struct sdeb_zone_state *zsp = zbc_zone(devip, lba); in zbc_inc_wp()
3881 if (lba != zsp->z_wp) in zbc_inc_wp()
3884 end = lba + num; in zbc_inc_wp()
3886 n = zend - lba; in zbc_inc_wp()
3898 lba += n; in zbc_inc_wp()
3907 unsigned long long lba, unsigned int num, bool write) in check_zbc_access_params() argument
3911 struct sdeb_zone_state *zsp = zbc_zone(devip, lba); in check_zbc_access_params()
3912 struct sdeb_zone_state *zsp_end = zbc_zone(devip, lba + num - 1); in check_zbc_access_params()
3958 if (lba != zsp->z_wp) { in check_zbc_access_params()
3982 (struct scsi_cmnd *scp, unsigned long long lba, in check_device_access_params() argument
3988 if (lba + num > sdebug_capacity) { in check_device_access_params()
4003 return check_zbc_access_params(scp, lba, num, write); in check_device_access_params()
4240 u32 sg_skip, u64 lba, u32 num, u8 group_number, in do_device_access() argument
4274 block = do_div(lba, sdebug_store_sectors); in do_device_access()
4313 static bool comp_write_worker(struct sdeb_store_info *sip, u64 lba, u32 num, in comp_write_worker() argument
4322 block = do_div(lba, store_blks); in comp_write_worker()
4566 u64 lba; in resp_read_dt0() local
4574 lba = get_unaligned_be64(cmd + 2); in resp_read_dt0()
4580 lba = get_unaligned_be32(cmd + 2); in resp_read_dt0()
4586 lba = (u32)cmd[3] | (u32)cmd[2] << 8 | in resp_read_dt0()
4593 lba = get_unaligned_be32(cmd + 2); in resp_read_dt0()
4599 lba = get_unaligned_be32(cmd + 2); in resp_read_dt0()
4604 lba = get_unaligned_be64(cmd + 12); in resp_read_dt0()
4632 ret = check_device_access_params(scp, lba, num, false); in resp_read_dt0()
4636 (lba <= (sdebug_medium_error_start + sdebug_medium_error_count - 1)) && in resp_read_dt0()
4637 ((lba + num) > sdebug_medium_error_start))) { in resp_read_dt0()
4643 ret = (lba < OPT_MEDIUM_ERR_ADDR) in resp_read_dt0()
4644 ? OPT_MEDIUM_ERR_ADDR : (int)lba; in resp_read_dt0()
4659 switch (prot_verify_read(scp, lba, num, ei_lba)) { in resp_read_dt0()
4685 ret = do_device_access(sip, scp, 0, lba, num, 0, false, false); in resp_read_dt0()
4785 static unsigned long lba_to_map_index(sector_t lba) in lba_to_map_index() argument
4788 lba += sdebug_unmap_granularity - sdebug_unmap_alignment; in lba_to_map_index()
4789 sector_div(lba, sdebug_unmap_granularity); in lba_to_map_index()
4790 return lba; in lba_to_map_index()
4795 sector_t lba = index * sdebug_unmap_granularity; in map_index_to_lba() local
4798 lba -= sdebug_unmap_granularity - sdebug_unmap_alignment; in map_index_to_lba()
4799 return lba; in map_index_to_lba()
4802 static unsigned int map_state(struct sdeb_store_info *sip, sector_t lba, in map_state() argument
4810 index = lba_to_map_index(lba); in map_state()
4819 *num = end - lba; in map_state()
4823 static void map_region(struct sdeb_store_info *sip, sector_t lba, in map_region() argument
4826 sector_t end = lba + len; in map_region()
4828 while (lba < end) { in map_region()
4829 unsigned long index = lba_to_map_index(lba); in map_region()
4834 lba = map_index_to_lba(index + 1); in map_region()
4838 static void unmap_region(struct sdeb_store_info *sip, sector_t lba, in unmap_region() argument
4841 sector_t end = lba + len; in unmap_region()
4844 while (lba < end) { in unmap_region()
4845 unsigned long index = lba_to_map_index(lba); in unmap_region()
4847 if (lba == map_index_to_lba(index) && in unmap_region()
4848 lba + sdebug_unmap_granularity <= end && in unmap_region()
4852 memset(fsp + lba * sdebug_sector_size, in unmap_region()
4858 memset(sip->dif_storep + lba, 0xff, in unmap_region()
4863 lba = map_index_to_lba(index + 1); in unmap_region()
4935 u64 lba; in resp_write_dt0() local
4943 lba = get_unaligned_be64(cmd + 2); in resp_write_dt0()
4950 lba = get_unaligned_be32(cmd + 2); in resp_write_dt0()
4957 lba = (u32)cmd[3] | (u32)cmd[2] << 8 | in resp_write_dt0()
4964 lba = get_unaligned_be32(cmd + 2); in resp_write_dt0()
4971 lba = get_unaligned_be32(cmd + 2); in resp_write_dt0()
4978 lba = get_unaligned_be64(cmd + 12); in resp_write_dt0()
5004 ret = check_device_access_params(scp, lba, num, true); in resp_write_dt0()
5013 switch (prot_verify_write(scp, lba, num, ei_lba)) { in resp_write_dt0()
5039 ret = do_device_access(sip, scp, 0, lba, num, group, true, false); in resp_write_dt0()
5041 map_region(sip, lba, num); in resp_write_dt0()
5045 zbc_inc_wp(devip, lba, num); in resp_write_dt0()
5093 u64 lba; in resp_write_scat() local
5164 lba = get_unaligned_be64(up + 0); in resp_write_scat()
5169 my_name, __func__, k, lba, num, sg_off); in resp_write_scat()
5172 ret = check_device_access_params(scp, lba, num, true); in resp_write_scat()
5191 int prot_ret = prot_verify_write(scp, lba, num, in resp_write_scat()
5206 ret = do_device_access(sip, scp, sg_off, lba, num, group, true, true); in resp_write_scat()
5209 zbc_inc_wp(devip, lba, num); in resp_write_scat()
5211 map_region(sip, lba, num); in resp_write_scat()
5251 static int resp_write_same(struct scsi_cmnd *scp, u64 lba, u32 num, in resp_write_same() argument
5271 ret = check_device_access_params(scp, lba, num, true); in resp_write_same()
5276 unmap_region(sip, lba, num); in resp_write_same()
5279 lbaa = lba; in resp_write_same()
5301 lbaa = lba + i; in resp_write_same()
5306 map_region(sip, lba, num); in resp_write_same()
5309 zbc_inc_wp(devip, lba, num); in resp_write_same()
5322 u32 lba; in resp_write_same_10() local
5334 lba = get_unaligned_be32(cmd + 2); in resp_write_same_10()
5340 return resp_write_same(scp, lba, num, ei_lba, unmap, false); in resp_write_same_10()
5347 u64 lba; in resp_write_same_16() local
5362 lba = get_unaligned_be64(cmd + 2); in resp_write_same_16()
5368 return resp_write_same(scp, lba, num, ei_lba, unmap, ndob); in resp_write_same_16()
5426 u64 lba; in resp_comp_write() local
5433 lba = get_unaligned_be64(cmd + 2); in resp_comp_write()
5447 ret = check_device_access_params(scp, lba, num, false); in resp_comp_write()
5469 if (!comp_write_worker(sip, lba, num, arr, false)) { in resp_comp_write()
5477 map_region(sip, lba, num); in resp_comp_write()
5487 __be64 lba; member
5528 unsigned long long lba = get_unaligned_be64(&desc[i].lba); in resp_unmap() local
5531 ret = check_device_access_params(scp, lba, num, true); in resp_unmap()
5535 unmap_region(sip, lba, num); in resp_unmap()
5553 u64 lba; in resp_get_lba_status() local
5558 lba = get_unaligned_be64(cmd + 2); in resp_get_lba_status()
5564 ret = check_device_access_params(scp, lba, 1, false); in resp_get_lba_status()
5571 mapped = map_state(sip, lba, &num); in resp_get_lba_status()
5576 if (sdebug_capacity - lba <= 0xffffffff) in resp_get_lba_status()
5577 num = sdebug_capacity - lba; in resp_get_lba_status()
5584 put_unaligned_be64(lba, arr + 8); /* LBA */ in resp_get_lba_status()
5640 u64 lba; in resp_sync_cache() local
5645 lba = get_unaligned_be32(cmd + 2); in resp_sync_cache()
5648 lba = get_unaligned_be64(cmd + 2); in resp_sync_cache()
5651 if (lba + num_blocks > sdebug_capacity) { in resp_sync_cache()
5675 u64 lba; in resp_pre_fetch() local
5683 lba = get_unaligned_be32(cmd + 2); in resp_pre_fetch()
5686 lba = get_unaligned_be64(cmd + 2); in resp_pre_fetch()
5689 if (lba + nblks > sdebug_capacity) { in resp_pre_fetch()
5696 block = do_div(lba, sdebug_store_sectors); in resp_pre_fetch()
5824 u64 lba; in resp_verify() local
5840 lba = get_unaligned_be64(cmd + 2); in resp_verify()
5844 lba = get_unaligned_be32(cmd + 2); in resp_verify()
5855 ret = check_device_access_params(scp, lba, a_num, false); in resp_verify()
5882 if (!comp_write_worker(sip, lba, vnum, arr, true)) { in resp_verify()
5903 u64 lba, zs_lba; in resp_report_zones() local
5937 for (lba = zs_lba; lba < sdebug_capacity; in resp_report_zones()
5938 lba = zsp->z_start + zsp->z_size) { in resp_report_zones()
5939 if (WARN_ONCE(zbc_zone(devip, lba) == zsp, "lba = %llu\n", lba)) in resp_report_zones()
5941 zsp = zbc_zone(devip, lba); in resp_report_zones()
6043 u64 lba, lba_tmp; in resp_atomic_write() local
6053 lba = get_unaligned_be64(cmd + 2); in resp_atomic_write()
6057 lba_tmp = lba; in resp_atomic_write()
6088 ret = do_device_access(sip, scp, 0, lba, len, 0, true, true); in resp_atomic_write()