Lines Matching refs:tpg
35 struct iscsi_portal_group *tpg; in iscsit_alloc_portal_group() local
37 tpg = kzalloc(sizeof(struct iscsi_portal_group), GFP_KERNEL); in iscsit_alloc_portal_group()
38 if (!tpg) { in iscsit_alloc_portal_group()
43 tpg->tpgt = tpgt; in iscsit_alloc_portal_group()
44 tpg->tpg_state = TPG_STATE_FREE; in iscsit_alloc_portal_group()
45 tpg->tpg_tiqn = tiqn; in iscsit_alloc_portal_group()
46 INIT_LIST_HEAD(&tpg->tpg_gnp_list); in iscsit_alloc_portal_group()
47 INIT_LIST_HEAD(&tpg->tpg_list); in iscsit_alloc_portal_group()
48 mutex_init(&tpg->tpg_access_lock); in iscsit_alloc_portal_group()
49 sema_init(&tpg->np_login_sem, 1); in iscsit_alloc_portal_group()
50 spin_lock_init(&tpg->tpg_state_lock); in iscsit_alloc_portal_group()
51 spin_lock_init(&tpg->tpg_np_lock); in iscsit_alloc_portal_group()
53 return tpg; in iscsit_alloc_portal_group()
61 struct iscsi_portal_group *tpg; in iscsit_load_discovery_tpg() local
64 tpg = iscsit_alloc_portal_group(NULL, 1); in iscsit_load_discovery_tpg()
65 if (!tpg) { in iscsit_load_discovery_tpg()
73 tpg->tpg_se_tpg.se_tpg_tfo = &iscsi_ops; in iscsit_load_discovery_tpg()
74 ret = core_tpg_register(NULL, &tpg->tpg_se_tpg, -1); in iscsit_load_discovery_tpg()
76 kfree(tpg); in iscsit_load_discovery_tpg()
80 tpg->sid = 1; /* First Assigned LIO Session ID */ in iscsit_load_discovery_tpg()
81 iscsit_set_default_tpg_attribs(tpg); in iscsit_load_discovery_tpg()
83 if (iscsi_create_default_params(&tpg->param_list) < 0) in iscsit_load_discovery_tpg()
91 param = iscsi_find_param_from_key(AUTHMETHOD, tpg->param_list); in iscsit_load_discovery_tpg()
98 tpg->tpg_attrib.authentication = 0; in iscsit_load_discovery_tpg()
100 spin_lock(&tpg->tpg_state_lock); in iscsit_load_discovery_tpg()
101 tpg->tpg_state = TPG_STATE_ACTIVE; in iscsit_load_discovery_tpg()
102 spin_unlock(&tpg->tpg_state_lock); in iscsit_load_discovery_tpg()
104 iscsit_global->discovery_tpg = tpg; in iscsit_load_discovery_tpg()
109 if (tpg->sid == 1) in iscsit_load_discovery_tpg()
110 core_tpg_deregister(&tpg->tpg_se_tpg); in iscsit_load_discovery_tpg()
111 kfree(tpg); in iscsit_load_discovery_tpg()
117 struct iscsi_portal_group *tpg = iscsit_global->discovery_tpg; in iscsit_release_discovery_tpg() local
119 if (!tpg) in iscsit_release_discovery_tpg()
122 core_tpg_deregister(&tpg->tpg_se_tpg); in iscsit_release_discovery_tpg()
124 kfree(tpg); in iscsit_release_discovery_tpg()
133 struct iscsi_portal_group *tpg = NULL; in iscsit_get_tpg_from_np() local
137 list_for_each_entry(tpg, &tiqn->tiqn_tpg_list, tpg_list) { in iscsit_get_tpg_from_np()
139 spin_lock(&tpg->tpg_state_lock); in iscsit_get_tpg_from_np()
140 if (tpg->tpg_state != TPG_STATE_ACTIVE) { in iscsit_get_tpg_from_np()
141 spin_unlock(&tpg->tpg_state_lock); in iscsit_get_tpg_from_np()
144 spin_unlock(&tpg->tpg_state_lock); in iscsit_get_tpg_from_np()
146 spin_lock(&tpg->tpg_np_lock); in iscsit_get_tpg_from_np()
147 list_for_each_entry(tpg_np, &tpg->tpg_gnp_list, tpg_np_list) { in iscsit_get_tpg_from_np()
151 spin_unlock(&tpg->tpg_np_lock); in iscsit_get_tpg_from_np()
153 return tpg; in iscsit_get_tpg_from_np()
156 spin_unlock(&tpg->tpg_np_lock); in iscsit_get_tpg_from_np()
164 struct iscsi_portal_group *tpg) in iscsit_get_tpg() argument
166 return mutex_lock_interruptible(&tpg->tpg_access_lock); in iscsit_get_tpg()
169 void iscsit_put_tpg(struct iscsi_portal_group *tpg) in iscsit_put_tpg() argument
171 mutex_unlock(&tpg->tpg_access_lock); in iscsit_put_tpg()
176 struct iscsi_portal_group *tpg, in iscsit_clear_tpg_np_login_thread() argument
186 iscsit_reset_np_thread(tpg_np->tpg_np, tpg_np, tpg, shutdown); in iscsit_clear_tpg_np_login_thread()
190 struct iscsi_portal_group *tpg, in iscsit_clear_tpg_np_login_threads() argument
195 spin_lock(&tpg->tpg_np_lock); in iscsit_clear_tpg_np_login_threads()
196 list_for_each_entry(tpg_np, &tpg->tpg_gnp_list, tpg_np_list) { in iscsit_clear_tpg_np_login_threads()
201 spin_unlock(&tpg->tpg_np_lock); in iscsit_clear_tpg_np_login_threads()
202 iscsit_clear_tpg_np_login_thread(tpg_np, tpg, shutdown); in iscsit_clear_tpg_np_login_threads()
203 spin_lock(&tpg->tpg_np_lock); in iscsit_clear_tpg_np_login_threads()
205 spin_unlock(&tpg->tpg_np_lock); in iscsit_clear_tpg_np_login_threads()
208 void iscsit_tpg_dump_params(struct iscsi_portal_group *tpg) in iscsit_tpg_dump_params() argument
210 iscsi_print_params(tpg->param_list); in iscsit_tpg_dump_params()
213 static void iscsit_set_default_tpg_attribs(struct iscsi_portal_group *tpg) in iscsit_set_default_tpg_attribs() argument
215 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_set_default_tpg_attribs()
232 int iscsit_tpg_add_portal_group(struct iscsi_tiqn *tiqn, struct iscsi_portal_group *tpg) in iscsit_tpg_add_portal_group() argument
234 if (tpg->tpg_state != TPG_STATE_FREE) { in iscsit_tpg_add_portal_group()
236 " while not in TPG_STATE_FREE state.\n", tpg->tpgt); in iscsit_tpg_add_portal_group()
239 iscsit_set_default_tpg_attribs(tpg); in iscsit_tpg_add_portal_group()
241 if (iscsi_create_default_params(&tpg->param_list) < 0) in iscsit_tpg_add_portal_group()
244 tpg->tpg_attrib.tpg = tpg; in iscsit_tpg_add_portal_group()
246 spin_lock(&tpg->tpg_state_lock); in iscsit_tpg_add_portal_group()
247 tpg->tpg_state = TPG_STATE_INACTIVE; in iscsit_tpg_add_portal_group()
248 spin_unlock(&tpg->tpg_state_lock); in iscsit_tpg_add_portal_group()
251 list_add_tail(&tpg->tpg_list, &tiqn->tiqn_tpg_list); in iscsit_tpg_add_portal_group()
254 tiqn->tiqn, tpg->tpgt); in iscsit_tpg_add_portal_group()
259 if (tpg->param_list) { in iscsit_tpg_add_portal_group()
260 iscsi_release_param_list(tpg->param_list); in iscsit_tpg_add_portal_group()
261 tpg->param_list = NULL; in iscsit_tpg_add_portal_group()
263 kfree(tpg); in iscsit_tpg_add_portal_group()
269 struct iscsi_portal_group *tpg, in iscsit_tpg_del_portal_group() argument
272 u8 old_state = tpg->tpg_state; in iscsit_tpg_del_portal_group()
274 spin_lock(&tpg->tpg_state_lock); in iscsit_tpg_del_portal_group()
275 tpg->tpg_state = TPG_STATE_INACTIVE; in iscsit_tpg_del_portal_group()
276 spin_unlock(&tpg->tpg_state_lock); in iscsit_tpg_del_portal_group()
278 if (iscsit_release_sessions_for_tpg(tpg, force) < 0) { in iscsit_tpg_del_portal_group()
281 tpg->tpgt); in iscsit_tpg_del_portal_group()
282 tpg->tpg_state = old_state; in iscsit_tpg_del_portal_group()
286 if (tpg->param_list) { in iscsit_tpg_del_portal_group()
287 iscsi_release_param_list(tpg->param_list); in iscsit_tpg_del_portal_group()
288 tpg->param_list = NULL; in iscsit_tpg_del_portal_group()
291 core_tpg_deregister(&tpg->tpg_se_tpg); in iscsit_tpg_del_portal_group()
293 spin_lock(&tpg->tpg_state_lock); in iscsit_tpg_del_portal_group()
294 tpg->tpg_state = TPG_STATE_FREE; in iscsit_tpg_del_portal_group()
295 spin_unlock(&tpg->tpg_state_lock); in iscsit_tpg_del_portal_group()
299 list_del(&tpg->tpg_list); in iscsit_tpg_del_portal_group()
303 tiqn->tiqn, tpg->tpgt); in iscsit_tpg_del_portal_group()
305 kfree(tpg); in iscsit_tpg_del_portal_group()
309 int iscsit_tpg_enable_portal_group(struct iscsi_portal_group *tpg) in iscsit_tpg_enable_portal_group() argument
312 struct iscsi_tiqn *tiqn = tpg->tpg_tiqn; in iscsit_tpg_enable_portal_group()
315 spin_lock(&tpg->tpg_state_lock); in iscsit_tpg_enable_portal_group()
316 if (tpg->tpg_state == TPG_STATE_ACTIVE) { in iscsit_tpg_enable_portal_group()
318 " active, ignoring request.\n", tpg->tpgt); in iscsit_tpg_enable_portal_group()
319 spin_unlock(&tpg->tpg_state_lock); in iscsit_tpg_enable_portal_group()
327 param = iscsi_find_param_from_key(AUTHMETHOD, tpg->param_list); in iscsit_tpg_enable_portal_group()
329 spin_unlock(&tpg->tpg_state_lock); in iscsit_tpg_enable_portal_group()
333 if (tpg->tpg_attrib.authentication) { in iscsit_tpg_enable_portal_group()
340 ret = iscsit_ta_authentication(tpg, 1); in iscsit_tpg_enable_portal_group()
345 tpg->tpg_state = TPG_STATE_ACTIVE; in iscsit_tpg_enable_portal_group()
346 spin_unlock(&tpg->tpg_state_lock); in iscsit_tpg_enable_portal_group()
351 tpg->tpgt); in iscsit_tpg_enable_portal_group()
357 spin_unlock(&tpg->tpg_state_lock); in iscsit_tpg_enable_portal_group()
361 int iscsit_tpg_disable_portal_group(struct iscsi_portal_group *tpg, int force) in iscsit_tpg_disable_portal_group() argument
364 u8 old_state = tpg->tpg_state; in iscsit_tpg_disable_portal_group()
366 spin_lock(&tpg->tpg_state_lock); in iscsit_tpg_disable_portal_group()
367 if (tpg->tpg_state == TPG_STATE_INACTIVE) { in iscsit_tpg_disable_portal_group()
369 " inactive, ignoring request.\n", tpg->tpgt); in iscsit_tpg_disable_portal_group()
370 spin_unlock(&tpg->tpg_state_lock); in iscsit_tpg_disable_portal_group()
373 tpg->tpg_state = TPG_STATE_INACTIVE; in iscsit_tpg_disable_portal_group()
374 spin_unlock(&tpg->tpg_state_lock); in iscsit_tpg_disable_portal_group()
376 iscsit_clear_tpg_np_login_threads(tpg, false); in iscsit_tpg_disable_portal_group()
378 if (iscsit_release_sessions_for_tpg(tpg, force) < 0) { in iscsit_tpg_disable_portal_group()
379 spin_lock(&tpg->tpg_state_lock); in iscsit_tpg_disable_portal_group()
380 tpg->tpg_state = old_state; in iscsit_tpg_disable_portal_group()
381 spin_unlock(&tpg->tpg_state_lock); in iscsit_tpg_disable_portal_group()
384 tpg->tpgt); in iscsit_tpg_disable_portal_group()
388 tiqn = tpg->tpg_tiqn; in iscsit_tpg_disable_portal_group()
389 if (!tiqn || (tpg == iscsit_global->discovery_tpg)) in iscsit_tpg_disable_portal_group()
395 tpg->tpgt); in iscsit_tpg_disable_portal_group()
437 struct iscsi_portal_group *tpg; in iscsit_tpg_check_network_portal() local
443 list_for_each_entry(tpg, &tiqn->tiqn_tpg_list, tpg_list) { in iscsit_tpg_check_network_portal()
445 spin_lock(&tpg->tpg_np_lock); in iscsit_tpg_check_network_portal()
446 list_for_each_entry(tpg_np, &tpg->tpg_gnp_list, tpg_np_list) { in iscsit_tpg_check_network_portal()
454 spin_unlock(&tpg->tpg_np_lock); in iscsit_tpg_check_network_portal()
462 struct iscsi_portal_group *tpg, in iscsit_tpg_add_network_portal() argument
471 if (iscsit_tpg_check_network_portal(tpg->tpg_tiqn, sockaddr, in iscsit_tpg_add_network_portal()
475 tpg->tpg_tiqn->tiqn); in iscsit_tpg_add_network_portal()
500 tpg_np->tpg = tpg; in iscsit_tpg_add_network_portal()
502 spin_lock(&tpg->tpg_np_lock); in iscsit_tpg_add_network_portal()
503 list_add_tail(&tpg_np->tpg_np_list, &tpg->tpg_gnp_list); in iscsit_tpg_add_network_portal()
504 tpg->num_tpg_nps++; in iscsit_tpg_add_network_portal()
505 if (tpg->tpg_tiqn) in iscsit_tpg_add_network_portal()
506 tpg->tpg_tiqn->tiqn_num_tpg_nps++; in iscsit_tpg_add_network_portal()
507 spin_unlock(&tpg->tpg_np_lock); in iscsit_tpg_add_network_portal()
518 tpg->tpg_tiqn->tiqn, &np->np_sockaddr, tpg->tpgt, in iscsit_tpg_add_network_portal()
526 struct iscsi_portal_group *tpg, in iscsit_tpg_release_np() argument
529 iscsit_clear_tpg_np_login_thread(tpg_np, tpg, true); in iscsit_tpg_release_np()
532 tpg->tpg_tiqn->tiqn, &np->np_sockaddr, tpg->tpgt, in iscsit_tpg_release_np()
536 tpg_np->tpg = NULL; in iscsit_tpg_release_np()
545 struct iscsi_portal_group *tpg, in iscsit_tpg_del_network_portal() argument
568 ret = iscsit_tpg_del_network_portal(tpg, tpg_np_child); in iscsit_tpg_del_network_portal()
583 spin_lock(&tpg->tpg_np_lock); in iscsit_tpg_del_network_portal()
585 tpg->num_tpg_nps--; in iscsit_tpg_del_network_portal()
586 if (tpg->tpg_tiqn) in iscsit_tpg_del_network_portal()
587 tpg->tpg_tiqn->tiqn_num_tpg_nps--; in iscsit_tpg_del_network_portal()
588 spin_unlock(&tpg->tpg_np_lock); in iscsit_tpg_del_network_portal()
590 return iscsit_tpg_release_np(tpg_np, tpg, np); in iscsit_tpg_del_network_portal()
594 struct iscsi_portal_group *tpg, in iscsit_tpg_set_initiator_node_queue_depth() argument
599 return core_tpg_set_initiator_node_queue_depth(&tpg->tpg_se_tpg, in iscsit_tpg_set_initiator_node_queue_depth()
603 int iscsit_ta_authentication(struct iscsi_portal_group *tpg, u32 authentication) in iscsit_ta_authentication() argument
608 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_ta_authentication()
619 param = iscsi_find_param_from_key(AUTHMETHOD, tpg->param_list); in iscsit_ta_authentication()
659 a->authentication ? "Enforcing" : "Disabling", tpg->tpgt); in iscsit_ta_authentication()
665 struct iscsi_portal_group *tpg, in iscsit_ta_login_timeout() argument
668 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_ta_login_timeout()
682 " %hu\n", a->login_timeout, tpg->tpgt); in iscsit_ta_login_timeout()
688 struct iscsi_portal_group *tpg, in iscsit_ta_netif_timeout() argument
691 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_ta_netif_timeout()
707 " Target Portal Group %hu\n", a->netif_timeout, tpg->tpgt); in iscsit_ta_netif_timeout()
713 struct iscsi_portal_group *tpg, in iscsit_ta_generate_node_acls() argument
716 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_ta_generate_node_acls()
725 tpg->tpgt, (a->generate_node_acls) ? "Enabled" : "Disabled"); in iscsit_ta_generate_node_acls()
737 struct iscsi_portal_group *tpg, in iscsit_ta_default_cmdsn_depth() argument
740 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_ta_default_cmdsn_depth()
756 tpg->tpgt, a->default_cmdsn_depth); in iscsit_ta_default_cmdsn_depth()
762 struct iscsi_portal_group *tpg, in iscsit_ta_cache_dynamic_acls() argument
765 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_ta_cache_dynamic_acls()
780 " ACLs %s\n", tpg->tpgt, (a->cache_dynamic_acls) ? in iscsit_ta_cache_dynamic_acls()
787 struct iscsi_portal_group *tpg, in iscsit_ta_demo_mode_write_protect() argument
790 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_ta_demo_mode_write_protect()
799 tpg->tpgt, (a->demo_mode_write_protect) ? "ON" : "OFF"); in iscsit_ta_demo_mode_write_protect()
805 struct iscsi_portal_group *tpg, in iscsit_ta_prod_mode_write_protect() argument
808 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_ta_prod_mode_write_protect()
817 " %s\n", tpg->tpgt, (a->prod_mode_write_protect) ? in iscsit_ta_prod_mode_write_protect()
824 struct iscsi_portal_group *tpg, in iscsit_ta_demo_mode_discovery() argument
827 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_ta_demo_mode_discovery()
836 " %s\n", tpg->tpgt, (a->demo_mode_discovery) ? in iscsit_ta_demo_mode_discovery()
843 struct iscsi_portal_group *tpg, in iscsit_ta_default_erl() argument
846 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_ta_default_erl()
854 pr_debug("iSCSI_TPG[%hu] - DefaultERL: %u\n", tpg->tpgt, a->default_erl); in iscsit_ta_default_erl()
860 struct iscsi_portal_group *tpg, in iscsit_ta_t10_pi() argument
863 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_ta_t10_pi()
872 " %s\n", tpg->tpgt, (a->t10_pi) ? in iscsit_ta_t10_pi()
879 struct iscsi_portal_group *tpg, in iscsit_ta_fabric_prot_type() argument
882 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_ta_fabric_prot_type()
891 tpg->tpgt, prot_type); in iscsit_ta_fabric_prot_type()
897 struct iscsi_portal_group *tpg, in iscsit_ta_tpg_enabled_sendtargets() argument
900 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_ta_tpg_enabled_sendtargets()
909 " %s\n", tpg->tpgt, (a->tpg_enabled_sendtargets) ? "ON" : "OFF"); in iscsit_ta_tpg_enabled_sendtargets()