Lines Matching refs:tpg

36 	struct iscsi_portal_group *tpg;  in iscsit_alloc_portal_group()  local
38 tpg = kzalloc(sizeof(struct iscsi_portal_group), GFP_KERNEL); in iscsit_alloc_portal_group()
39 if (!tpg) { in iscsit_alloc_portal_group()
44 tpg->tpgt = tpgt; in iscsit_alloc_portal_group()
45 tpg->tpg_state = TPG_STATE_FREE; in iscsit_alloc_portal_group()
46 tpg->tpg_tiqn = tiqn; in iscsit_alloc_portal_group()
47 INIT_LIST_HEAD(&tpg->tpg_gnp_list); in iscsit_alloc_portal_group()
48 INIT_LIST_HEAD(&tpg->tpg_list); in iscsit_alloc_portal_group()
49 mutex_init(&tpg->tpg_access_lock); in iscsit_alloc_portal_group()
50 sema_init(&tpg->np_login_sem, 1); in iscsit_alloc_portal_group()
51 spin_lock_init(&tpg->tpg_state_lock); in iscsit_alloc_portal_group()
52 spin_lock_init(&tpg->tpg_np_lock); in iscsit_alloc_portal_group()
54 return tpg; in iscsit_alloc_portal_group()
62 struct iscsi_portal_group *tpg; in iscsit_load_discovery_tpg() local
65 tpg = iscsit_alloc_portal_group(NULL, 1); in iscsit_load_discovery_tpg()
66 if (!tpg) { in iscsit_load_discovery_tpg()
71 ret = core_tpg_register(&iscsi_ops, NULL, &tpg->tpg_se_tpg, in iscsit_load_discovery_tpg()
72 tpg, TRANSPORT_TPG_TYPE_DISCOVERY); in iscsit_load_discovery_tpg()
74 kfree(tpg); in iscsit_load_discovery_tpg()
78 tpg->sid = 1; /* First Assigned LIO Session ID */ in iscsit_load_discovery_tpg()
79 iscsit_set_default_tpg_attribs(tpg); in iscsit_load_discovery_tpg()
81 if (iscsi_create_default_params(&tpg->param_list) < 0) in iscsit_load_discovery_tpg()
89 param = iscsi_find_param_from_key(AUTHMETHOD, tpg->param_list); in iscsit_load_discovery_tpg()
96 tpg->tpg_attrib.authentication = 0; in iscsit_load_discovery_tpg()
98 spin_lock(&tpg->tpg_state_lock); in iscsit_load_discovery_tpg()
99 tpg->tpg_state = TPG_STATE_ACTIVE; in iscsit_load_discovery_tpg()
100 spin_unlock(&tpg->tpg_state_lock); in iscsit_load_discovery_tpg()
102 iscsit_global->discovery_tpg = tpg; in iscsit_load_discovery_tpg()
107 if (tpg->sid == 1) in iscsit_load_discovery_tpg()
108 core_tpg_deregister(&tpg->tpg_se_tpg); in iscsit_load_discovery_tpg()
109 kfree(tpg); in iscsit_load_discovery_tpg()
115 struct iscsi_portal_group *tpg = iscsit_global->discovery_tpg; in iscsit_release_discovery_tpg() local
117 if (!tpg) in iscsit_release_discovery_tpg()
120 core_tpg_deregister(&tpg->tpg_se_tpg); in iscsit_release_discovery_tpg()
122 kfree(tpg); in iscsit_release_discovery_tpg()
131 struct iscsi_portal_group *tpg = NULL; in iscsit_get_tpg_from_np() local
135 list_for_each_entry(tpg, &tiqn->tiqn_tpg_list, tpg_list) { in iscsit_get_tpg_from_np()
137 spin_lock(&tpg->tpg_state_lock); in iscsit_get_tpg_from_np()
138 if (tpg->tpg_state != TPG_STATE_ACTIVE) { in iscsit_get_tpg_from_np()
139 spin_unlock(&tpg->tpg_state_lock); in iscsit_get_tpg_from_np()
142 spin_unlock(&tpg->tpg_state_lock); in iscsit_get_tpg_from_np()
144 spin_lock(&tpg->tpg_np_lock); in iscsit_get_tpg_from_np()
145 list_for_each_entry(tpg_np, &tpg->tpg_gnp_list, tpg_np_list) { in iscsit_get_tpg_from_np()
149 spin_unlock(&tpg->tpg_np_lock); in iscsit_get_tpg_from_np()
151 return tpg; in iscsit_get_tpg_from_np()
154 spin_unlock(&tpg->tpg_np_lock); in iscsit_get_tpg_from_np()
162 struct iscsi_portal_group *tpg) in iscsit_get_tpg() argument
164 return mutex_lock_interruptible(&tpg->tpg_access_lock); in iscsit_get_tpg()
167 void iscsit_put_tpg(struct iscsi_portal_group *tpg) in iscsit_put_tpg() argument
169 mutex_unlock(&tpg->tpg_access_lock); in iscsit_put_tpg()
174 struct iscsi_portal_group *tpg, in iscsit_clear_tpg_np_login_thread() argument
184 iscsit_reset_np_thread(tpg_np->tpg_np, tpg_np, tpg, shutdown); in iscsit_clear_tpg_np_login_thread()
188 struct iscsi_portal_group *tpg, in iscsit_clear_tpg_np_login_threads() argument
193 spin_lock(&tpg->tpg_np_lock); in iscsit_clear_tpg_np_login_threads()
194 list_for_each_entry(tpg_np, &tpg->tpg_gnp_list, tpg_np_list) { in iscsit_clear_tpg_np_login_threads()
199 spin_unlock(&tpg->tpg_np_lock); in iscsit_clear_tpg_np_login_threads()
200 iscsit_clear_tpg_np_login_thread(tpg_np, tpg, shutdown); in iscsit_clear_tpg_np_login_threads()
201 spin_lock(&tpg->tpg_np_lock); in iscsit_clear_tpg_np_login_threads()
203 spin_unlock(&tpg->tpg_np_lock); in iscsit_clear_tpg_np_login_threads()
206 void iscsit_tpg_dump_params(struct iscsi_portal_group *tpg) in iscsit_tpg_dump_params() argument
208 iscsi_print_params(tpg->param_list); in iscsit_tpg_dump_params()
211 static void iscsit_set_default_tpg_attribs(struct iscsi_portal_group *tpg) in iscsit_set_default_tpg_attribs() argument
213 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_set_default_tpg_attribs()
229 int iscsit_tpg_add_portal_group(struct iscsi_tiqn *tiqn, struct iscsi_portal_group *tpg) in iscsit_tpg_add_portal_group() argument
231 if (tpg->tpg_state != TPG_STATE_FREE) { in iscsit_tpg_add_portal_group()
233 " while not in TPG_STATE_FREE state.\n", tpg->tpgt); in iscsit_tpg_add_portal_group()
236 iscsit_set_default_tpg_attribs(tpg); in iscsit_tpg_add_portal_group()
238 if (iscsi_create_default_params(&tpg->param_list) < 0) in iscsit_tpg_add_portal_group()
241 tpg->tpg_attrib.tpg = tpg; in iscsit_tpg_add_portal_group()
243 spin_lock(&tpg->tpg_state_lock); in iscsit_tpg_add_portal_group()
244 tpg->tpg_state = TPG_STATE_INACTIVE; in iscsit_tpg_add_portal_group()
245 spin_unlock(&tpg->tpg_state_lock); in iscsit_tpg_add_portal_group()
248 list_add_tail(&tpg->tpg_list, &tiqn->tiqn_tpg_list); in iscsit_tpg_add_portal_group()
251 tiqn->tiqn, tpg->tpgt); in iscsit_tpg_add_portal_group()
256 if (tpg->param_list) { in iscsit_tpg_add_portal_group()
257 iscsi_release_param_list(tpg->param_list); in iscsit_tpg_add_portal_group()
258 tpg->param_list = NULL; in iscsit_tpg_add_portal_group()
260 kfree(tpg); in iscsit_tpg_add_portal_group()
266 struct iscsi_portal_group *tpg, in iscsit_tpg_del_portal_group() argument
269 u8 old_state = tpg->tpg_state; in iscsit_tpg_del_portal_group()
271 spin_lock(&tpg->tpg_state_lock); in iscsit_tpg_del_portal_group()
272 tpg->tpg_state = TPG_STATE_INACTIVE; in iscsit_tpg_del_portal_group()
273 spin_unlock(&tpg->tpg_state_lock); in iscsit_tpg_del_portal_group()
275 if (iscsit_release_sessions_for_tpg(tpg, force) < 0) { in iscsit_tpg_del_portal_group()
278 tpg->tpgt); in iscsit_tpg_del_portal_group()
279 tpg->tpg_state = old_state; in iscsit_tpg_del_portal_group()
283 core_tpg_clear_object_luns(&tpg->tpg_se_tpg); in iscsit_tpg_del_portal_group()
285 if (tpg->param_list) { in iscsit_tpg_del_portal_group()
286 iscsi_release_param_list(tpg->param_list); in iscsit_tpg_del_portal_group()
287 tpg->param_list = NULL; in iscsit_tpg_del_portal_group()
290 core_tpg_deregister(&tpg->tpg_se_tpg); in iscsit_tpg_del_portal_group()
292 spin_lock(&tpg->tpg_state_lock); in iscsit_tpg_del_portal_group()
293 tpg->tpg_state = TPG_STATE_FREE; in iscsit_tpg_del_portal_group()
294 spin_unlock(&tpg->tpg_state_lock); in iscsit_tpg_del_portal_group()
298 list_del(&tpg->tpg_list); in iscsit_tpg_del_portal_group()
302 tiqn->tiqn, tpg->tpgt); in iscsit_tpg_del_portal_group()
304 kfree(tpg); in iscsit_tpg_del_portal_group()
308 int iscsit_tpg_enable_portal_group(struct iscsi_portal_group *tpg) in iscsit_tpg_enable_portal_group() argument
311 struct iscsi_tiqn *tiqn = tpg->tpg_tiqn; in iscsit_tpg_enable_portal_group()
314 spin_lock(&tpg->tpg_state_lock); in iscsit_tpg_enable_portal_group()
315 if (tpg->tpg_state == TPG_STATE_ACTIVE) { in iscsit_tpg_enable_portal_group()
317 " active, ignoring request.\n", tpg->tpgt); in iscsit_tpg_enable_portal_group()
318 spin_unlock(&tpg->tpg_state_lock); in iscsit_tpg_enable_portal_group()
326 param = iscsi_find_param_from_key(AUTHMETHOD, tpg->param_list); in iscsit_tpg_enable_portal_group()
328 spin_unlock(&tpg->tpg_state_lock); in iscsit_tpg_enable_portal_group()
332 if (tpg->tpg_attrib.authentication) { in iscsit_tpg_enable_portal_group()
339 ret = iscsit_ta_authentication(tpg, 1); in iscsit_tpg_enable_portal_group()
344 tpg->tpg_state = TPG_STATE_ACTIVE; in iscsit_tpg_enable_portal_group()
345 spin_unlock(&tpg->tpg_state_lock); in iscsit_tpg_enable_portal_group()
350 tpg->tpgt); in iscsit_tpg_enable_portal_group()
356 spin_unlock(&tpg->tpg_state_lock); in iscsit_tpg_enable_portal_group()
360 int iscsit_tpg_disable_portal_group(struct iscsi_portal_group *tpg, int force) in iscsit_tpg_disable_portal_group() argument
363 u8 old_state = tpg->tpg_state; in iscsit_tpg_disable_portal_group()
365 spin_lock(&tpg->tpg_state_lock); in iscsit_tpg_disable_portal_group()
366 if (tpg->tpg_state == TPG_STATE_INACTIVE) { in iscsit_tpg_disable_portal_group()
368 " inactive, ignoring request.\n", tpg->tpgt); in iscsit_tpg_disable_portal_group()
369 spin_unlock(&tpg->tpg_state_lock); in iscsit_tpg_disable_portal_group()
372 tpg->tpg_state = TPG_STATE_INACTIVE; in iscsit_tpg_disable_portal_group()
373 spin_unlock(&tpg->tpg_state_lock); in iscsit_tpg_disable_portal_group()
375 iscsit_clear_tpg_np_login_threads(tpg, false); in iscsit_tpg_disable_portal_group()
377 if (iscsit_release_sessions_for_tpg(tpg, force) < 0) { in iscsit_tpg_disable_portal_group()
378 spin_lock(&tpg->tpg_state_lock); in iscsit_tpg_disable_portal_group()
379 tpg->tpg_state = old_state; in iscsit_tpg_disable_portal_group()
380 spin_unlock(&tpg->tpg_state_lock); in iscsit_tpg_disable_portal_group()
383 tpg->tpgt); in iscsit_tpg_disable_portal_group()
387 tiqn = tpg->tpg_tiqn; in iscsit_tpg_disable_portal_group()
388 if (!tiqn || (tpg == iscsit_global->discovery_tpg)) in iscsit_tpg_disable_portal_group()
394 tpg->tpgt); in iscsit_tpg_disable_portal_group()
436 struct iscsi_portal_group *tpg; in iscsit_tpg_check_network_portal() local
442 list_for_each_entry(tpg, &tiqn->tiqn_tpg_list, tpg_list) { in iscsit_tpg_check_network_portal()
444 spin_lock(&tpg->tpg_np_lock); in iscsit_tpg_check_network_portal()
445 list_for_each_entry(tpg_np, &tpg->tpg_gnp_list, tpg_np_list) { in iscsit_tpg_check_network_portal()
453 spin_unlock(&tpg->tpg_np_lock); in iscsit_tpg_check_network_portal()
461 struct iscsi_portal_group *tpg, in iscsit_tpg_add_network_portal() argument
470 if (iscsit_tpg_check_network_portal(tpg->tpg_tiqn, sockaddr, in iscsit_tpg_add_network_portal()
474 tpg->tpg_tiqn->tiqn); in iscsit_tpg_add_network_portal()
499 tpg_np->tpg = tpg; in iscsit_tpg_add_network_portal()
501 spin_lock(&tpg->tpg_np_lock); in iscsit_tpg_add_network_portal()
502 list_add_tail(&tpg_np->tpg_np_list, &tpg->tpg_gnp_list); in iscsit_tpg_add_network_portal()
503 tpg->num_tpg_nps++; in iscsit_tpg_add_network_portal()
504 if (tpg->tpg_tiqn) in iscsit_tpg_add_network_portal()
505 tpg->tpg_tiqn->tiqn_num_tpg_nps++; in iscsit_tpg_add_network_portal()
506 spin_unlock(&tpg->tpg_np_lock); in iscsit_tpg_add_network_portal()
517 tpg->tpg_tiqn->tiqn, &np->np_sockaddr, np->np_port, tpg->tpgt, in iscsit_tpg_add_network_portal()
525 struct iscsi_portal_group *tpg, in iscsit_tpg_release_np() argument
528 iscsit_clear_tpg_np_login_thread(tpg_np, tpg, true); in iscsit_tpg_release_np()
531 tpg->tpg_tiqn->tiqn, &np->np_sockaddr, np->np_port, tpg->tpgt, in iscsit_tpg_release_np()
535 tpg_np->tpg = NULL; in iscsit_tpg_release_np()
544 struct iscsi_portal_group *tpg, in iscsit_tpg_del_network_portal() argument
567 ret = iscsit_tpg_del_network_portal(tpg, tpg_np_child); in iscsit_tpg_del_network_portal()
582 spin_lock(&tpg->tpg_np_lock); in iscsit_tpg_del_network_portal()
584 tpg->num_tpg_nps--; in iscsit_tpg_del_network_portal()
585 if (tpg->tpg_tiqn) in iscsit_tpg_del_network_portal()
586 tpg->tpg_tiqn->tiqn_num_tpg_nps--; in iscsit_tpg_del_network_portal()
587 spin_unlock(&tpg->tpg_np_lock); in iscsit_tpg_del_network_portal()
589 return iscsit_tpg_release_np(tpg_np, tpg, np); in iscsit_tpg_del_network_portal()
593 struct iscsi_portal_group *tpg, in iscsit_tpg_set_initiator_node_queue_depth() argument
598 return core_tpg_set_initiator_node_queue_depth(&tpg->tpg_se_tpg, in iscsit_tpg_set_initiator_node_queue_depth()
602 int iscsit_ta_authentication(struct iscsi_portal_group *tpg, u32 authentication) in iscsit_ta_authentication() argument
607 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_ta_authentication()
618 param = iscsi_find_param_from_key(AUTHMETHOD, tpg->param_list); in iscsit_ta_authentication()
658 a->authentication ? "Enforcing" : "Disabling", tpg->tpgt); in iscsit_ta_authentication()
664 struct iscsi_portal_group *tpg, in iscsit_ta_login_timeout() argument
667 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_ta_login_timeout()
681 " %hu\n", a->login_timeout, tpg->tpgt); in iscsit_ta_login_timeout()
687 struct iscsi_portal_group *tpg, in iscsit_ta_netif_timeout() argument
690 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_ta_netif_timeout()
706 " Target Portal Group %hu\n", a->netif_timeout, tpg->tpgt); in iscsit_ta_netif_timeout()
712 struct iscsi_portal_group *tpg, in iscsit_ta_generate_node_acls() argument
715 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_ta_generate_node_acls()
724 tpg->tpgt, (a->generate_node_acls) ? "Enabled" : "Disabled"); in iscsit_ta_generate_node_acls()
736 struct iscsi_portal_group *tpg, in iscsit_ta_default_cmdsn_depth() argument
739 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_ta_default_cmdsn_depth()
755 tpg->tpgt, a->default_cmdsn_depth); in iscsit_ta_default_cmdsn_depth()
761 struct iscsi_portal_group *tpg, in iscsit_ta_cache_dynamic_acls() argument
764 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_ta_cache_dynamic_acls()
779 " ACLs %s\n", tpg->tpgt, (a->cache_dynamic_acls) ? in iscsit_ta_cache_dynamic_acls()
786 struct iscsi_portal_group *tpg, in iscsit_ta_demo_mode_write_protect() argument
789 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_ta_demo_mode_write_protect()
798 tpg->tpgt, (a->demo_mode_write_protect) ? "ON" : "OFF"); in iscsit_ta_demo_mode_write_protect()
804 struct iscsi_portal_group *tpg, in iscsit_ta_prod_mode_write_protect() argument
807 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_ta_prod_mode_write_protect()
816 " %s\n", tpg->tpgt, (a->prod_mode_write_protect) ? in iscsit_ta_prod_mode_write_protect()
823 struct iscsi_portal_group *tpg, in iscsit_ta_demo_mode_discovery() argument
826 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_ta_demo_mode_discovery()
835 " %s\n", tpg->tpgt, (a->demo_mode_discovery) ? in iscsit_ta_demo_mode_discovery()
842 struct iscsi_portal_group *tpg, in iscsit_ta_default_erl() argument
845 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_ta_default_erl()
853 pr_debug("iSCSI_TPG[%hu] - DefaultERL: %u\n", tpg->tpgt, a->default_erl); in iscsit_ta_default_erl()
859 struct iscsi_portal_group *tpg, in iscsit_ta_t10_pi() argument
862 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_ta_t10_pi()
871 " %s\n", tpg->tpgt, (a->t10_pi) ? in iscsit_ta_t10_pi()
878 struct iscsi_portal_group *tpg, in iscsit_ta_fabric_prot_type() argument
881 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib; in iscsit_ta_fabric_prot_type()
890 tpg->tpgt, prot_type); in iscsit_ta_fabric_prot_type()