Lines Matching defs: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;
227 int iscsit_tpg_add_portal_group(struct iscsi_tiqn *tiqn, struct iscsi_portal_group *tpg)
229 if (tpg->tpg_state != TPG_STATE_FREE) {
231 " while not in TPG_STATE_FREE state.\n", tpg->tpgt);
234 iscsit_set_default_tpg_attribs(tpg);
236 if (iscsi_create_default_params(&tpg->param_list) < 0)
239 tpg->tpg_attrib.tpg = tpg;
241 spin_lock(&tpg->tpg_state_lock);
242 tpg->tpg_state = TPG_STATE_INACTIVE;
243 spin_unlock(&tpg->tpg_state_lock);
246 list_add_tail(&tpg->tpg_list, &tiqn->tiqn_tpg_list);
249 tiqn->tiqn, tpg->tpgt);
254 if (tpg->param_list) {
255 iscsi_release_param_list(tpg->param_list);
256 tpg->param_list = NULL;
263 struct iscsi_portal_group *tpg,
266 u8 old_state = tpg->tpg_state;
268 spin_lock(&tpg->tpg_state_lock);
269 tpg->tpg_state = TPG_STATE_INACTIVE;
270 spin_unlock(&tpg->tpg_state_lock);
272 if (iscsit_release_sessions_for_tpg(tpg, force) < 0) {
275 tpg->tpgt);
276 tpg->tpg_state = old_state;
280 if (tpg->param_list) {
281 iscsi_release_param_list(tpg->param_list);
282 tpg->param_list = NULL;
285 core_tpg_deregister(&tpg->tpg_se_tpg);
287 spin_lock(&tpg->tpg_state_lock);
288 tpg->tpg_state = TPG_STATE_FREE;
289 spin_unlock(&tpg->tpg_state_lock);
293 list_del(&tpg->tpg_list);
297 tiqn->tiqn, tpg->tpgt);
299 kfree(tpg);
303 int iscsit_tpg_enable_portal_group(struct iscsi_portal_group *tpg)
306 struct iscsi_tiqn *tiqn = tpg->tpg_tiqn;
309 if (tpg->tpg_state == TPG_STATE_ACTIVE) {
311 " active, ignoring request.\n", tpg->tpgt);
319 param = iscsi_find_param_from_key(AUTHMETHOD, tpg->param_list);
323 if (tpg->tpg_attrib.authentication) {
330 ret = iscsit_ta_authentication(tpg, 1);
335 spin_lock(&tpg->tpg_state_lock);
336 tpg->tpg_state = TPG_STATE_ACTIVE;
337 spin_unlock(&tpg->tpg_state_lock);
342 tpg->tpgt);
351 int iscsit_tpg_disable_portal_group(struct iscsi_portal_group *tpg, int force)
354 u8 old_state = tpg->tpg_state;
356 spin_lock(&tpg->tpg_state_lock);
357 if (tpg->tpg_state == TPG_STATE_INACTIVE) {
359 " inactive, ignoring request.\n", tpg->tpgt);
360 spin_unlock(&tpg->tpg_state_lock);
363 tpg->tpg_state = TPG_STATE_INACTIVE;
364 spin_unlock(&tpg->tpg_state_lock);
366 iscsit_clear_tpg_np_login_threads(tpg, false);
368 if (iscsit_release_sessions_for_tpg(tpg, force) < 0) {
369 spin_lock(&tpg->tpg_state_lock);
370 tpg->tpg_state = old_state;
371 spin_unlock(&tpg->tpg_state_lock);
374 tpg->tpgt);
378 tiqn = tpg->tpg_tiqn;
379 if (!tiqn || (tpg == iscsit_global->discovery_tpg))
385 tpg->tpgt);
426 struct iscsi_portal_group *tpg;
432 list_for_each_entry(tpg, &tiqn->tiqn_tpg_list, tpg_list) {
434 spin_lock(&tpg->tpg_np_lock);
435 list_for_each_entry(tpg_np, &tpg->tpg_gnp_list, tpg_np_list) {
443 spin_unlock(&tpg->tpg_np_lock);
454 struct iscsi_portal_group *tpg,
463 if (iscsit_tpg_check_network_portal(tpg->tpg_tiqn, sockaddr,
467 tpg->tpg_tiqn->tiqn);
492 tpg_np->tpg = tpg;
494 spin_lock(&tpg->tpg_np_lock);
495 list_add_tail(&tpg_np->tpg_np_list, &tpg->tpg_gnp_list);
496 tpg->num_tpg_nps++;
497 if (tpg->tpg_tiqn)
498 tpg->tpg_tiqn->tiqn_num_tpg_nps++;
499 spin_unlock(&tpg->tpg_np_lock);
510 tpg->tpg_tiqn->tiqn, &np->np_sockaddr, tpg->tpgt,
518 struct iscsi_portal_group *tpg,
521 iscsit_clear_tpg_np_login_thread(tpg_np, tpg, true);
524 tpg->tpg_tiqn->tiqn, &np->np_sockaddr, tpg->tpgt,
528 tpg_np->tpg = NULL;
537 struct iscsi_portal_group *tpg,
553 * We are the parent tpg network portal. Release all of the
560 ret = iscsit_tpg_del_network_portal(tpg, tpg_np_child);
567 * We are not the parent ISCSI_TCP tpg network portal. Release
575 spin_lock(&tpg->tpg_np_lock);
577 tpg->num_tpg_nps--;
578 if (tpg->tpg_tiqn)
579 tpg->tpg_tiqn->tiqn_num_tpg_nps--;
580 spin_unlock(&tpg->tpg_np_lock);
582 return iscsit_tpg_release_np(tpg_np, tpg, np);
585 int iscsit_ta_authentication(struct iscsi_portal_group *tpg, u32 authentication)
590 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib;
601 param = iscsi_find_param_from_key(AUTHMETHOD, tpg->param_list);
640 a->authentication ? "Enforcing" : "Disabling", tpg->tpgt);
646 struct iscsi_portal_group *tpg,
649 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib;
663 " %hu\n", a->login_timeout, tpg->tpgt);
669 struct iscsi_portal_group *tpg,
672 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib;
681 tpg->tpgt, (a->generate_node_acls) ? "Enabled" : "Disabled");
693 struct iscsi_portal_group *tpg,
696 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib;
712 tpg->tpgt, a->default_cmdsn_depth);
718 struct iscsi_portal_group *tpg,
721 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib;
736 " ACLs %s\n", tpg->tpgt, (a->cache_dynamic_acls) ?
743 struct iscsi_portal_group *tpg,
746 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib;
755 tpg->tpgt, (a->demo_mode_write_protect) ? "ON" : "OFF");
761 struct iscsi_portal_group *tpg,
764 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib;
773 " %s\n", tpg->tpgt, (a->prod_mode_write_protect) ?
780 struct iscsi_portal_group *tpg,
783 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib;
792 " %s\n", tpg->tpgt, (a->demo_mode_discovery) ?
799 struct iscsi_portal_group *tpg,
802 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib;
810 pr_debug("iSCSI_TPG[%hu] - DefaultERL: %u\n", tpg->tpgt, a->default_erl);
816 struct iscsi_portal_group *tpg,
819 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib;
828 " %s\n", tpg->tpgt, (a->t10_pi) ?
835 struct iscsi_portal_group *tpg,
838 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib;
847 tpg->tpgt, prot_type);
853 struct iscsi_portal_group *tpg,
856 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib;
865 " %s\n", tpg->tpgt, (a->tpg_enabled_sendtargets) ? "ON" : "OFF");
871 struct iscsi_portal_group *tpg,
874 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib;
883 tpg->tpgt, (a->login_keys_workaround) ? "ON" : "OFF");