Lines Matching refs:sip

505 static void sdebug_erase_store(int idx, struct sdeb_store_info *sip);
876 static void *lba2fake_store(struct sdeb_store_info *sip,
879 struct sdeb_store_info *lsip = sip;
882 if (!sip || !sip->storep) {
889 static struct t10_pi_tuple *dif_store(struct sdeb_store_info *sip,
894 return sip->dif_storep + sector;
3005 static int do_device_access(struct sdeb_store_info *sip, struct scsi_cmnd *scp,
3021 if (!sdb->length || !sip)
3025 fsp = sip->storep;
3060 /* If sip->storep+lba compares equal to arr(num), then copy top half of
3061 * arr into sip->storep+lba and return true. If comparison fails then
3063 static bool comp_write_worker(struct sdeb_store_info *sip, u64 lba, u32 num,
3070 u8 *fsp = sip->storep;
3137 struct sdeb_store_info *sip = devip2sip((struct sdebug_dev_info *)
3139 struct t10_pi_tuple *dif_storep = sip->dif_storep;
3152 void *start = dif_store(sip, sector);
3184 struct sdeb_store_info *sip = devip2sip((struct sdebug_dev_info *)
3190 sdt = dif_store(sip, sector);
3203 ret = dif_verify(sdt, lba2fake_store(sip, sector),
3219 sdeb_read_lock(struct sdeb_store_info *sip)
3222 if (sip)
3223 __acquire(&sip->macc_lck);
3227 if (sip)
3228 read_lock(&sip->macc_lck);
3235 sdeb_read_unlock(struct sdeb_store_info *sip)
3238 if (sip)
3239 __release(&sip->macc_lck);
3243 if (sip)
3244 read_unlock(&sip->macc_lck);
3251 sdeb_write_lock(struct sdeb_store_info *sip)
3254 if (sip)
3255 __acquire(&sip->macc_lck);
3259 if (sip)
3260 write_lock(&sip->macc_lck);
3267 sdeb_write_unlock(struct sdeb_store_info *sip)
3270 if (sip)
3271 __release(&sip->macc_lck);
3275 if (sip)
3276 write_unlock(&sip->macc_lck);
3289 struct sdeb_store_info *sip = devip2sip(devip, true);
3368 sdeb_read_lock(sip);
3375 sdeb_read_unlock(sip);
3379 sdeb_read_unlock(sip);
3386 sdeb_read_unlock(sip);
3390 sdeb_read_unlock(sip);
3398 ret = do_device_access(sip, scp, 0, lba, num, false);
3399 sdeb_read_unlock(sip);
3514 static unsigned int map_state(struct sdeb_store_info *sip, sector_t lba,
3523 mapped = test_bit(index, sip->map_storep);
3526 next = find_next_zero_bit(sip->map_storep, map_size, index);
3528 next = find_next_bit(sip->map_storep, map_size, index);
3535 static void map_region(struct sdeb_store_info *sip, sector_t lba,
3544 set_bit(index, sip->map_storep);
3550 static void unmap_region(struct sdeb_store_info *sip, sector_t lba,
3554 u8 *fsp = sip->storep;
3562 clear_bit(index, sip->map_storep);
3569 if (sip->dif_storep) {
3570 memset(sip->dif_storep + lba, 0xff,
3571 sizeof(*sip->dif_storep) *
3586 struct sdeb_store_info *sip = devip2sip(devip, true);
3641 sdeb_write_lock(sip);
3644 sdeb_write_unlock(sip);
3653 sdeb_write_unlock(sip);
3657 sdeb_write_unlock(sip);
3664 sdeb_write_unlock(sip);
3668 sdeb_write_unlock(sip);
3676 ret = do_device_access(sip, scp, 0, lba, num, true);
3678 map_region(sip, lba, num);
3682 sdeb_write_unlock(sip);
3721 struct sdeb_store_info *sip = devip2sip(devip, true);
3789 sdeb_write_lock(sip);
3832 ret = do_device_access(sip, scp, sg_off, lba, num, true);
3837 map_region(sip, lba, num);
3871 sdeb_write_unlock(sip);
3886 struct sdeb_store_info *sip = devip2sip((struct sdebug_dev_info *)
3891 sdeb_write_lock(sip);
3895 sdeb_write_unlock(sip);
3900 unmap_region(sip, lba, num);
3906 fsp = sip->storep;
3915 sdeb_write_unlock(sip);
3929 map_region(sip, lba, num);
3934 sdeb_write_unlock(sip);
4046 struct sdeb_store_info *sip = devip2sip(devip, true);
4079 sdeb_write_lock(sip);
4089 if (!comp_write_worker(sip, lba, num, arr, false)) {
4095 map_region(sip, lba, num);
4097 sdeb_write_unlock(sip);
4112 struct sdeb_store_info *sip = devip2sip(devip, true);
4141 sdeb_write_lock(sip);
4151 unmap_region(sip, lba, num);
4157 sdeb_write_unlock(sip);
4185 struct sdeb_store_info *sip = devip2sip(devip, true);
4187 mapped = map_state(sip, lba, &num);
4248 struct sdeb_store_info *sip = devip2sip(devip, true);
4249 u8 *fsp = sip->storep;
4270 sdeb_read_lock(sip);
4275 sdeb_read_unlock(sip);
4395 struct sdeb_store_info *sip = devip2sip(devip, true);
4434 sdeb_read_lock(sip);
4450 if (!comp_write_worker(sip, lba, vnum, arr, true)) {
4456 sdeb_read_unlock(sip);
4475 struct sdeb_store_info *sip = devip2sip(devip, false);
4502 sdeb_read_lock(sip);
4600 sdeb_read_unlock(sip);
4625 struct sdeb_store_info *sip = devip2sip(devip, false);
4632 sdeb_write_lock(sip);
4681 sdeb_write_unlock(sip);
4701 struct sdeb_store_info *sip = devip2sip(devip, false);
4708 sdeb_write_lock(sip);
4737 sdeb_write_unlock(sip);
4773 struct sdeb_store_info *sip = devip2sip(devip, false);
4780 sdeb_write_lock(sip);
4809 sdeb_write_unlock(sip);
4817 struct sdeb_store_info *sip = devip2sip(devip, false);
4830 memset(sip->storep + zsp->z_start * sdebug_sector_size, 0,
4853 struct sdeb_store_info *sip = devip2sip(devip, false);
4860 sdeb_write_lock(sip);
4888 sdeb_write_unlock(sip);
5969 struct sdeb_store_info *sip;
5982 xa_for_each(per_store_ap, l_idx, sip) {
6487 struct sdeb_store_info *sip;
6497 xa_for_each_marked(per_store_ap, idx, sip,
6604 struct sdeb_store_info *sip = xa_load(per_store_ap, 0);
6606 if (sip)
6608 (int)map_size, sip->map_storep);
7073 /* idx must be valid, if sip is NULL then it will be obtained using idx */
7074 static void sdebug_erase_store(int idx, struct sdeb_store_info *sip)
7078 if (!sip) {
7081 sip = xa_load(per_store_ap, idx);
7082 if (!sip)
7085 vfree(sip->map_storep);
7086 vfree(sip->dif_storep);
7087 vfree(sip->storep);
7089 kfree(sip);
7096 struct sdeb_store_info *sip = NULL;
7098 xa_for_each(per_store_ap, idx, sip) {
7102 sdebug_erase_store(idx, sip);
7118 struct sdeb_store_info *sip = NULL;
7121 sip = kzalloc(sizeof(*sip), GFP_KERNEL);
7122 if (!sip)
7126 res = __xa_alloc(per_store_ap, &n_idx, sip, xal, GFP_ATOMIC);
7129 kfree(sip);
7139 sip->storep = vzalloc(sz);
7140 if (!sip->storep) {
7145 sdebug_build_parts(sip->storep, sz);
7152 sip->dif_storep = vmalloc(dif_size);
7155 sip->dif_storep);
7157 if (!sip->dif_storep) {
7161 memset(sip->dif_storep, 0xff, dif_size);
7166 sip->map_storep = vmalloc(array_size(sizeof(long),
7171 if (!sip->map_storep) {
7176 bitmap_zero(sip->map_storep, map_size);
7180 map_region(sip, 0, 2);
7183 rwlock_init(&sip->macc_lck);
7186 sdebug_erase_store((int)n_idx, sip);