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