Lines Matching refs:sip
623 static void sdebug_erase_store(int idx, struct sdeb_store_info *sip);
1287 static void *lba2fake_store(struct sdeb_store_info *sip, in lba2fake_store() argument
1290 struct sdeb_store_info *lsip = sip; in lba2fake_store()
1293 if (!sip || !sip->storep) { in lba2fake_store()
1300 static struct t10_pi_tuple *dif_store(struct sdeb_store_info *sip, in dif_store() argument
1305 return sip->dif_storep + sector; in dif_store()
3960 sdeb_data_read_lock(struct sdeb_store_info *sip) in sdeb_data_read_lock() argument
3962 BUG_ON(!sip); in sdeb_data_read_lock()
3964 sdeb_read_lock(&sip->macc_data_lck); in sdeb_data_read_lock()
3968 sdeb_data_read_unlock(struct sdeb_store_info *sip) in sdeb_data_read_unlock() argument
3970 BUG_ON(!sip); in sdeb_data_read_unlock()
3972 sdeb_read_unlock(&sip->macc_data_lck); in sdeb_data_read_unlock()
3976 sdeb_data_write_lock(struct sdeb_store_info *sip) in sdeb_data_write_lock() argument
3978 BUG_ON(!sip); in sdeb_data_write_lock()
3980 sdeb_write_lock(&sip->macc_data_lck); in sdeb_data_write_lock()
3984 sdeb_data_write_unlock(struct sdeb_store_info *sip) in sdeb_data_write_unlock() argument
3986 BUG_ON(!sip); in sdeb_data_write_unlock()
3988 sdeb_write_unlock(&sip->macc_data_lck); in sdeb_data_write_unlock()
3992 sdeb_data_sector_read_lock(struct sdeb_store_info *sip) in sdeb_data_sector_read_lock() argument
3994 BUG_ON(!sip); in sdeb_data_sector_read_lock()
3996 sdeb_read_lock(&sip->macc_sector_lck); in sdeb_data_sector_read_lock()
4000 sdeb_data_sector_read_unlock(struct sdeb_store_info *sip) in sdeb_data_sector_read_unlock() argument
4002 BUG_ON(!sip); in sdeb_data_sector_read_unlock()
4004 sdeb_read_unlock(&sip->macc_sector_lck); in sdeb_data_sector_read_unlock()
4008 sdeb_data_sector_write_lock(struct sdeb_store_info *sip) in sdeb_data_sector_write_lock() argument
4010 BUG_ON(!sip); in sdeb_data_sector_write_lock()
4012 sdeb_write_lock(&sip->macc_sector_lck); in sdeb_data_sector_write_lock()
4016 sdeb_data_sector_write_unlock(struct sdeb_store_info *sip) in sdeb_data_sector_write_unlock() argument
4018 BUG_ON(!sip); in sdeb_data_sector_write_unlock()
4020 sdeb_write_unlock(&sip->macc_sector_lck); in sdeb_data_sector_write_unlock()
4037 sdeb_data_lock(struct sdeb_store_info *sip, bool atomic) in sdeb_data_lock() argument
4040 sdeb_data_write_lock(sip); in sdeb_data_lock()
4042 sdeb_data_read_lock(sip); in sdeb_data_lock()
4046 sdeb_data_unlock(struct sdeb_store_info *sip, bool atomic) in sdeb_data_unlock() argument
4049 sdeb_data_write_unlock(sip); in sdeb_data_unlock()
4051 sdeb_data_read_unlock(sip); in sdeb_data_unlock()
4056 sdeb_data_sector_lock(struct sdeb_store_info *sip, bool do_write) in sdeb_data_sector_lock() argument
4059 sdeb_data_sector_write_lock(sip); in sdeb_data_sector_lock()
4061 sdeb_data_sector_read_lock(sip); in sdeb_data_sector_lock()
4065 sdeb_data_sector_unlock(struct sdeb_store_info *sip, bool do_write) in sdeb_data_sector_unlock() argument
4068 sdeb_data_sector_write_unlock(sip); in sdeb_data_sector_unlock()
4070 sdeb_data_sector_read_unlock(sip); in sdeb_data_sector_unlock()
4074 sdeb_meta_read_lock(struct sdeb_store_info *sip) in sdeb_meta_read_lock() argument
4077 if (sip) in sdeb_meta_read_lock()
4078 __acquire(&sip->macc_meta_lck); in sdeb_meta_read_lock()
4082 if (sip) in sdeb_meta_read_lock()
4083 read_lock(&sip->macc_meta_lck); in sdeb_meta_read_lock()
4090 sdeb_meta_read_unlock(struct sdeb_store_info *sip) in sdeb_meta_read_unlock() argument
4093 if (sip) in sdeb_meta_read_unlock()
4094 __release(&sip->macc_meta_lck); in sdeb_meta_read_unlock()
4098 if (sip) in sdeb_meta_read_unlock()
4099 read_unlock(&sip->macc_meta_lck); in sdeb_meta_read_unlock()
4106 sdeb_meta_write_lock(struct sdeb_store_info *sip) in sdeb_meta_write_lock() argument
4109 if (sip) in sdeb_meta_write_lock()
4110 __acquire(&sip->macc_meta_lck); in sdeb_meta_write_lock()
4114 if (sip) in sdeb_meta_write_lock()
4115 write_lock(&sip->macc_meta_lck); in sdeb_meta_write_lock()
4122 sdeb_meta_write_unlock(struct sdeb_store_info *sip) in sdeb_meta_write_unlock() argument
4125 if (sip) in sdeb_meta_write_unlock()
4126 __release(&sip->macc_meta_lck); in sdeb_meta_write_unlock()
4130 if (sip) in sdeb_meta_write_unlock()
4131 write_unlock(&sip->macc_meta_lck); in sdeb_meta_write_unlock()
4138 static int do_device_access(struct sdeb_store_info *sip, struct scsi_cmnd *scp, in do_device_access() argument
4163 if (!sdb->length || !sip) in do_device_access()
4171 fsp = sip->storep; in do_device_access()
4176 sdeb_data_lock(sip, atomic); in do_device_access()
4179 sdeb_data_sector_lock(sip, do_write); in do_device_access()
4183 sdeb_data_sector_unlock(sip, do_write); in do_device_access()
4191 sdeb_data_unlock(sip, atomic); in do_device_access()
4212 static bool comp_write_worker(struct sdeb_store_info *sip, u64 lba, u32 num, in comp_write_worker() argument
4219 u8 *fsp = sip->storep; in comp_write_worker()
4286 struct sdeb_store_info *sip = devip2sip((struct sdebug_dev_info *) in dif_copy_prot() local
4288 struct t10_pi_tuple *dif_storep = sip->dif_storep; in dif_copy_prot()
4301 void *start = dif_store(sip, sector); in dif_copy_prot()
4333 struct sdeb_store_info *sip = devip2sip((struct sdebug_dev_info *) in prot_verify_read() local
4339 sdt = dif_store(sip, sector); in prot_verify_read()
4352 ret = dif_verify(sdt, lba2fake_store(sip, sector), in prot_verify_read()
4466 struct sdeb_store_info *sip = devip2sip(devip, true); in resp_read_dt0() local
4555 sdeb_meta_read_lock(sip); in resp_read_dt0()
4564 sdeb_meta_read_unlock(sip); in resp_read_dt0()
4568 sdeb_meta_read_unlock(sip); in resp_read_dt0()
4575 sdeb_meta_read_unlock(sip); in resp_read_dt0()
4579 sdeb_meta_read_unlock(sip); in resp_read_dt0()
4587 ret = do_device_access(sip, scp, 0, lba, num, 0, false, false); in resp_read_dt0()
4589 sdeb_meta_read_unlock(sip); in resp_read_dt0()
4704 static unsigned int map_state(struct sdeb_store_info *sip, sector_t lba, in map_state() argument
4713 mapped = test_bit(index, sip->map_storep); in map_state()
4716 next = find_next_zero_bit(sip->map_storep, map_size, index); in map_state()
4718 next = find_next_bit(sip->map_storep, map_size, index); in map_state()
4725 static void map_region(struct sdeb_store_info *sip, sector_t lba, in map_region() argument
4734 set_bit(index, sip->map_storep); in map_region()
4740 static void unmap_region(struct sdeb_store_info *sip, sector_t lba, in unmap_region() argument
4744 u8 *fsp = sip->storep; in unmap_region()
4752 clear_bit(index, sip->map_storep); in unmap_region()
4759 if (sip->dif_storep) { in unmap_region()
4760 memset(sip->dif_storep + lba, 0xff, in unmap_region()
4761 sizeof(*sip->dif_storep) * in unmap_region()
4838 struct sdeb_store_info *sip = devip2sip(devip, true); in resp_write_dt0() local
4905 sdeb_meta_write_lock(sip); in resp_write_dt0()
4912 sdeb_meta_write_unlock(sip); in resp_write_dt0()
4921 sdeb_meta_write_unlock(sip); in resp_write_dt0()
4925 sdeb_meta_write_unlock(sip); in resp_write_dt0()
4932 sdeb_meta_write_unlock(sip); in resp_write_dt0()
4936 sdeb_meta_write_unlock(sip); in resp_write_dt0()
4944 ret = do_device_access(sip, scp, 0, lba, num, group, true, false); in resp_write_dt0()
4946 map_region(sip, lba, num); in resp_write_dt0()
4952 sdeb_meta_write_unlock(sip); in resp_write_dt0()
4992 struct sdeb_store_info *sip = devip2sip(devip, true); in resp_write_scat() local
5064 sdeb_meta_write_lock(sip); in resp_write_scat()
5111 ret = do_device_access(sip, scp, sg_off, lba, num, group, true, true); in resp_write_scat()
5116 map_region(sip, lba, num); in resp_write_scat()
5150 sdeb_meta_write_unlock(sip); in resp_write_scat()
5165 struct sdeb_store_info *sip = devip2sip((struct sdebug_dev_info *) in resp_write_same() local
5172 sdeb_meta_write_lock(sip); in resp_write_same()
5181 unmap_region(sip, lba, num); in resp_write_same()
5187 fsp = sip->storep; in resp_write_same()
5189 sdeb_data_write_lock(sip); in resp_write_same()
5211 map_region(sip, lba, num); in resp_write_same()
5215 sdeb_data_write_unlock(sip); in resp_write_same()
5219 sdeb_meta_write_unlock(sip); in resp_write_same()
5330 struct sdeb_store_info *sip = devip2sip(devip, true); in resp_comp_write() local
5372 sdeb_data_write_lock(sip); in resp_comp_write()
5373 sdeb_meta_write_lock(sip); in resp_comp_write()
5374 if (!comp_write_worker(sip, lba, num, arr, false)) { in resp_comp_write()
5382 map_region(sip, lba, num); in resp_comp_write()
5384 sdeb_meta_write_unlock(sip); in resp_comp_write()
5385 sdeb_data_write_unlock(sip); in resp_comp_write()
5401 struct sdeb_store_info *sip = devip2sip(devip, true); in resp_unmap() local
5430 sdeb_meta_write_lock(sip); in resp_unmap()
5440 unmap_region(sip, lba, num); in resp_unmap()
5446 sdeb_meta_write_unlock(sip); in resp_unmap()
5474 struct sdeb_store_info *sip = devip2sip(devip, true); in resp_get_lba_status() local
5476 mapped = map_state(sip, lba, &num); in resp_get_lba_status()
5585 struct sdeb_store_info *sip = devip2sip(devip, true); in resp_pre_fetch() local
5586 u8 *fsp = sip->storep; in resp_pre_fetch()
5632 sdeb_data_read_lock(sip); in resp_pre_fetch()
5638 sdeb_data_read_unlock(sip); in resp_pre_fetch()
5758 struct sdeb_store_info *sip = devip2sip(devip, true); in resp_verify() local
5797 sdeb_data_read_lock(sip); in resp_verify()
5813 if (!comp_write_worker(sip, lba, vnum, arr, true)) { in resp_verify()
5819 sdeb_data_read_unlock(sip); in resp_verify()
5838 struct sdeb_store_info *sip = devip2sip(devip, false); in resp_report_zones() local
5865 sdeb_meta_read_lock(sip); in resp_report_zones()
5963 sdeb_meta_read_unlock(sip); in resp_report_zones()
5971 struct sdeb_store_info *sip; in resp_atomic_write() local
5982 sip = devip2sip(devip, true); in resp_atomic_write()
6019 ret = do_device_access(sip, scp, 0, lba, len, 0, true, true); in resp_atomic_write()
6047 struct sdeb_store_info *sip = devip2sip(devip, false); in resp_open_zone() local
6053 sdeb_meta_write_lock(sip); in resp_open_zone()
6102 sdeb_meta_write_unlock(sip); in resp_open_zone()
6122 struct sdeb_store_info *sip = devip2sip(devip, false); in resp_close_zone() local
6129 sdeb_meta_write_lock(sip); in resp_close_zone()
6158 sdeb_meta_write_unlock(sip); in resp_close_zone()
6194 struct sdeb_store_info *sip = devip2sip(devip, false); in resp_finish_zone() local
6201 sdeb_meta_write_lock(sip); in resp_finish_zone()
6230 sdeb_meta_write_unlock(sip); in resp_finish_zone()
6238 struct sdeb_store_info *sip = devip2sip(devip, false); in zbc_rwp_zone() local
6251 memset(sip->storep + zsp->z_start * sdebug_sector_size, 0, in zbc_rwp_zone()
6274 struct sdeb_store_info *sip = devip2sip(devip, false); in resp_rwp_zone() local
6281 sdeb_meta_write_lock(sip); in resp_rwp_zone()
6309 sdeb_meta_write_unlock(sip); in resp_rwp_zone()
7518 struct sdeb_store_info *sip; in scsi_debug_show_info() local
7531 xa_for_each(per_store_ap, l_idx, sip) { in scsi_debug_show_info()
8036 struct sdeb_store_info *sip; in add_host_store() local
8046 xa_for_each_marked(per_store_ap, idx, sip, in add_host_store()
8153 struct sdeb_store_info *sip = xa_load(per_store_ap, 0); in map_show() local
8155 if (sip) in map_show()
8157 (int)map_size, sip->map_storep); in map_show()
8645 static void sdebug_erase_store(int idx, struct sdeb_store_info *sip) in sdebug_erase_store() argument
8649 if (!sip) { in sdebug_erase_store()
8652 sip = xa_load(per_store_ap, idx); in sdebug_erase_store()
8653 if (!sip) in sdebug_erase_store()
8656 vfree(sip->map_storep); in sdebug_erase_store()
8657 vfree(sip->dif_storep); in sdebug_erase_store()
8658 vfree(sip->storep); in sdebug_erase_store()
8660 kfree(sip); in sdebug_erase_store()
8667 struct sdeb_store_info *sip = NULL; in sdebug_erase_all_stores() local
8669 xa_for_each(per_store_ap, idx, sip) { in sdebug_erase_all_stores()
8673 sdebug_erase_store(idx, sip); in sdebug_erase_all_stores()
8689 struct sdeb_store_info *sip = NULL; in sdebug_add_store() local
8692 sip = kzalloc(sizeof(*sip), GFP_KERNEL); in sdebug_add_store()
8693 if (!sip) in sdebug_add_store()
8697 res = __xa_alloc(per_store_ap, &n_idx, sip, xal, GFP_ATOMIC); in sdebug_add_store()
8700 kfree(sip); in sdebug_add_store()
8710 sip->storep = vzalloc(sz); in sdebug_add_store()
8711 if (!sip->storep) { in sdebug_add_store()
8716 sdebug_build_parts(sip->storep, sz); in sdebug_add_store()
8723 sip->dif_storep = vmalloc(dif_size); in sdebug_add_store()
8726 sip->dif_storep); in sdebug_add_store()
8728 if (!sip->dif_storep) { in sdebug_add_store()
8732 memset(sip->dif_storep, 0xff, dif_size); in sdebug_add_store()
8737 sip->map_storep = vmalloc(array_size(sizeof(long), in sdebug_add_store()
8742 if (!sip->map_storep) { in sdebug_add_store()
8747 bitmap_zero(sip->map_storep, map_size); in sdebug_add_store()
8751 map_region(sip, 0, 2); in sdebug_add_store()
8754 rwlock_init(&sip->macc_data_lck); in sdebug_add_store()
8755 rwlock_init(&sip->macc_meta_lck); in sdebug_add_store()
8756 rwlock_init(&sip->macc_sector_lck); in sdebug_add_store()
8759 sdebug_erase_store((int)n_idx, sip); in sdebug_add_store()