Lines Matching refs:sip
639 static void sdebug_erase_store(int idx, struct sdeb_store_info *sip);
1321 static void *lba2fake_store(struct sdeb_store_info *sip, in lba2fake_store() argument
1324 struct sdeb_store_info *lsip = sip; in lba2fake_store()
1327 if (!sip || !sip->storep) { in lba2fake_store()
1334 static struct t10_pi_tuple *dif_store(struct sdeb_store_info *sip, in dif_store() argument
1339 return sip->dif_storep + sector; in dif_store()
4058 sdeb_data_read_lock(struct sdeb_store_info *sip) in sdeb_data_read_lock() argument
4060 BUG_ON(!sip); in sdeb_data_read_lock()
4062 sdeb_read_lock(&sip->macc_data_lck); in sdeb_data_read_lock()
4066 sdeb_data_read_unlock(struct sdeb_store_info *sip) in sdeb_data_read_unlock() argument
4068 BUG_ON(!sip); in sdeb_data_read_unlock()
4070 sdeb_read_unlock(&sip->macc_data_lck); in sdeb_data_read_unlock()
4074 sdeb_data_write_lock(struct sdeb_store_info *sip) in sdeb_data_write_lock() argument
4076 BUG_ON(!sip); in sdeb_data_write_lock()
4078 sdeb_write_lock(&sip->macc_data_lck); in sdeb_data_write_lock()
4082 sdeb_data_write_unlock(struct sdeb_store_info *sip) in sdeb_data_write_unlock() argument
4084 BUG_ON(!sip); in sdeb_data_write_unlock()
4086 sdeb_write_unlock(&sip->macc_data_lck); in sdeb_data_write_unlock()
4090 sdeb_data_sector_read_lock(struct sdeb_store_info *sip) in sdeb_data_sector_read_lock() argument
4092 BUG_ON(!sip); in sdeb_data_sector_read_lock()
4094 sdeb_read_lock(&sip->macc_sector_lck); in sdeb_data_sector_read_lock()
4098 sdeb_data_sector_read_unlock(struct sdeb_store_info *sip) in sdeb_data_sector_read_unlock() argument
4100 BUG_ON(!sip); in sdeb_data_sector_read_unlock()
4102 sdeb_read_unlock(&sip->macc_sector_lck); in sdeb_data_sector_read_unlock()
4106 sdeb_data_sector_write_lock(struct sdeb_store_info *sip) in sdeb_data_sector_write_lock() argument
4108 BUG_ON(!sip); in sdeb_data_sector_write_lock()
4110 sdeb_write_lock(&sip->macc_sector_lck); in sdeb_data_sector_write_lock()
4114 sdeb_data_sector_write_unlock(struct sdeb_store_info *sip) in sdeb_data_sector_write_unlock() argument
4116 BUG_ON(!sip); in sdeb_data_sector_write_unlock()
4118 sdeb_write_unlock(&sip->macc_sector_lck); in sdeb_data_sector_write_unlock()
4135 sdeb_data_lock(struct sdeb_store_info *sip, bool atomic) in sdeb_data_lock() argument
4138 sdeb_data_write_lock(sip); in sdeb_data_lock()
4140 sdeb_data_read_lock(sip); in sdeb_data_lock()
4144 sdeb_data_unlock(struct sdeb_store_info *sip, bool atomic) in sdeb_data_unlock() argument
4147 sdeb_data_write_unlock(sip); in sdeb_data_unlock()
4149 sdeb_data_read_unlock(sip); in sdeb_data_unlock()
4154 sdeb_data_sector_lock(struct sdeb_store_info *sip, bool do_write) in sdeb_data_sector_lock() argument
4157 sdeb_data_sector_write_lock(sip); in sdeb_data_sector_lock()
4159 sdeb_data_sector_read_lock(sip); in sdeb_data_sector_lock()
4163 sdeb_data_sector_unlock(struct sdeb_store_info *sip, bool do_write) in sdeb_data_sector_unlock() argument
4166 sdeb_data_sector_write_unlock(sip); in sdeb_data_sector_unlock()
4168 sdeb_data_sector_read_unlock(sip); in sdeb_data_sector_unlock()
4172 sdeb_meta_read_lock(struct sdeb_store_info *sip) in sdeb_meta_read_lock() argument
4175 if (sip) in sdeb_meta_read_lock()
4176 __acquire(&sip->macc_meta_lck); in sdeb_meta_read_lock()
4180 if (sip) in sdeb_meta_read_lock()
4181 read_lock(&sip->macc_meta_lck); in sdeb_meta_read_lock()
4188 sdeb_meta_read_unlock(struct sdeb_store_info *sip) in sdeb_meta_read_unlock() argument
4191 if (sip) in sdeb_meta_read_unlock()
4192 __release(&sip->macc_meta_lck); in sdeb_meta_read_unlock()
4196 if (sip) in sdeb_meta_read_unlock()
4197 read_unlock(&sip->macc_meta_lck); in sdeb_meta_read_unlock()
4204 sdeb_meta_write_lock(struct sdeb_store_info *sip) in sdeb_meta_write_lock() argument
4207 if (sip) in sdeb_meta_write_lock()
4208 __acquire(&sip->macc_meta_lck); in sdeb_meta_write_lock()
4212 if (sip) in sdeb_meta_write_lock()
4213 write_lock(&sip->macc_meta_lck); in sdeb_meta_write_lock()
4220 sdeb_meta_write_unlock(struct sdeb_store_info *sip) in sdeb_meta_write_unlock() argument
4223 if (sip) in sdeb_meta_write_unlock()
4224 __release(&sip->macc_meta_lck); in sdeb_meta_write_unlock()
4228 if (sip) in sdeb_meta_write_unlock()
4229 write_unlock(&sip->macc_meta_lck); in sdeb_meta_write_unlock()
4236 static int do_device_access(struct sdeb_store_info *sip, struct scsi_cmnd *scp, in do_device_access() argument
4261 if (!sdb->length || !sip) in do_device_access()
4269 fsp = sip->storep; in do_device_access()
4274 sdeb_data_lock(sip, atomic); in do_device_access()
4277 sdeb_data_sector_lock(sip, do_write); in do_device_access()
4281 sdeb_data_sector_unlock(sip, do_write); in do_device_access()
4289 sdeb_data_unlock(sip, atomic); in do_device_access()
4310 static bool comp_write_worker(struct sdeb_store_info *sip, u64 lba, u32 num, in comp_write_worker() argument
4317 u8 *fsp = sip->storep; in comp_write_worker()
4384 struct sdeb_store_info *sip = devip2sip((struct sdebug_dev_info *) in dif_copy_prot() local
4386 struct t10_pi_tuple *dif_storep = sip->dif_storep; in dif_copy_prot()
4399 void *start = dif_store(sip, sector); in dif_copy_prot()
4431 struct sdeb_store_info *sip = devip2sip((struct sdebug_dev_info *) in prot_verify_read() local
4437 sdt = dif_store(sip, sector); in prot_verify_read()
4450 ret = dif_verify(sdt, lba2fake_store(sip, sector), in prot_verify_read()
4564 struct sdeb_store_info *sip = devip2sip(devip, true); in resp_read_dt0() local
4650 sdeb_meta_read_lock(sip); in resp_read_dt0()
4659 sdeb_meta_read_unlock(sip); in resp_read_dt0()
4663 sdeb_meta_read_unlock(sip); in resp_read_dt0()
4670 sdeb_meta_read_unlock(sip); in resp_read_dt0()
4674 sdeb_meta_read_unlock(sip); in resp_read_dt0()
4682 ret = do_device_access(sip, scp, 0, lba, num, 0, false, false); in resp_read_dt0()
4684 sdeb_meta_read_unlock(sip); in resp_read_dt0()
4799 static unsigned int map_state(struct sdeb_store_info *sip, sector_t lba, in map_state() argument
4808 mapped = test_bit(index, sip->map_storep); in map_state()
4811 next = find_next_zero_bit(sip->map_storep, map_size, index); in map_state()
4813 next = find_next_bit(sip->map_storep, map_size, index); in map_state()
4820 static void map_region(struct sdeb_store_info *sip, sector_t lba, in map_region() argument
4829 set_bit(index, sip->map_storep); in map_region()
4835 static void unmap_region(struct sdeb_store_info *sip, sector_t lba, in unmap_region() argument
4839 u8 *fsp = sip->storep; in unmap_region()
4847 clear_bit(index, sip->map_storep); in unmap_region()
4854 if (sip->dif_storep) { in unmap_region()
4855 memset(sip->dif_storep + lba, 0xff, in unmap_region()
4856 sizeof(*sip->dif_storep) * in unmap_region()
4933 struct sdeb_store_info *sip = devip2sip(devip, true); in resp_write_dt0() local
5005 sdeb_meta_write_lock(sip); in resp_write_dt0()
5012 sdeb_meta_write_unlock(sip); in resp_write_dt0()
5021 sdeb_meta_write_unlock(sip); in resp_write_dt0()
5025 sdeb_meta_write_unlock(sip); in resp_write_dt0()
5032 sdeb_meta_write_unlock(sip); in resp_write_dt0()
5036 sdeb_meta_write_unlock(sip); in resp_write_dt0()
5044 ret = do_device_access(sip, scp, 0, lba, num, group, true, false); in resp_write_dt0()
5046 map_region(sip, lba, num); in resp_write_dt0()
5052 sdeb_meta_write_unlock(sip); in resp_write_dt0()
5092 struct sdeb_store_info *sip = devip2sip(devip, true); in resp_write_scat() local
5164 sdeb_meta_write_lock(sip); in resp_write_scat()
5211 ret = do_device_access(sip, scp, sg_off, lba, num, group, true, true); in resp_write_scat()
5216 map_region(sip, lba, num); in resp_write_scat()
5250 sdeb_meta_write_unlock(sip); in resp_write_scat()
5265 struct sdeb_store_info *sip = devip2sip((struct sdebug_dev_info *) in resp_write_same() local
5272 sdeb_meta_write_lock(sip); in resp_write_same()
5281 unmap_region(sip, lba, num); in resp_write_same()
5287 fsp = sip->storep; in resp_write_same()
5289 sdeb_data_write_lock(sip); in resp_write_same()
5311 map_region(sip, lba, num); in resp_write_same()
5315 sdeb_data_write_unlock(sip); in resp_write_same()
5319 sdeb_meta_write_unlock(sip); in resp_write_same()
5430 struct sdeb_store_info *sip = devip2sip(devip, true); in resp_comp_write() local
5472 sdeb_data_write_lock(sip); in resp_comp_write()
5473 sdeb_meta_write_lock(sip); in resp_comp_write()
5474 if (!comp_write_worker(sip, lba, num, arr, false)) { in resp_comp_write()
5482 map_region(sip, lba, num); in resp_comp_write()
5484 sdeb_meta_write_unlock(sip); in resp_comp_write()
5485 sdeb_data_write_unlock(sip); in resp_comp_write()
5501 struct sdeb_store_info *sip = devip2sip(devip, true); in resp_unmap() local
5530 sdeb_meta_write_lock(sip); in resp_unmap()
5540 unmap_region(sip, lba, num); in resp_unmap()
5546 sdeb_meta_write_unlock(sip); in resp_unmap()
5574 struct sdeb_store_info *sip = devip2sip(devip, true); in resp_get_lba_status() local
5576 mapped = map_state(sip, lba, &num); in resp_get_lba_status()
5684 struct sdeb_store_info *sip = devip2sip(devip, true); in resp_pre_fetch() local
5685 u8 *fsp = sip->storep; in resp_pre_fetch()
5706 sdeb_data_read_lock(sip); in resp_pre_fetch()
5712 sdeb_data_read_unlock(sip); in resp_pre_fetch()
5832 struct sdeb_store_info *sip = devip2sip(devip, true); in resp_verify() local
5871 sdeb_data_read_lock(sip); in resp_verify()
5887 if (!comp_write_worker(sip, lba, vnum, arr, true)) { in resp_verify()
5893 sdeb_data_read_unlock(sip); in resp_verify()
5912 struct sdeb_store_info *sip = devip2sip(devip, false); in resp_report_zones() local
5939 sdeb_meta_read_lock(sip); in resp_report_zones()
6037 sdeb_meta_read_unlock(sip); in resp_report_zones()
6045 struct sdeb_store_info *sip; in resp_atomic_write() local
6056 sip = devip2sip(devip, true); in resp_atomic_write()
6093 ret = do_device_access(sip, scp, 0, lba, len, 0, true, true); in resp_atomic_write()
6121 struct sdeb_store_info *sip = devip2sip(devip, false); in resp_open_zone() local
6127 sdeb_meta_write_lock(sip); in resp_open_zone()
6176 sdeb_meta_write_unlock(sip); in resp_open_zone()
6196 struct sdeb_store_info *sip = devip2sip(devip, false); in resp_close_zone() local
6203 sdeb_meta_write_lock(sip); in resp_close_zone()
6232 sdeb_meta_write_unlock(sip); in resp_close_zone()
6268 struct sdeb_store_info *sip = devip2sip(devip, false); in resp_finish_zone() local
6275 sdeb_meta_write_lock(sip); in resp_finish_zone()
6304 sdeb_meta_write_unlock(sip); in resp_finish_zone()
6312 struct sdeb_store_info *sip = devip2sip(devip, false); in zbc_rwp_zone() local
6325 memset(sip->storep + zsp->z_start * sdebug_sector_size, 0, in zbc_rwp_zone()
6348 struct sdeb_store_info *sip = devip2sip(devip, false); in resp_rwp_zone() local
6355 sdeb_meta_write_lock(sip); in resp_rwp_zone()
6383 sdeb_meta_write_unlock(sip); in resp_rwp_zone()
7633 struct sdeb_store_info *sip; in scsi_debug_show_info() local
7646 xa_for_each(per_store_ap, l_idx, sip) { in scsi_debug_show_info()
8151 struct sdeb_store_info *sip; in add_host_store() local
8161 xa_for_each_marked(per_store_ap, idx, sip, in add_host_store()
8268 struct sdeb_store_info *sip = xa_load(per_store_ap, 0); in map_show() local
8270 if (sip) in map_show()
8272 (int)map_size, sip->map_storep); in map_show()
8760 static void sdebug_erase_store(int idx, struct sdeb_store_info *sip) in sdebug_erase_store() argument
8764 if (!sip) { in sdebug_erase_store()
8767 sip = xa_load(per_store_ap, idx); in sdebug_erase_store()
8768 if (!sip) in sdebug_erase_store()
8771 vfree(sip->map_storep); in sdebug_erase_store()
8772 vfree(sip->dif_storep); in sdebug_erase_store()
8773 vfree(sip->storep); in sdebug_erase_store()
8775 kfree(sip); in sdebug_erase_store()
8782 struct sdeb_store_info *sip = NULL; in sdebug_erase_all_stores() local
8784 xa_for_each(per_store_ap, idx, sip) { in sdebug_erase_all_stores()
8788 sdebug_erase_store(idx, sip); in sdebug_erase_all_stores()
8804 struct sdeb_store_info *sip = NULL; in sdebug_add_store() local
8807 sip = kzalloc(sizeof(*sip), GFP_KERNEL); in sdebug_add_store()
8808 if (!sip) in sdebug_add_store()
8812 res = __xa_alloc(per_store_ap, &n_idx, sip, xal, GFP_ATOMIC); in sdebug_add_store()
8815 kfree(sip); in sdebug_add_store()
8825 sip->storep = vzalloc(sz); in sdebug_add_store()
8826 if (!sip->storep) { in sdebug_add_store()
8831 sdebug_build_parts(sip->storep, sz); in sdebug_add_store()
8838 sip->dif_storep = vmalloc(dif_size); in sdebug_add_store()
8841 sip->dif_storep); in sdebug_add_store()
8843 if (!sip->dif_storep) { in sdebug_add_store()
8847 memset(sip->dif_storep, 0xff, dif_size); in sdebug_add_store()
8852 sip->map_storep = vcalloc(BITS_TO_LONGS(map_size), in sdebug_add_store()
8857 if (!sip->map_storep) { in sdebug_add_store()
8864 map_region(sip, 0, 2); in sdebug_add_store()
8867 rwlock_init(&sip->macc_data_lck); in sdebug_add_store()
8868 rwlock_init(&sip->macc_meta_lck); in sdebug_add_store()
8869 rwlock_init(&sip->macc_sector_lck); in sdebug_add_store()
8872 sdebug_erase_store((int)n_idx, sip); in sdebug_add_store()