Lines Matching refs:lba

872 			    unsigned long long lba)
876 lba = do_div(lba, sdebug_store_sectors);
881 return lsip->storep + lba * sdebug_sector_size;
2677 unsigned long long lba)
2679 return &devip->zstate[lba >> devip->zsize_shift];
2775 unsigned long long lba, unsigned int num)
2777 struct sdeb_zone_state *zsp = zbc_zone(devip, lba);
2791 if (lba != zsp->z_wp)
2794 end = lba + num;
2796 n = zend - lba;
2808 lba += n;
2817 unsigned long long lba, unsigned int num, bool write)
2821 struct sdeb_zone_state *zsp = zbc_zone(devip, lba);
2822 struct sdeb_zone_state *zsp_end = zbc_zone(devip, lba + num - 1);
2865 if (lba != zsp->z_wp) {
2889 (struct scsi_cmnd *scp, unsigned long long lba,
2895 if (lba + num > sdebug_capacity) {
2910 return check_zbc_access_params(scp, lba, num, write);
2933 u32 sg_skip, u64 lba, u32 num, bool do_write)
2954 block = do_div(lba, sdebug_store_sectors);
2987 /* If sip->storep+lba compares equal to arr(num), then copy top half of
2988 * arr into sip->storep+lba and return true. If comparison fails then
2990 static bool comp_write_worker(struct sdeb_store_info *sip, u64 lba, u32 num,
2999 block = do_div(lba, store_blks);
3143 u64 lba;
3151 lba = get_unaligned_be64(cmd + 2);
3157 lba = get_unaligned_be32(cmd + 2);
3163 lba = (u32)cmd[3] | (u32)cmd[2] << 8 |
3170 lba = get_unaligned_be32(cmd + 2);
3176 lba = get_unaligned_be32(cmd + 2);
3181 lba = get_unaligned_be64(cmd + 12);
3205 ret = check_device_access_params(scp, lba, num, false);
3209 (lba <= (sdebug_medium_error_start + sdebug_medium_error_count - 1)) &&
3210 ((lba + num) > sdebug_medium_error_start))) {
3216 ret = (lba < OPT_MEDIUM_ERR_ADDR)
3217 ? OPT_MEDIUM_ERR_ADDR : (int)lba;
3228 int prot_ret = prot_verify_read(scp, lba, num, ei_lba);
3237 ret = do_device_access(sip, scp, 0, lba, num, false);
3358 static unsigned long lba_to_map_index(sector_t lba)
3361 lba += sdebug_unmap_granularity - sdebug_unmap_alignment;
3362 sector_div(lba, sdebug_unmap_granularity);
3363 return lba;
3368 sector_t lba = index * sdebug_unmap_granularity;
3371 lba -= sdebug_unmap_granularity - sdebug_unmap_alignment;
3372 return lba;
3375 static unsigned int map_state(struct sdeb_store_info *sip, sector_t lba,
3383 index = lba_to_map_index(lba);
3392 *num = end - lba;
3396 static void map_region(struct sdeb_store_info *sip, sector_t lba,
3399 sector_t end = lba + len;
3401 while (lba < end) {
3402 unsigned long index = lba_to_map_index(lba);
3407 lba = map_index_to_lba(index + 1);
3411 static void unmap_region(struct sdeb_store_info *sip, sector_t lba,
3414 sector_t end = lba + len;
3417 while (lba < end) {
3418 unsigned long index = lba_to_map_index(lba);
3420 if (lba == map_index_to_lba(index) &&
3421 lba + sdebug_unmap_granularity <= end &&
3425 memset(fsp + lba * sdebug_sector_size,
3431 memset(sip->dif_storep + lba, 0xff,
3436 lba = map_index_to_lba(index + 1);
3446 u64 lba;
3454 lba = get_unaligned_be64(cmd + 2);
3460 lba = get_unaligned_be32(cmd + 2);
3466 lba = (u32)cmd[3] | (u32)cmd[2] << 8 |
3473 lba = get_unaligned_be32(cmd + 2);
3479 lba = get_unaligned_be32(cmd + 2);
3484 lba = get_unaligned_be64(cmd + 12);
3504 ret = check_device_access_params(scp, lba, num, true);
3512 int prot_ret = prot_verify_write(scp, lba, num, ei_lba);
3521 ret = do_device_access(sip, scp, 0, lba, num, true);
3523 map_region(sip, lba, num);
3526 zbc_inc_wp(devip, lba, num);
3573 u64 lba;
3640 lba = get_unaligned_be64(up + 0);
3645 my_name, __func__, k, lba, num, sg_off);
3648 ret = check_device_access_params(scp, lba, num, true);
3667 int prot_ret = prot_verify_write(scp, lba, num,
3678 ret = do_device_access(sip, scp, sg_off, lba, num, true);
3681 zbc_inc_wp(devip, lba, num);
3683 map_region(sip, lba, num);
3723 static int resp_write_same(struct scsi_cmnd *scp, u64 lba, u32 num,
3740 ret = check_device_access_params(scp, lba, num, true);
3747 unmap_region(sip, lba, num);
3750 lbaa = lba;
3771 lbaa = lba + i;
3776 map_region(sip, lba, num);
3779 zbc_inc_wp(devip, lba, num);
3790 u32 lba;
3802 lba = get_unaligned_be32(cmd + 2);
3808 return resp_write_same(scp, lba, num, ei_lba, unmap, false);
3815 u64 lba;
3830 lba = get_unaligned_be64(cmd + 2);
3836 return resp_write_same(scp, lba, num, ei_lba, unmap, ndob);
3895 u64 lba;
3902 lba = get_unaligned_be64(cmd + 2);
3916 ret = check_device_access_params(scp, lba, num, false);
3937 if (!comp_write_worker(sip, lba, num, arr, false)) {
3943 map_region(sip, lba, num);
3951 __be64 lba;
3993 unsigned long long lba = get_unaligned_be64(&desc[i].lba);
3996 ret = check_device_access_params(scp, lba, num, true);
4000 unmap_region(sip, lba, num);
4018 u64 lba;
4023 lba = get_unaligned_be64(cmd + 2);
4029 ret = check_device_access_params(scp, lba, 1, false);
4036 mapped = map_state(sip, lba, &num);
4041 if (sdebug_capacity - lba <= 0xffffffff)
4042 num = sdebug_capacity - lba;
4049 put_unaligned_be64(lba, arr + 8); /* LBA */
4060 u64 lba;
4065 lba = get_unaligned_be32(cmd + 2);
4068 lba = get_unaligned_be64(cmd + 2);
4071 if (lba + num_blocks > sdebug_capacity) {
4093 u64 lba;
4102 lba = get_unaligned_be32(cmd + 2);
4105 lba = get_unaligned_be64(cmd + 2);
4108 if (lba + nblks > sdebug_capacity) {
4115 block = do_div(lba, sdebug_store_sectors);
4242 u64 lba;
4259 lba = get_unaligned_be64(cmd + 2);
4263 lba = get_unaligned_be32(cmd + 2);
4274 ret = check_device_access_params(scp, lba, a_num, false);
4301 if (!comp_write_worker(sip, lba, vnum, arr, true)) {
4322 u64 lba, zs_lba;
4360 lba = zs_lba + devip->zsize * i;
4361 if (lba > sdebug_capacity)
4363 zsp = zbc_zone(devip, lba);
5703 MODULE_PARM_DESC(lowest_aligned, "lowest aligned lba (def=0)");
5728 MODULE_PARM_DESC(unmap_alignment, "lowest aligned thin provisioning lba (def=0)");