Lines Matching refs:pr_reg

44 	struct t10_pr_registration *pr_reg,  in core_pr_dump_initiator_port()  argument
48 if (!pr_reg->isid_present_at_reg) { in core_pr_dump_initiator_port()
53 snprintf(buf, size, ",i,0x%s", pr_reg->pr_reg_isid); in core_pr_dump_initiator_port()
72 struct t10_pr_registration *pr_reg) in is_reservation_holder() argument
79 return pr_res_holder == pr_reg || in is_reservation_holder()
123 struct t10_pr_registration *pr_reg; in target_check_scsi2_reservation_conflict() local
127 pr_reg = core_scsi3_locate_pr_reg(cmd->se_dev, se_sess->se_node_acl, in target_check_scsi2_reservation_conflict()
129 if (pr_reg) { in target_check_scsi2_reservation_conflict()
151 if (pr_reg->pr_res_holder) { in target_check_scsi2_reservation_conflict()
152 core_scsi3_put_pr_reg(pr_reg); in target_check_scsi2_reservation_conflict()
155 if ((pr_reg->pr_res_type == PR_TYPE_WRITE_EXCLUSIVE_REGONLY) || in target_check_scsi2_reservation_conflict()
156 (pr_reg->pr_res_type == PR_TYPE_EXCLUSIVE_ACCESS_REGONLY) || in target_check_scsi2_reservation_conflict()
157 (pr_reg->pr_res_type == PR_TYPE_WRITE_EXCLUSIVE_ALLREG) || in target_check_scsi2_reservation_conflict()
158 (pr_reg->pr_res_type == PR_TYPE_EXCLUSIVE_ACCESS_ALLREG)) { in target_check_scsi2_reservation_conflict()
159 core_scsi3_put_pr_reg(pr_reg); in target_check_scsi2_reservation_conflict()
162 core_scsi3_put_pr_reg(pr_reg); in target_check_scsi2_reservation_conflict()
627 struct t10_pr_registration *pr_reg; in __core_scsi3_do_alloc_registration() local
629 pr_reg = kmem_cache_zalloc(t10_pr_reg_cache, GFP_ATOMIC); in __core_scsi3_do_alloc_registration()
630 if (!pr_reg) { in __core_scsi3_do_alloc_registration()
635 INIT_LIST_HEAD(&pr_reg->pr_reg_list); in __core_scsi3_do_alloc_registration()
636 INIT_LIST_HEAD(&pr_reg->pr_reg_abort_list); in __core_scsi3_do_alloc_registration()
637 INIT_LIST_HEAD(&pr_reg->pr_reg_aptpl_list); in __core_scsi3_do_alloc_registration()
638 INIT_LIST_HEAD(&pr_reg->pr_reg_atp_list); in __core_scsi3_do_alloc_registration()
639 INIT_LIST_HEAD(&pr_reg->pr_reg_atp_mem_list); in __core_scsi3_do_alloc_registration()
640 atomic_set(&pr_reg->pr_res_holders, 0); in __core_scsi3_do_alloc_registration()
641 pr_reg->pr_reg_nacl = nacl; in __core_scsi3_do_alloc_registration()
651 pr_reg->pr_reg_deve = dest_deve; in __core_scsi3_do_alloc_registration()
654 pr_reg->pr_reg_deve = target_nacl_find_deve(nacl, mapped_lun); in __core_scsi3_do_alloc_registration()
655 if (!pr_reg->pr_reg_deve) { in __core_scsi3_do_alloc_registration()
659 kmem_cache_free(t10_pr_reg_cache, pr_reg); in __core_scsi3_do_alloc_registration()
662 kref_get(&pr_reg->pr_reg_deve->pr_kref); in __core_scsi3_do_alloc_registration()
665 pr_reg->pr_res_mapped_lun = mapped_lun; in __core_scsi3_do_alloc_registration()
666 pr_reg->pr_aptpl_target_lun = lun->unpacked_lun; in __core_scsi3_do_alloc_registration()
667 pr_reg->tg_pt_sep_rtpi = lun->lun_tpg->tpg_rtpi; in __core_scsi3_do_alloc_registration()
668 pr_reg->pr_res_key = sa_res_key; in __core_scsi3_do_alloc_registration()
669 pr_reg->pr_reg_all_tg_pt = all_tg_pt; in __core_scsi3_do_alloc_registration()
670 pr_reg->pr_reg_aptpl = aptpl; in __core_scsi3_do_alloc_registration()
676 pr_reg->pr_reg_bin_isid = get_unaligned_be64(isid); in __core_scsi3_do_alloc_registration()
677 snprintf(pr_reg->pr_reg_isid, PR_REG_ISID_LEN, "%s", isid); in __core_scsi3_do_alloc_registration()
678 pr_reg->isid_present_at_reg = 1; in __core_scsi3_do_alloc_registration()
681 return pr_reg; in __core_scsi3_do_alloc_registration()
707 struct t10_pr_registration *pr_reg, *pr_reg_atp, *pr_reg_tmp, *pr_reg_tmp_safe; in __core_scsi3_alloc_registration() local
713 pr_reg = __core_scsi3_do_alloc_registration(dev, nacl, lun, deve, mapped_lun, in __core_scsi3_alloc_registration()
716 if (!pr_reg) in __core_scsi3_alloc_registration()
722 return pr_reg; in __core_scsi3_alloc_registration()
800 &pr_reg->pr_reg_atp_list); in __core_scsi3_alloc_registration()
810 return pr_reg; in __core_scsi3_alloc_registration()
813 &pr_reg->pr_reg_atp_list, pr_reg_atp_mem_list) { in __core_scsi3_alloc_registration()
818 kmem_cache_free(t10_pr_reg_cache, pr_reg); in __core_scsi3_alloc_registration()
835 struct t10_pr_registration *pr_reg; in core_scsi3_alloc_aptpl_registration() local
842 pr_reg = kmem_cache_zalloc(t10_pr_reg_cache, GFP_KERNEL); in core_scsi3_alloc_aptpl_registration()
843 if (!pr_reg) { in core_scsi3_alloc_aptpl_registration()
848 INIT_LIST_HEAD(&pr_reg->pr_reg_list); in core_scsi3_alloc_aptpl_registration()
849 INIT_LIST_HEAD(&pr_reg->pr_reg_abort_list); in core_scsi3_alloc_aptpl_registration()
850 INIT_LIST_HEAD(&pr_reg->pr_reg_aptpl_list); in core_scsi3_alloc_aptpl_registration()
851 INIT_LIST_HEAD(&pr_reg->pr_reg_atp_list); in core_scsi3_alloc_aptpl_registration()
852 INIT_LIST_HEAD(&pr_reg->pr_reg_atp_mem_list); in core_scsi3_alloc_aptpl_registration()
853 atomic_set(&pr_reg->pr_res_holders, 0); in core_scsi3_alloc_aptpl_registration()
854 pr_reg->pr_reg_nacl = NULL; in core_scsi3_alloc_aptpl_registration()
855 pr_reg->pr_reg_deve = NULL; in core_scsi3_alloc_aptpl_registration()
856 pr_reg->pr_res_mapped_lun = mapped_lun; in core_scsi3_alloc_aptpl_registration()
857 pr_reg->pr_aptpl_target_lun = target_lun; in core_scsi3_alloc_aptpl_registration()
858 pr_reg->pr_res_key = sa_res_key; in core_scsi3_alloc_aptpl_registration()
859 pr_reg->pr_reg_all_tg_pt = all_tg_pt; in core_scsi3_alloc_aptpl_registration()
860 pr_reg->pr_reg_aptpl = 1; in core_scsi3_alloc_aptpl_registration()
861 pr_reg->pr_res_scope = 0; /* Always LUN_SCOPE */ in core_scsi3_alloc_aptpl_registration()
862 pr_reg->pr_res_type = type; in core_scsi3_alloc_aptpl_registration()
868 pr_reg->pr_reg_bin_isid = get_unaligned_be64(isid); in core_scsi3_alloc_aptpl_registration()
869 snprintf(pr_reg->pr_reg_isid, PR_REG_ISID_LEN, "%s", isid); in core_scsi3_alloc_aptpl_registration()
870 pr_reg->isid_present_at_reg = 1; in core_scsi3_alloc_aptpl_registration()
875 snprintf(pr_reg->pr_iport, PR_APTPL_MAX_IPORT_LEN, "%s", i_port); in core_scsi3_alloc_aptpl_registration()
876 snprintf(pr_reg->pr_tport, PR_APTPL_MAX_TPORT_LEN, "%s", t_port); in core_scsi3_alloc_aptpl_registration()
877 pr_reg->pr_reg_tpgt = tpgt; in core_scsi3_alloc_aptpl_registration()
884 pr_reg->pr_res_holder = res_holder; in core_scsi3_alloc_aptpl_registration()
886 list_add_tail(&pr_reg->pr_reg_aptpl_list, &pr_tmpl->aptpl_reg_list); in core_scsi3_alloc_aptpl_registration()
896 struct t10_pr_registration *pr_reg) in core_scsi3_aptpl_reserve() argument
900 core_pr_dump_initiator_port(pr_reg, i_buf, PR_REG_ISID_ID_LEN); in core_scsi3_aptpl_reserve()
903 dev->dev_pr_res_holder = pr_reg; in core_scsi3_aptpl_reserve()
909 core_scsi3_pr_dump_type(pr_reg->pr_res_type), in core_scsi3_aptpl_reserve()
910 (pr_reg->pr_reg_all_tg_pt) ? 1 : 0); in core_scsi3_aptpl_reserve()
927 struct t10_pr_registration *pr_reg, *pr_reg_tmp; in __core_scsi3_check_aptpl_registration() local
947 list_for_each_entry_safe(pr_reg, pr_reg_tmp, &pr_tmpl->aptpl_reg_list, in __core_scsi3_check_aptpl_registration()
950 if (!strcmp(pr_reg->pr_iport, i_port) && in __core_scsi3_check_aptpl_registration()
951 (pr_reg->pr_res_mapped_lun == mapped_lun) && in __core_scsi3_check_aptpl_registration()
952 !(strcmp(pr_reg->pr_tport, t_port)) && in __core_scsi3_check_aptpl_registration()
953 (pr_reg->pr_reg_tpgt == tpgt) && in __core_scsi3_check_aptpl_registration()
954 (pr_reg->pr_aptpl_target_lun == target_lun)) { in __core_scsi3_check_aptpl_registration()
960 pr_reg->pr_reg_deve = target_nacl_find_deve(nacl, mapped_lun); in __core_scsi3_check_aptpl_registration()
961 if (!pr_reg->pr_reg_deve) { in __core_scsi3_check_aptpl_registration()
967 kref_get(&pr_reg->pr_reg_deve->pr_kref); in __core_scsi3_check_aptpl_registration()
970 pr_reg->pr_reg_nacl = nacl; in __core_scsi3_check_aptpl_registration()
971 pr_reg->tg_pt_sep_rtpi = lun->lun_tpg->tpg_rtpi; in __core_scsi3_check_aptpl_registration()
972 list_del(&pr_reg->pr_reg_aptpl_list); in __core_scsi3_check_aptpl_registration()
978 __core_scsi3_add_registration(dev, nacl, pr_reg, 0, 0); in __core_scsi3_check_aptpl_registration()
983 if (pr_reg->pr_res_holder) in __core_scsi3_check_aptpl_registration()
985 nacl, pr_reg); in __core_scsi3_check_aptpl_registration()
1018 struct t10_pr_registration *pr_reg, in __core_scsi3_dump_registration() argument
1024 core_pr_dump_initiator_port(pr_reg, i_buf, PR_REG_ISID_ID_LEN); in __core_scsi3_dump_registration()
1036 (pr_reg->pr_reg_all_tg_pt) ? "ALL" : "SINGLE", in __core_scsi3_dump_registration()
1040 pr_reg->pr_res_key, pr_reg->pr_res_generation, in __core_scsi3_dump_registration()
1041 pr_reg->pr_reg_aptpl); in __core_scsi3_dump_registration()
1047 struct t10_pr_registration *pr_reg, in __core_scsi3_add_registration() argument
1065 pr_reg->pr_res_generation = (register_move) ? in __core_scsi3_add_registration()
1070 list_add_tail(&pr_reg->pr_reg_list, &pr_tmpl->registration_list); in __core_scsi3_add_registration()
1072 __core_scsi3_dump_registration(tfo, dev, nacl, pr_reg, register_type); in __core_scsi3_add_registration()
1077 if (!pr_reg->pr_reg_all_tg_pt || register_move) in __core_scsi3_add_registration()
1084 &pr_reg->pr_reg_atp_list, pr_reg_atp_mem_list) { in __core_scsi3_add_registration()
1116 deve = pr_reg->pr_reg_deve; in __core_scsi3_add_registration()
1120 pr_reg->pr_reg_deve = NULL; in __core_scsi3_add_registration()
1138 struct t10_pr_registration *pr_reg; in core_scsi3_alloc_registration() local
1140 pr_reg = __core_scsi3_alloc_registration(dev, nacl, lun, deve, mapped_lun, in core_scsi3_alloc_registration()
1143 if (!pr_reg) in core_scsi3_alloc_registration()
1146 __core_scsi3_add_registration(dev, nacl, pr_reg, in core_scsi3_alloc_registration()
1157 struct t10_pr_registration *pr_reg, *pr_reg_tmp; in __core_scsi3_locate_pr_reg() local
1160 list_for_each_entry_safe(pr_reg, pr_reg_tmp, in __core_scsi3_locate_pr_reg()
1165 if (pr_reg->pr_reg_nacl != nacl) in __core_scsi3_locate_pr_reg()
1172 if (!pr_reg->isid_present_at_reg) { in __core_scsi3_locate_pr_reg()
1173 atomic_inc_mb(&pr_reg->pr_res_holders); in __core_scsi3_locate_pr_reg()
1175 return pr_reg; in __core_scsi3_locate_pr_reg()
1184 if (strcmp(isid, pr_reg->pr_reg_isid)) in __core_scsi3_locate_pr_reg()
1187 atomic_inc_mb(&pr_reg->pr_res_holders); in __core_scsi3_locate_pr_reg()
1189 return pr_reg; in __core_scsi3_locate_pr_reg()
1214 static void core_scsi3_put_pr_reg(struct t10_pr_registration *pr_reg) in core_scsi3_put_pr_reg() argument
1216 atomic_dec_mb(&pr_reg->pr_res_holders); in core_scsi3_put_pr_reg()
1221 struct t10_pr_registration *pr_reg) in core_scsi3_check_implicit_release() argument
1223 struct se_node_acl *nacl = pr_reg->pr_reg_nacl; in core_scsi3_check_implicit_release()
1233 if (pr_res_holder == pr_reg) { in core_scsi3_check_implicit_release()
1247 __core_scsi3_complete_pro_release(dev, nacl, pr_reg, 0, 1); in core_scsi3_check_implicit_release()
1255 } else if (pr_reg->pr_reg_all_tg_pt && in core_scsi3_check_implicit_release()
1257 pr_reg->pr_reg_nacl->initiatorname)) && in core_scsi3_check_implicit_release()
1258 (pr_res_holder->pr_res_key == pr_reg->pr_res_key)) { in core_scsi3_check_implicit_release()
1262 " Port\n", pr_reg->pr_res_key); in core_scsi3_check_implicit_release()
1272 struct t10_pr_registration *pr_reg, in __core_scsi3_free_registration() argument
1279 pr_reg->pr_reg_nacl->se_tpg->se_tpg_tfo; in __core_scsi3_free_registration()
1281 struct se_node_acl *nacl = pr_reg->pr_reg_nacl; in __core_scsi3_free_registration()
1287 core_pr_dump_initiator_port(pr_reg, i_buf, PR_REG_ISID_ID_LEN); in __core_scsi3_free_registration()
1289 if (!list_empty(&pr_reg->pr_reg_list)) in __core_scsi3_free_registration()
1290 list_del(&pr_reg->pr_reg_list); in __core_scsi3_free_registration()
1296 core_scsi3_put_pr_reg(pr_reg); in __core_scsi3_free_registration()
1305 while (atomic_read(&pr_reg->pr_res_holders) != 0) { in __core_scsi3_free_registration()
1312 deve = target_nacl_find_deve(nacl, pr_reg->pr_res_mapped_lun); in __core_scsi3_free_registration()
1320 pr_reg->pr_reg_nacl->initiatorname, in __core_scsi3_free_registration()
1324 (pr_reg->pr_reg_all_tg_pt) ? "ALL" : "SINGLE", in __core_scsi3_free_registration()
1327 " 0x%08x\n", tfo->fabric_name, pr_reg->pr_res_key, in __core_scsi3_free_registration()
1328 pr_reg->pr_res_generation); in __core_scsi3_free_registration()
1331 pr_reg->pr_reg_deve = NULL; in __core_scsi3_free_registration()
1332 pr_reg->pr_reg_nacl = NULL; in __core_scsi3_free_registration()
1333 kmem_cache_free(t10_pr_reg_cache, pr_reg); in __core_scsi3_free_registration()
1340 list_add_tail(&pr_reg->pr_reg_abort_list, preempt_and_abort_list); in __core_scsi3_free_registration()
1348 struct t10_pr_registration *pr_reg, *pr_reg_tmp, *pr_res_holder; in core_scsi3_free_pr_reg_from_nacl() local
1369 list_for_each_entry_safe(pr_reg, pr_reg_tmp, in core_scsi3_free_pr_reg_from_nacl()
1372 if (pr_reg->pr_reg_nacl != nacl) in core_scsi3_free_pr_reg_from_nacl()
1375 __core_scsi3_free_registration(dev, pr_reg, NULL, 0); in core_scsi3_free_pr_reg_from_nacl()
1384 struct t10_pr_registration *pr_reg, *pr_reg_tmp, *pr_res_holder; in core_scsi3_free_all_registrations() local
1396 list_for_each_entry_safe(pr_reg, pr_reg_tmp, in core_scsi3_free_all_registrations()
1399 __core_scsi3_free_registration(dev, pr_reg, NULL, 0); in core_scsi3_free_all_registrations()
1404 list_for_each_entry_safe(pr_reg, pr_reg_tmp, &pr_tmpl->aptpl_reg_list, in core_scsi3_free_all_registrations()
1406 list_del(&pr_reg->pr_reg_aptpl_list); in core_scsi3_free_all_registrations()
1407 kmem_cache_free(t10_pr_reg_cache, pr_reg); in core_scsi3_free_all_registrations()
1865 struct t10_pr_registration *pr_reg; in core_scsi3_update_aptpl_buf() local
1876 list_for_each_entry(pr_reg, &dev->t10_pr.registration_list, in core_scsi3_update_aptpl_buf()
1881 tpg = pr_reg->pr_reg_nacl->se_tpg; in core_scsi3_update_aptpl_buf()
1886 if (pr_reg->isid_present_at_reg) in core_scsi3_update_aptpl_buf()
1888 pr_reg->pr_reg_isid); in core_scsi3_update_aptpl_buf()
1893 if (dev->dev_pr_res_holder == pr_reg) { in core_scsi3_update_aptpl_buf()
1902 pr_reg->pr_reg_nacl->initiatorname, isid_buf, in core_scsi3_update_aptpl_buf()
1903 pr_reg->pr_res_key, pr_reg->pr_res_type, in core_scsi3_update_aptpl_buf()
1904 pr_reg->pr_res_scope, pr_reg->pr_reg_all_tg_pt, in core_scsi3_update_aptpl_buf()
1905 pr_reg->pr_res_mapped_lun); in core_scsi3_update_aptpl_buf()
1912 pr_reg->pr_reg_nacl->initiatorname, isid_buf, in core_scsi3_update_aptpl_buf()
1913 pr_reg->pr_res_key, pr_reg->pr_reg_all_tg_pt, in core_scsi3_update_aptpl_buf()
1914 pr_reg->pr_res_mapped_lun); in core_scsi3_update_aptpl_buf()
1933 pr_reg->tg_pt_sep_rtpi, pr_reg->pr_aptpl_target_lun, in core_scsi3_update_aptpl_buf()
2046 struct t10_pr_registration *pr_reg, *pr_reg_p, *pr_reg_tmp; in core_scsi3_emulate_pro_register() local
2067 pr_reg = core_scsi3_locate_pr_reg(dev, se_sess->se_node_acl, se_sess); in core_scsi3_emulate_pro_register()
2068 if (!pr_reg) { in core_scsi3_emulate_pro_register()
2114 if ((register_type == REGISTER) && (res_key != pr_reg->pr_res_key)) { in core_scsi3_emulate_pro_register()
2119 pr_reg->pr_res_key); in core_scsi3_emulate_pro_register()
2135 if (pr_reg->pr_reg_all_tg_pt && !all_tg_pt) { in core_scsi3_emulate_pro_register()
2152 pr_reg->pr_res_generation = core_scsi3_pr_generation(cmd->se_dev); in core_scsi3_emulate_pro_register()
2153 pr_reg->pr_res_key = sa_res_key; in core_scsi3_emulate_pro_register()
2158 pr_reg->pr_reg_nacl->initiatorname, in core_scsi3_emulate_pro_register()
2159 pr_reg->pr_res_key, pr_reg->pr_res_generation); in core_scsi3_emulate_pro_register()
2165 type = pr_reg->pr_res_type; in core_scsi3_emulate_pro_register()
2167 pr_reg); in core_scsi3_emulate_pro_register()
2178 if (pr_reg->pr_reg_all_tg_pt) { in core_scsi3_emulate_pro_register()
2187 if (pr_reg == pr_reg_p) in core_scsi3_emulate_pro_register()
2189 if (strcmp(pr_reg->pr_reg_nacl->initiatorname, in core_scsi3_emulate_pro_register()
2201 __core_scsi3_free_registration(cmd->se_dev, pr_reg, NULL, 1); in core_scsi3_emulate_pro_register()
2202 pr_reg = NULL; in core_scsi3_emulate_pro_register()
2236 if (pr_reg) in core_scsi3_emulate_pro_register()
2237 core_scsi3_put_pr_reg(pr_reg); in core_scsi3_emulate_pro_register()
2269 struct t10_pr_registration *pr_reg, *pr_res_holder; in core_scsi3_pro_reserve() local
2281 pr_reg = core_scsi3_locate_pr_reg(cmd->se_dev, se_sess->se_node_acl, in core_scsi3_pro_reserve()
2283 if (!pr_reg) { in core_scsi3_pro_reserve()
2297 if (res_key != pr_reg->pr_res_key) { in core_scsi3_pro_reserve()
2300 " 0x%016Lx\n", res_key, pr_reg->pr_res_key); in core_scsi3_pro_reserve()
2337 if (!is_reservation_holder(pr_res_holder, pr_reg)) { in core_scsi3_pro_reserve()
2392 pr_reg->pr_res_scope = scope; in core_scsi3_pro_reserve()
2393 pr_reg->pr_res_type = type; in core_scsi3_pro_reserve()
2394 pr_reg->pr_res_holder = 1; in core_scsi3_pro_reserve()
2395 dev->dev_pr_res_holder = pr_reg; in core_scsi3_pro_reserve()
2396 core_pr_dump_initiator_port(pr_reg, i_buf, PR_REG_ISID_ID_LEN); in core_scsi3_pro_reserve()
2401 (pr_reg->pr_reg_all_tg_pt) ? 1 : 0); in core_scsi3_pro_reserve()
2413 core_scsi3_put_pr_reg(pr_reg); in core_scsi3_pro_reserve()
2439 struct t10_pr_registration *pr_reg, in __core_scsi3_complete_pro_release() argument
2449 core_pr_dump_initiator_port(pr_reg, i_buf, PR_REG_ISID_ID_LEN); in __core_scsi3_complete_pro_release()
2468 list_del_init(&pr_reg->pr_reg_list); in __core_scsi3_complete_pro_release()
2492 (pr_reg->pr_reg_all_tg_pt) ? 1 : 0); in __core_scsi3_complete_pro_release()
2500 pr_reg->pr_res_holder = pr_reg->pr_res_type = pr_reg->pr_res_scope = 0; in __core_scsi3_complete_pro_release()
2510 struct t10_pr_registration *pr_reg, *pr_reg_p, *pr_res_holder; in core_scsi3_emulate_pro_release() local
2521 pr_reg = core_scsi3_locate_pr_reg(dev, se_sess->se_node_acl, se_sess); in core_scsi3_emulate_pro_release()
2522 if (!pr_reg) { in core_scsi3_emulate_pro_release()
2549 if (!is_reservation_holder(pr_res_holder, pr_reg)) { in core_scsi3_emulate_pro_release()
2572 if (res_key != pr_reg->pr_res_key) { in core_scsi3_emulate_pro_release()
2575 " 0x%016Lx\n", res_key, pr_reg->pr_res_key); in core_scsi3_emulate_pro_release()
2619 pr_reg, 1, 0); in core_scsi3_emulate_pro_release()
2642 if (pr_reg_p == pr_reg) in core_scsi3_emulate_pro_release()
2656 core_scsi3_put_pr_reg(pr_reg); in core_scsi3_emulate_pro_release()
2667 struct t10_pr_registration *pr_reg, *pr_reg_tmp, *pr_reg_n, *pr_res_holder; in core_scsi3_emulate_pro_clear() local
2714 list_for_each_entry_safe(pr_reg, pr_reg_tmp, in core_scsi3_emulate_pro_clear()
2717 calling_it_nexus = (pr_reg_n == pr_reg) ? 1 : 0; in core_scsi3_emulate_pro_clear()
2718 pr_reg_nacl = pr_reg->pr_reg_nacl; in core_scsi3_emulate_pro_clear()
2719 pr_res_mapped_lun = pr_reg->pr_res_mapped_lun; in core_scsi3_emulate_pro_clear()
2720 __core_scsi3_free_registration(dev, pr_reg, NULL, in core_scsi3_emulate_pro_clear()
2746 struct t10_pr_registration *pr_reg, in __core_scsi3_complete_pro_preempt() argument
2752 struct se_node_acl *nacl = pr_reg->pr_reg_nacl; in __core_scsi3_complete_pro_preempt()
2758 core_pr_dump_initiator_port(pr_reg, i_buf, PR_REG_ISID_ID_LEN); in __core_scsi3_complete_pro_preempt()
2766 dev->dev_pr_res_holder = pr_reg; in __core_scsi3_complete_pro_preempt()
2767 pr_reg->pr_res_holder = 1; in __core_scsi3_complete_pro_preempt()
2768 pr_reg->pr_res_type = type; in __core_scsi3_complete_pro_preempt()
2769 pr_reg->pr_res_scope = scope; in __core_scsi3_complete_pro_preempt()
2775 (pr_reg->pr_reg_all_tg_pt) ? 1 : 0); in __core_scsi3_complete_pro_preempt()
2785 list_add_tail(&pr_reg->pr_reg_abort_list, in __core_scsi3_complete_pro_preempt()
2793 struct t10_pr_registration *pr_reg, *pr_reg_tmp; in core_scsi3_release_preempt_and_abort() local
2795 list_for_each_entry_safe(pr_reg, pr_reg_tmp, preempt_and_abort_list, in core_scsi3_release_preempt_and_abort()
2798 list_del(&pr_reg->pr_reg_abort_list); in core_scsi3_release_preempt_and_abort()
2799 if (pr_reg_holder == pr_reg) in core_scsi3_release_preempt_and_abort()
2801 if (pr_reg->pr_res_holder) { in core_scsi3_release_preempt_and_abort()
2806 pr_reg->pr_reg_deve = NULL; in core_scsi3_release_preempt_and_abort()
2807 pr_reg->pr_reg_nacl = NULL; in core_scsi3_release_preempt_and_abort()
2808 kmem_cache_free(t10_pr_reg_cache, pr_reg); in core_scsi3_release_preempt_and_abort()
2820 struct t10_pr_registration *pr_reg, *pr_reg_tmp, *pr_reg_n, *pr_res_holder; in core_scsi3_pro_preempt() local
2877 list_for_each_entry_safe(pr_reg, pr_reg_tmp, in core_scsi3_pro_preempt()
2897 if (pr_reg->pr_res_key != sa_res_key) in core_scsi3_pro_preempt()
2901 calling_it_nexus = (pr_reg_n == pr_reg) ? 1 : 0; in core_scsi3_pro_preempt()
2902 pr_reg_nacl = pr_reg->pr_reg_nacl; in core_scsi3_pro_preempt()
2903 pr_res_mapped_lun = pr_reg->pr_res_mapped_lun; in core_scsi3_pro_preempt()
2904 __core_scsi3_free_registration(dev, pr_reg, in core_scsi3_pro_preempt()
2922 (pr_reg->pr_res_key != sa_res_key)) in core_scsi3_pro_preempt()
2926 calling_it_nexus = (pr_reg_n == pr_reg) ? 1 : 0; in core_scsi3_pro_preempt()
2930 pr_reg_nacl = pr_reg->pr_reg_nacl; in core_scsi3_pro_preempt()
2931 pr_res_mapped_lun = pr_reg->pr_res_mapped_lun; in core_scsi3_pro_preempt()
2932 __core_scsi3_free_registration(dev, pr_reg, in core_scsi3_pro_preempt()
3037 list_for_each_entry_safe(pr_reg, pr_reg_tmp, in core_scsi3_pro_preempt()
3040 calling_it_nexus = (pr_reg_n == pr_reg) ? 1 : 0; in core_scsi3_pro_preempt()
3044 if (sa_res_key && pr_reg->pr_res_key != sa_res_key) in core_scsi3_pro_preempt()
3047 pr_reg_nacl = pr_reg->pr_reg_nacl; in core_scsi3_pro_preempt()
3048 pr_res_mapped_lun = pr_reg->pr_res_mapped_lun; in core_scsi3_pro_preempt()
3049 __core_scsi3_free_registration(dev, pr_reg, in core_scsi3_pro_preempt()
3084 list_for_each_entry_safe(pr_reg, pr_reg_tmp, in core_scsi3_pro_preempt()
3087 calling_it_nexus = (pr_reg_n == pr_reg) ? 1 : 0; in core_scsi3_pro_preempt()
3091 target_ua_allocate_lun(pr_reg->pr_reg_nacl, in core_scsi3_pro_preempt()
3092 pr_reg->pr_res_mapped_lun, 0x2A, in core_scsi3_pro_preempt()
3154 struct t10_pr_registration *pr_reg, *pr_res_holder, *dest_pr_reg; in core_scsi3_emulate_pro_register_and_move() local
3179 pr_reg = core_scsi3_locate_pr_reg(cmd->se_dev, se_sess->se_node_acl, in core_scsi3_emulate_pro_register_and_move()
3181 if (!pr_reg) { in core_scsi3_emulate_pro_register_and_move()
3190 if (res_key != pr_reg->pr_res_key) { in core_scsi3_emulate_pro_register_and_move()
3193 " res_key: 0x%016Lx\n", res_key, pr_reg->pr_res_key); in core_scsi3_emulate_pro_register_and_move()
3307 pr_reg_nacl = pr_reg->pr_reg_nacl; in core_scsi3_emulate_pro_register_and_move()
3313 if (!iport_ptr || !pr_reg->isid_present_at_reg) { in core_scsi3_emulate_pro_register_and_move()
3320 if (!strcmp(iport_ptr, pr_reg->pr_reg_isid)) { in core_scsi3_emulate_pro_register_and_move()
3324 pr_reg->pr_reg_isid); in core_scsi3_emulate_pro_register_and_move()
3404 if (!is_reservation_holder(pr_res_holder, pr_reg)) { in core_scsi3_emulate_pro_register_and_move()
3490 pr_reg->pr_res_scope = scope; in core_scsi3_emulate_pro_register_and_move()
3491 core_pr_dump_initiator_port(pr_reg, i_buf, PR_REG_ISID_ID_LEN); in core_scsi3_emulate_pro_register_and_move()
3523 __core_scsi3_free_registration(dev, pr_reg, NULL, 1); in core_scsi3_emulate_pro_register_and_move()
3526 core_scsi3_put_pr_reg(pr_reg); in core_scsi3_emulate_pro_register_and_move()
3542 core_scsi3_put_pr_reg(pr_reg); in core_scsi3_emulate_pro_register_and_move()
3742 struct t10_pr_registration *pr_reg; in core_scsi3_pri_read_keys() local
3759 list_for_each_entry(pr_reg, &dev->t10_pr.registration_list, in core_scsi3_pri_read_keys()
3766 put_unaligned_be64(pr_reg->pr_res_key, &buf[off]); in core_scsi3_pri_read_keys()
3796 struct t10_pr_registration *pr_reg; in core_scsi3_pri_read_reservation() local
3814 pr_reg = dev->dev_pr_res_holder; in core_scsi3_pri_read_reservation()
3815 if (pr_reg) { in core_scsi3_pri_read_reservation()
3841 if ((pr_reg->pr_res_type == PR_TYPE_WRITE_EXCLUSIVE_ALLREG) || in core_scsi3_pri_read_reservation()
3842 (pr_reg->pr_res_type == PR_TYPE_EXCLUSIVE_ACCESS_ALLREG)) in core_scsi3_pri_read_reservation()
3845 pr_res_key = pr_reg->pr_res_key; in core_scsi3_pri_read_reservation()
3851 buf[21] = (pr_reg->pr_res_scope & 0xf0) | in core_scsi3_pri_read_reservation()
3852 (pr_reg->pr_res_type & 0x0f); in core_scsi3_pri_read_reservation()
3934 struct t10_pr_registration *pr_reg, *pr_reg_tmp; in core_scsi3_pri_read_full_status() local
3969 list_for_each_entry_safe(pr_reg, pr_reg_tmp, in core_scsi3_pri_read_full_status()
3972 se_nacl = pr_reg->pr_reg_nacl; in core_scsi3_pri_read_full_status()
3973 se_tpg = pr_reg->pr_reg_nacl->se_tpg; in core_scsi3_pri_read_full_status()
3976 atomic_inc_mb(&pr_reg->pr_res_holders); in core_scsi3_pri_read_full_status()
3982 exp_desc_len = target_get_pr_transport_id_len(se_nacl, pr_reg, in core_scsi3_pri_read_full_status()
3989 atomic_dec_mb(&pr_reg->pr_res_holders); in core_scsi3_pri_read_full_status()
3995 put_unaligned_be64(pr_reg->pr_res_key, &buf[off]); in core_scsi3_pri_read_full_status()
4002 if (pr_reg->pr_reg_all_tg_pt) in core_scsi3_pri_read_full_status()
4012 if (pr_reg->pr_res_holder) { in core_scsi3_pri_read_full_status()
4014 buf[off++] = (pr_reg->pr_res_scope & 0xf0) | in core_scsi3_pri_read_full_status()
4015 (pr_reg->pr_res_type & 0x0f); in core_scsi3_pri_read_full_status()
4035 if (!pr_reg->pr_reg_all_tg_pt) { in core_scsi3_pri_read_full_status()
4036 u16 sep_rtpi = pr_reg->tg_pt_sep_rtpi; in core_scsi3_pri_read_full_status()
4048 desc_len = target_get_pr_transport_id(se_nacl, pr_reg, in core_scsi3_pri_read_full_status()
4052 atomic_dec_mb(&pr_reg->pr_res_holders); in core_scsi3_pri_read_full_status()