• Home
  • Raw
  • Download

Lines Matching refs:tpg

27 	struct iscsi_portal_group *tpg;  in iscsit_alloc_portal_group()  local
29 tpg = kzalloc(sizeof(struct iscsi_portal_group), GFP_KERNEL); in iscsit_alloc_portal_group()
30 if (!tpg) { in iscsit_alloc_portal_group()
35 tpg->tpgt = tpgt; in iscsit_alloc_portal_group()
36 tpg->tpg_state = TPG_STATE_FREE; in iscsit_alloc_portal_group()
37 tpg->tpg_tiqn = tiqn; in iscsit_alloc_portal_group()
38 INIT_LIST_HEAD(&tpg->tpg_gnp_list); in iscsit_alloc_portal_group()
39 INIT_LIST_HEAD(&tpg->tpg_list); in iscsit_alloc_portal_group()
40 mutex_init(&tpg->tpg_access_lock); in iscsit_alloc_portal_group()
41 sema_init(&tpg->np_login_sem, 1); in iscsit_alloc_portal_group()
42 spin_lock_init(&tpg->tpg_state_lock); in iscsit_alloc_portal_group()
43 spin_lock_init(&tpg->tpg_np_lock); in iscsit_alloc_portal_group()
45 return tpg; in iscsit_alloc_portal_group()
53 struct iscsi_portal_group *tpg; in iscsit_load_discovery_tpg() local
56 tpg = iscsit_alloc_portal_group(NULL, 1); in iscsit_load_discovery_tpg()
57 if (!tpg) { in iscsit_load_discovery_tpg()
65 tpg->tpg_se_tpg.se_tpg_tfo = &iscsi_ops; in iscsit_load_discovery_tpg()
66 ret = core_tpg_register(NULL, &tpg->tpg_se_tpg, -1); in iscsit_load_discovery_tpg()
68 kfree(tpg); in iscsit_load_discovery_tpg()
72 tpg->sid = 1; /* First Assigned LIO Session ID */ in iscsit_load_discovery_tpg()
73 iscsit_set_default_tpg_attribs(tpg); in iscsit_load_discovery_tpg()
75 if (iscsi_create_default_params(&tpg->param_list) < 0) in iscsit_load_discovery_tpg()
83 param = iscsi_find_param_from_key(AUTHMETHOD, tpg->param_list); in iscsit_load_discovery_tpg()
90 tpg->tpg_attrib.authentication = 0; in iscsit_load_discovery_tpg()
92 spin_lock(&tpg->tpg_state_lock); in iscsit_load_discovery_tpg()
93 tpg->tpg_state = TPG_STATE_ACTIVE; in iscsit_load_discovery_tpg()
94 spin_unlock(&tpg->tpg_state_lock); in iscsit_load_discovery_tpg()
96 iscsit_global->discovery_tpg = tpg; in iscsit_load_discovery_tpg()
101 iscsi_release_param_list(tpg->param_list); in iscsit_load_discovery_tpg()
103 if (tpg->sid == 1) in iscsit_load_discovery_tpg()
104 core_tpg_deregister(&tpg->tpg_se_tpg); in iscsit_load_discovery_tpg()
105 kfree(tpg); in iscsit_load_discovery_tpg()
111 struct iscsi_portal_group *tpg = iscsit_global->discovery_tpg; in iscsit_release_discovery_tpg() local
113 if (!tpg) in iscsit_release_discovery_tpg()
116 iscsi_release_param_list(tpg->param_list); in iscsit_release_discovery_tpg()
117 core_tpg_deregister(&tpg->tpg_se_tpg); in iscsit_release_discovery_tpg()
119 kfree(tpg); in iscsit_release_discovery_tpg()
128 struct iscsi_portal_group *tpg = NULL; in iscsit_get_tpg_from_np() local
132 list_for_each_entry(tpg, &tiqn->tiqn_tpg_list, tpg_list) { in iscsit_get_tpg_from_np()
134 spin_lock(&tpg->tpg_state_lock); in iscsit_get_tpg_from_np()
135 if (tpg->tpg_state != TPG_STATE_ACTIVE) { in iscsit_get_tpg_from_np()
136 spin_unlock(&tpg->tpg_state_lock); in iscsit_get_tpg_from_np()
139 spin_unlock(&tpg->tpg_state_lock); in iscsit_get_tpg_from_np()
141 spin_lock(&tpg->tpg_np_lock); in iscsit_get_tpg_from_np()
142 list_for_each_entry(tpg_np, &tpg->tpg_gnp_list, tpg_np_list) { in iscsit_get_tpg_from_np()
146 spin_unlock(&tpg->tpg_np_lock); in iscsit_get_tpg_from_np()
148 return tpg; in iscsit_get_tpg_from_np()
151 spin_unlock(&tpg->tpg_np_lock); in iscsit_get_tpg_from_np()
159 struct iscsi_portal_group *tpg) in iscsit_get_tpg() argument
161 return mutex_lock_interruptible(&tpg->tpg_access_lock); in iscsit_get_tpg()
164 void iscsit_put_tpg(struct iscsi_portal_group *tpg) in iscsit_put_tpg() argument
166 mutex_unlock(&tpg->tpg_access_lock); in iscsit_put_tpg()
171 struct iscsi_portal_group *tpg, in iscsit_clear_tpg_np_login_thread() argument
181 iscsit_reset_np_thread(tpg_np->tpg_np, tpg_np, tpg, shutdown); in iscsit_clear_tpg_np_login_thread()
185 struct iscsi_portal_group *tpg, in iscsit_clear_tpg_np_login_threads() argument
190 spin_lock(&tpg->tpg_np_lock); in iscsit_clear_tpg_np_login_threads()
191 list_for_each_entry(tpg_np, &tpg->tpg_gnp_list, tpg_np_list) { in iscsit_clear_tpg_np_login_threads()
196 spin_unlock(&tpg->tpg_np_lock); in iscsit_clear_tpg_np_login_threads()
197 iscsit_clear_tpg_np_login_thread(tpg_np, tpg, shutdown); in iscsit_clear_tpg_np_login_threads()
198 spin_lock(&tpg->tpg_np_lock); in iscsit_clear_tpg_np_login_threads()
200 spin_unlock(&tpg->tpg_np_lock); in iscsit_clear_tpg_np_login_threads()
203 void iscsit_tpg_dump_params(struct iscsi_portal_group *tpg) in iscsit_tpg_dump_params() argument
205 iscsi_print_params(tpg->param_list); in iscsit_tpg_dump_params()
208 static void iscsit_set_default_tpg_attribs(struct iscsi_portal_group *tpg) in iscsit_set_default_tpg_attribs() argument
210 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_set_default_tpg_attribs()
228 int iscsit_tpg_add_portal_group(struct iscsi_tiqn *tiqn, struct iscsi_portal_group *tpg) in iscsit_tpg_add_portal_group() argument
230 if (tpg->tpg_state != TPG_STATE_FREE) { in iscsit_tpg_add_portal_group()
232 " while not in TPG_STATE_FREE state.\n", tpg->tpgt); in iscsit_tpg_add_portal_group()
235 iscsit_set_default_tpg_attribs(tpg); in iscsit_tpg_add_portal_group()
237 if (iscsi_create_default_params(&tpg->param_list) < 0) in iscsit_tpg_add_portal_group()
240 tpg->tpg_attrib.tpg = tpg; in iscsit_tpg_add_portal_group()
242 spin_lock(&tpg->tpg_state_lock); in iscsit_tpg_add_portal_group()
243 tpg->tpg_state = TPG_STATE_INACTIVE; in iscsit_tpg_add_portal_group()
244 spin_unlock(&tpg->tpg_state_lock); in iscsit_tpg_add_portal_group()
247 list_add_tail(&tpg->tpg_list, &tiqn->tiqn_tpg_list); in iscsit_tpg_add_portal_group()
250 tiqn->tiqn, tpg->tpgt); in iscsit_tpg_add_portal_group()
255 if (tpg->param_list) { in iscsit_tpg_add_portal_group()
256 iscsi_release_param_list(tpg->param_list); in iscsit_tpg_add_portal_group()
257 tpg->param_list = NULL; in iscsit_tpg_add_portal_group()
264 struct iscsi_portal_group *tpg, in iscsit_tpg_del_portal_group() argument
267 u8 old_state = tpg->tpg_state; in iscsit_tpg_del_portal_group()
269 spin_lock(&tpg->tpg_state_lock); in iscsit_tpg_del_portal_group()
270 tpg->tpg_state = TPG_STATE_INACTIVE; in iscsit_tpg_del_portal_group()
271 spin_unlock(&tpg->tpg_state_lock); in iscsit_tpg_del_portal_group()
273 if (iscsit_release_sessions_for_tpg(tpg, force) < 0) { in iscsit_tpg_del_portal_group()
276 tpg->tpgt); in iscsit_tpg_del_portal_group()
277 tpg->tpg_state = old_state; in iscsit_tpg_del_portal_group()
281 if (tpg->param_list) { in iscsit_tpg_del_portal_group()
282 iscsi_release_param_list(tpg->param_list); in iscsit_tpg_del_portal_group()
283 tpg->param_list = NULL; in iscsit_tpg_del_portal_group()
286 core_tpg_deregister(&tpg->tpg_se_tpg); in iscsit_tpg_del_portal_group()
288 spin_lock(&tpg->tpg_state_lock); in iscsit_tpg_del_portal_group()
289 tpg->tpg_state = TPG_STATE_FREE; in iscsit_tpg_del_portal_group()
290 spin_unlock(&tpg->tpg_state_lock); in iscsit_tpg_del_portal_group()
294 list_del(&tpg->tpg_list); in iscsit_tpg_del_portal_group()
298 tiqn->tiqn, tpg->tpgt); in iscsit_tpg_del_portal_group()
300 kfree(tpg); in iscsit_tpg_del_portal_group()
304 int iscsit_tpg_enable_portal_group(struct iscsi_portal_group *tpg) in iscsit_tpg_enable_portal_group() argument
307 struct iscsi_tiqn *tiqn = tpg->tpg_tiqn; in iscsit_tpg_enable_portal_group()
310 if (tpg->tpg_state == TPG_STATE_ACTIVE) { in iscsit_tpg_enable_portal_group()
312 " active, ignoring request.\n", tpg->tpgt); in iscsit_tpg_enable_portal_group()
320 param = iscsi_find_param_from_key(AUTHMETHOD, tpg->param_list); in iscsit_tpg_enable_portal_group()
324 if (tpg->tpg_attrib.authentication) { in iscsit_tpg_enable_portal_group()
331 ret = iscsit_ta_authentication(tpg, 1); in iscsit_tpg_enable_portal_group()
336 spin_lock(&tpg->tpg_state_lock); in iscsit_tpg_enable_portal_group()
337 tpg->tpg_state = TPG_STATE_ACTIVE; in iscsit_tpg_enable_portal_group()
338 spin_unlock(&tpg->tpg_state_lock); in iscsit_tpg_enable_portal_group()
343 tpg->tpgt); in iscsit_tpg_enable_portal_group()
352 int iscsit_tpg_disable_portal_group(struct iscsi_portal_group *tpg, int force) in iscsit_tpg_disable_portal_group() argument
355 u8 old_state = tpg->tpg_state; in iscsit_tpg_disable_portal_group()
357 spin_lock(&tpg->tpg_state_lock); in iscsit_tpg_disable_portal_group()
358 if (tpg->tpg_state == TPG_STATE_INACTIVE) { in iscsit_tpg_disable_portal_group()
360 " inactive, ignoring request.\n", tpg->tpgt); in iscsit_tpg_disable_portal_group()
361 spin_unlock(&tpg->tpg_state_lock); in iscsit_tpg_disable_portal_group()
364 tpg->tpg_state = TPG_STATE_INACTIVE; in iscsit_tpg_disable_portal_group()
365 spin_unlock(&tpg->tpg_state_lock); in iscsit_tpg_disable_portal_group()
367 iscsit_clear_tpg_np_login_threads(tpg, false); in iscsit_tpg_disable_portal_group()
369 if (iscsit_release_sessions_for_tpg(tpg, force) < 0) { in iscsit_tpg_disable_portal_group()
370 spin_lock(&tpg->tpg_state_lock); in iscsit_tpg_disable_portal_group()
371 tpg->tpg_state = old_state; in iscsit_tpg_disable_portal_group()
372 spin_unlock(&tpg->tpg_state_lock); in iscsit_tpg_disable_portal_group()
375 tpg->tpgt); in iscsit_tpg_disable_portal_group()
379 tiqn = tpg->tpg_tiqn; in iscsit_tpg_disable_portal_group()
380 if (!tiqn || (tpg == iscsit_global->discovery_tpg)) in iscsit_tpg_disable_portal_group()
386 tpg->tpgt); in iscsit_tpg_disable_portal_group()
428 struct iscsi_portal_group *tpg; in iscsit_tpg_check_network_portal() local
434 list_for_each_entry(tpg, &tiqn->tiqn_tpg_list, tpg_list) { in iscsit_tpg_check_network_portal()
436 spin_lock(&tpg->tpg_np_lock); in iscsit_tpg_check_network_portal()
437 list_for_each_entry(tpg_np, &tpg->tpg_gnp_list, tpg_np_list) { in iscsit_tpg_check_network_portal()
445 spin_unlock(&tpg->tpg_np_lock); in iscsit_tpg_check_network_portal()
456 struct iscsi_portal_group *tpg, in iscsit_tpg_add_network_portal() argument
465 if (iscsit_tpg_check_network_portal(tpg->tpg_tiqn, sockaddr, in iscsit_tpg_add_network_portal()
469 tpg->tpg_tiqn->tiqn); in iscsit_tpg_add_network_portal()
494 tpg_np->tpg = tpg; in iscsit_tpg_add_network_portal()
496 spin_lock(&tpg->tpg_np_lock); in iscsit_tpg_add_network_portal()
497 list_add_tail(&tpg_np->tpg_np_list, &tpg->tpg_gnp_list); in iscsit_tpg_add_network_portal()
498 tpg->num_tpg_nps++; in iscsit_tpg_add_network_portal()
499 if (tpg->tpg_tiqn) in iscsit_tpg_add_network_portal()
500 tpg->tpg_tiqn->tiqn_num_tpg_nps++; in iscsit_tpg_add_network_portal()
501 spin_unlock(&tpg->tpg_np_lock); in iscsit_tpg_add_network_portal()
512 tpg->tpg_tiqn->tiqn, &np->np_sockaddr, tpg->tpgt, in iscsit_tpg_add_network_portal()
520 struct iscsi_portal_group *tpg, in iscsit_tpg_release_np() argument
523 iscsit_clear_tpg_np_login_thread(tpg_np, tpg, true); in iscsit_tpg_release_np()
526 tpg->tpg_tiqn->tiqn, &np->np_sockaddr, tpg->tpgt, in iscsit_tpg_release_np()
530 tpg_np->tpg = NULL; in iscsit_tpg_release_np()
539 struct iscsi_portal_group *tpg, in iscsit_tpg_del_network_portal() argument
562 ret = iscsit_tpg_del_network_portal(tpg, tpg_np_child); in iscsit_tpg_del_network_portal()
577 spin_lock(&tpg->tpg_np_lock); in iscsit_tpg_del_network_portal()
579 tpg->num_tpg_nps--; in iscsit_tpg_del_network_portal()
580 if (tpg->tpg_tiqn) in iscsit_tpg_del_network_portal()
581 tpg->tpg_tiqn->tiqn_num_tpg_nps--; in iscsit_tpg_del_network_portal()
582 spin_unlock(&tpg->tpg_np_lock); in iscsit_tpg_del_network_portal()
584 return iscsit_tpg_release_np(tpg_np, tpg, np); in iscsit_tpg_del_network_portal()
587 int iscsit_ta_authentication(struct iscsi_portal_group *tpg, u32 authentication) in iscsit_ta_authentication() argument
592 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_ta_authentication()
603 param = iscsi_find_param_from_key(AUTHMETHOD, tpg->param_list); in iscsit_ta_authentication()
642 a->authentication ? "Enforcing" : "Disabling", tpg->tpgt); in iscsit_ta_authentication()
648 struct iscsi_portal_group *tpg, in iscsit_ta_login_timeout() argument
651 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_ta_login_timeout()
665 " %hu\n", a->login_timeout, tpg->tpgt); in iscsit_ta_login_timeout()
671 struct iscsi_portal_group *tpg, in iscsit_ta_netif_timeout() argument
674 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_ta_netif_timeout()
690 " Target Portal Group %hu\n", a->netif_timeout, tpg->tpgt); in iscsit_ta_netif_timeout()
696 struct iscsi_portal_group *tpg, in iscsit_ta_generate_node_acls() argument
699 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_ta_generate_node_acls()
708 tpg->tpgt, (a->generate_node_acls) ? "Enabled" : "Disabled"); in iscsit_ta_generate_node_acls()
720 struct iscsi_portal_group *tpg, in iscsit_ta_default_cmdsn_depth() argument
723 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_ta_default_cmdsn_depth()
739 tpg->tpgt, a->default_cmdsn_depth); in iscsit_ta_default_cmdsn_depth()
745 struct iscsi_portal_group *tpg, in iscsit_ta_cache_dynamic_acls() argument
748 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_ta_cache_dynamic_acls()
763 " ACLs %s\n", tpg->tpgt, (a->cache_dynamic_acls) ? in iscsit_ta_cache_dynamic_acls()
770 struct iscsi_portal_group *tpg, in iscsit_ta_demo_mode_write_protect() argument
773 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_ta_demo_mode_write_protect()
782 tpg->tpgt, (a->demo_mode_write_protect) ? "ON" : "OFF"); in iscsit_ta_demo_mode_write_protect()
788 struct iscsi_portal_group *tpg, in iscsit_ta_prod_mode_write_protect() argument
791 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_ta_prod_mode_write_protect()
800 " %s\n", tpg->tpgt, (a->prod_mode_write_protect) ? in iscsit_ta_prod_mode_write_protect()
807 struct iscsi_portal_group *tpg, in iscsit_ta_demo_mode_discovery() argument
810 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_ta_demo_mode_discovery()
819 " %s\n", tpg->tpgt, (a->demo_mode_discovery) ? in iscsit_ta_demo_mode_discovery()
826 struct iscsi_portal_group *tpg, in iscsit_ta_default_erl() argument
829 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_ta_default_erl()
837 pr_debug("iSCSI_TPG[%hu] - DefaultERL: %u\n", tpg->tpgt, a->default_erl); in iscsit_ta_default_erl()
843 struct iscsi_portal_group *tpg, in iscsit_ta_t10_pi() argument
846 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_ta_t10_pi()
855 " %s\n", tpg->tpgt, (a->t10_pi) ? in iscsit_ta_t10_pi()
862 struct iscsi_portal_group *tpg, in iscsit_ta_fabric_prot_type() argument
865 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_ta_fabric_prot_type()
874 tpg->tpgt, prot_type); in iscsit_ta_fabric_prot_type()
880 struct iscsi_portal_group *tpg, in iscsit_ta_tpg_enabled_sendtargets() argument
883 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_ta_tpg_enabled_sendtargets()
892 " %s\n", tpg->tpgt, (a->tpg_enabled_sendtargets) ? "ON" : "OFF"); in iscsit_ta_tpg_enabled_sendtargets()
898 struct iscsi_portal_group *tpg, in iscsit_ta_login_keys_workaround() argument
901 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_ta_login_keys_workaround()
910 tpg->tpgt, (a->login_keys_workaround) ? "ON" : "OFF"); in iscsit_ta_login_keys_workaround()