Lines Matching refs:sip

507 static void sdebug_erase_store(int idx, struct sdeb_store_info *sip);
883 static void *lba2fake_store(struct sdeb_store_info *sip, in lba2fake_store() argument
886 struct sdeb_store_info *lsip = sip; in lba2fake_store()
889 if (!sip || !sip->storep) { in lba2fake_store()
896 static struct t10_pi_tuple *dif_store(struct sdeb_store_info *sip, in dif_store() argument
901 return sip->dif_storep + sector; in dif_store()
3017 static int do_device_access(struct sdeb_store_info *sip, struct scsi_cmnd *scp, in do_device_access() argument
3033 if (!sdb->length || !sip) in do_device_access()
3037 fsp = sip->storep; in do_device_access()
3075 static bool comp_write_worker(struct sdeb_store_info *sip, u64 lba, u32 num, in comp_write_worker() argument
3082 u8 *fsp = sip->storep; in comp_write_worker()
3149 struct sdeb_store_info *sip = devip2sip((struct sdebug_dev_info *) in dif_copy_prot() local
3151 struct t10_pi_tuple *dif_storep = sip->dif_storep; in dif_copy_prot()
3164 void *start = dif_store(sip, sector); in dif_copy_prot()
3196 struct sdeb_store_info *sip = devip2sip((struct sdebug_dev_info *) in prot_verify_read() local
3202 sdt = dif_store(sip, sector); in prot_verify_read()
3215 ret = dif_verify(sdt, lba2fake_store(sip, sector), in prot_verify_read()
3231 sdeb_read_lock(struct sdeb_store_info *sip) in sdeb_read_lock() argument
3234 if (sip) in sdeb_read_lock()
3235 __acquire(&sip->macc_lck); in sdeb_read_lock()
3239 if (sip) in sdeb_read_lock()
3240 read_lock(&sip->macc_lck); in sdeb_read_lock()
3247 sdeb_read_unlock(struct sdeb_store_info *sip) in sdeb_read_unlock() argument
3250 if (sip) in sdeb_read_unlock()
3251 __release(&sip->macc_lck); in sdeb_read_unlock()
3255 if (sip) in sdeb_read_unlock()
3256 read_unlock(&sip->macc_lck); in sdeb_read_unlock()
3263 sdeb_write_lock(struct sdeb_store_info *sip) in sdeb_write_lock() argument
3266 if (sip) in sdeb_write_lock()
3267 __acquire(&sip->macc_lck); in sdeb_write_lock()
3271 if (sip) in sdeb_write_lock()
3272 write_lock(&sip->macc_lck); in sdeb_write_lock()
3279 sdeb_write_unlock(struct sdeb_store_info *sip) in sdeb_write_unlock() argument
3282 if (sip) in sdeb_write_unlock()
3283 __release(&sip->macc_lck); in sdeb_write_unlock()
3287 if (sip) in sdeb_write_unlock()
3288 write_unlock(&sip->macc_lck); in sdeb_write_unlock()
3301 struct sdeb_store_info *sip = devip2sip(devip, true); in resp_read_dt0() local
3380 sdeb_read_lock(sip); in resp_read_dt0()
3387 sdeb_read_unlock(sip); in resp_read_dt0()
3391 sdeb_read_unlock(sip); in resp_read_dt0()
3398 sdeb_read_unlock(sip); in resp_read_dt0()
3402 sdeb_read_unlock(sip); in resp_read_dt0()
3410 ret = do_device_access(sip, scp, 0, lba, num, false); in resp_read_dt0()
3411 sdeb_read_unlock(sip); in resp_read_dt0()
3526 static unsigned int map_state(struct sdeb_store_info *sip, sector_t lba, in map_state() argument
3535 mapped = test_bit(index, sip->map_storep); in map_state()
3538 next = find_next_zero_bit(sip->map_storep, map_size, index); in map_state()
3540 next = find_next_bit(sip->map_storep, map_size, index); in map_state()
3547 static void map_region(struct sdeb_store_info *sip, sector_t lba, in map_region() argument
3556 set_bit(index, sip->map_storep); in map_region()
3562 static void unmap_region(struct sdeb_store_info *sip, sector_t lba, in unmap_region() argument
3566 u8 *fsp = sip->storep; in unmap_region()
3574 clear_bit(index, sip->map_storep); in unmap_region()
3581 if (sip->dif_storep) { in unmap_region()
3582 memset(sip->dif_storep + lba, 0xff, in unmap_region()
3583 sizeof(*sip->dif_storep) * in unmap_region()
3598 struct sdeb_store_info *sip = devip2sip(devip, true); in resp_write_dt0() local
3653 sdeb_write_lock(sip); in resp_write_dt0()
3656 sdeb_write_unlock(sip); in resp_write_dt0()
3665 sdeb_write_unlock(sip); in resp_write_dt0()
3669 sdeb_write_unlock(sip); in resp_write_dt0()
3676 sdeb_write_unlock(sip); in resp_write_dt0()
3680 sdeb_write_unlock(sip); in resp_write_dt0()
3688 ret = do_device_access(sip, scp, 0, lba, num, true); in resp_write_dt0()
3690 map_region(sip, lba, num); in resp_write_dt0()
3694 sdeb_write_unlock(sip); in resp_write_dt0()
3733 struct sdeb_store_info *sip = devip2sip(devip, true); in resp_write_scat() local
3801 sdeb_write_lock(sip); in resp_write_scat()
3844 ret = do_device_access(sip, scp, sg_off, lba, num, true); in resp_write_scat()
3849 map_region(sip, lba, num); in resp_write_scat()
3883 sdeb_write_unlock(sip); in resp_write_scat()
3898 struct sdeb_store_info *sip = devip2sip((struct sdebug_dev_info *) in resp_write_same() local
3903 sdeb_write_lock(sip); in resp_write_same()
3907 sdeb_write_unlock(sip); in resp_write_same()
3912 unmap_region(sip, lba, num); in resp_write_same()
3918 fsp = sip->storep; in resp_write_same()
3927 sdeb_write_unlock(sip); in resp_write_same()
3941 map_region(sip, lba, num); in resp_write_same()
3946 sdeb_write_unlock(sip); in resp_write_same()
4058 struct sdeb_store_info *sip = devip2sip(devip, true); in resp_comp_write() local
4091 sdeb_write_lock(sip); in resp_comp_write()
4101 if (!comp_write_worker(sip, lba, num, arr, false)) { in resp_comp_write()
4107 map_region(sip, lba, num); in resp_comp_write()
4109 sdeb_write_unlock(sip); in resp_comp_write()
4124 struct sdeb_store_info *sip = devip2sip(devip, true); in resp_unmap() local
4153 sdeb_write_lock(sip); in resp_unmap()
4163 unmap_region(sip, lba, num); in resp_unmap()
4169 sdeb_write_unlock(sip); in resp_unmap()
4197 struct sdeb_store_info *sip = devip2sip(devip, true); in resp_get_lba_status() local
4199 mapped = map_state(sip, lba, &num); in resp_get_lba_status()
4260 struct sdeb_store_info *sip = devip2sip(devip, true); in resp_pre_fetch() local
4261 u8 *fsp = sip->storep; in resp_pre_fetch()
4282 sdeb_read_lock(sip); in resp_pre_fetch()
4287 sdeb_read_unlock(sip); in resp_pre_fetch()
4407 struct sdeb_store_info *sip = devip2sip(devip, true); in resp_verify() local
4446 sdeb_read_lock(sip); in resp_verify()
4462 if (!comp_write_worker(sip, lba, vnum, arr, true)) { in resp_verify()
4468 sdeb_read_unlock(sip); in resp_verify()
4487 struct sdeb_store_info *sip = devip2sip(devip, false); in resp_report_zones() local
4514 sdeb_read_lock(sip); in resp_report_zones()
4612 sdeb_read_unlock(sip); in resp_report_zones()
4637 struct sdeb_store_info *sip = devip2sip(devip, false); in resp_open_zone() local
4644 sdeb_write_lock(sip); in resp_open_zone()
4693 sdeb_write_unlock(sip); in resp_open_zone()
4713 struct sdeb_store_info *sip = devip2sip(devip, false); in resp_close_zone() local
4720 sdeb_write_lock(sip); in resp_close_zone()
4749 sdeb_write_unlock(sip); in resp_close_zone()
4785 struct sdeb_store_info *sip = devip2sip(devip, false); in resp_finish_zone() local
4792 sdeb_write_lock(sip); in resp_finish_zone()
4821 sdeb_write_unlock(sip); in resp_finish_zone()
4829 struct sdeb_store_info *sip = devip2sip(devip, false); in zbc_rwp_zone() local
4842 memset(sip->storep + zsp->z_start * sdebug_sector_size, 0, in zbc_rwp_zone()
4865 struct sdeb_store_info *sip = devip2sip(devip, false); in resp_rwp_zone() local
4872 sdeb_write_lock(sip); in resp_rwp_zone()
4900 sdeb_write_unlock(sip); in resp_rwp_zone()
6051 struct sdeb_store_info *sip; in scsi_debug_show_info() local
6064 xa_for_each(per_store_ap, l_idx, sip) { in scsi_debug_show_info()
6575 struct sdeb_store_info *sip; in add_host_store() local
6585 xa_for_each_marked(per_store_ap, idx, sip, in add_host_store()
6692 struct sdeb_store_info *sip = xa_load(per_store_ap, 0); in map_show() local
6694 if (sip) in map_show()
6696 (int)map_size, sip->map_storep); in map_show()
7175 static void sdebug_erase_store(int idx, struct sdeb_store_info *sip) in sdebug_erase_store() argument
7179 if (!sip) { in sdebug_erase_store()
7182 sip = xa_load(per_store_ap, idx); in sdebug_erase_store()
7183 if (!sip) in sdebug_erase_store()
7186 vfree(sip->map_storep); in sdebug_erase_store()
7187 vfree(sip->dif_storep); in sdebug_erase_store()
7188 vfree(sip->storep); in sdebug_erase_store()
7190 kfree(sip); in sdebug_erase_store()
7197 struct sdeb_store_info *sip = NULL; in sdebug_erase_all_stores() local
7199 xa_for_each(per_store_ap, idx, sip) { in sdebug_erase_all_stores()
7203 sdebug_erase_store(idx, sip); in sdebug_erase_all_stores()
7219 struct sdeb_store_info *sip = NULL; in sdebug_add_store() local
7222 sip = kzalloc(sizeof(*sip), GFP_KERNEL); in sdebug_add_store()
7223 if (!sip) in sdebug_add_store()
7227 res = __xa_alloc(per_store_ap, &n_idx, sip, xal, GFP_ATOMIC); in sdebug_add_store()
7230 kfree(sip); in sdebug_add_store()
7240 sip->storep = vzalloc(sz); in sdebug_add_store()
7241 if (!sip->storep) { in sdebug_add_store()
7246 sdebug_build_parts(sip->storep, sz); in sdebug_add_store()
7253 sip->dif_storep = vmalloc(dif_size); in sdebug_add_store()
7256 sip->dif_storep); in sdebug_add_store()
7258 if (!sip->dif_storep) { in sdebug_add_store()
7262 memset(sip->dif_storep, 0xff, dif_size); in sdebug_add_store()
7267 sip->map_storep = vmalloc(array_size(sizeof(long), in sdebug_add_store()
7272 if (!sip->map_storep) { in sdebug_add_store()
7277 bitmap_zero(sip->map_storep, map_size); in sdebug_add_store()
7281 map_region(sip, 0, 2); in sdebug_add_store()
7284 rwlock_init(&sip->macc_lck); in sdebug_add_store()
7287 sdebug_erase_store((int)n_idx, sip); in sdebug_add_store()