Lines Matching full:acl
44 struct se_node_acl *acl; in __core_tpg_get_initiator_node_acl() local
46 list_for_each_entry(acl, &tpg->acl_node_list, acl_list) { in __core_tpg_get_initiator_node_acl()
47 if (!strcmp(acl->initiatorname, initiatorname)) in __core_tpg_get_initiator_node_acl()
48 return acl; in __core_tpg_get_initiator_node_acl()
62 struct se_node_acl *acl; in core_tpg_get_initiator_node_acl() local
65 * initiatorname[] during node acl endpoint lookup driven by in core_tpg_get_initiator_node_acl()
73 acl = __core_tpg_get_initiator_node_acl(tpg, initiatorname); in core_tpg_get_initiator_node_acl()
74 if (acl) { in core_tpg_get_initiator_node_acl()
75 if (!kref_get_unless_zero(&acl->acl_kref)) in core_tpg_get_initiator_node_acl()
76 acl = NULL; in core_tpg_get_initiator_node_acl()
80 return acl; in core_tpg_get_initiator_node_acl()
105 struct se_node_acl *acl, in core_tpg_add_node_to_devs() argument
144 lun_access_ro, acl, tpg); in core_tpg_add_node_to_devs()
148 * LUN ACL now.. in core_tpg_add_node_to_devs()
150 core_scsi3_check_aptpl_registration(dev, tpg, lun, acl, in core_tpg_add_node_to_devs()
158 struct se_node_acl *acl, u32 queue_depth) in target_set_nacl_queue_depth() argument
160 acl->queue_depth = queue_depth; in target_set_nacl_queue_depth()
162 if (!acl->queue_depth) { in target_set_nacl_queue_depth()
165 acl->initiatorname); in target_set_nacl_queue_depth()
166 acl->queue_depth = 1; in target_set_nacl_queue_depth()
173 struct se_node_acl *acl; in target_alloc_node_acl() local
176 acl = kzalloc(max(sizeof(*acl), tpg->se_tpg_tfo->node_acl_size), in target_alloc_node_acl()
178 if (!acl) in target_alloc_node_acl()
181 INIT_LIST_HEAD(&acl->acl_list); in target_alloc_node_acl()
182 INIT_LIST_HEAD(&acl->acl_sess_list); in target_alloc_node_acl()
183 INIT_HLIST_HEAD(&acl->lun_entry_hlist); in target_alloc_node_acl()
184 kref_init(&acl->acl_kref); in target_alloc_node_acl()
185 init_completion(&acl->acl_free_comp); in target_alloc_node_acl()
186 spin_lock_init(&acl->nacl_sess_lock); in target_alloc_node_acl()
187 mutex_init(&acl->lun_entry_mutex); in target_alloc_node_acl()
188 atomic_set(&acl->acl_pr_ref_count, 0); in target_alloc_node_acl()
194 target_set_nacl_queue_depth(tpg, acl, queue_depth); in target_alloc_node_acl()
196 snprintf(acl->initiatorname, TRANSPORT_IQN_LEN, "%s", initiatorname); in target_alloc_node_acl()
197 acl->se_tpg = tpg; in target_alloc_node_acl()
198 acl->acl_index = scsi_get_new_index(SCSI_AUTH_INTR_INDEX); in target_alloc_node_acl()
200 tpg->se_tpg_tfo->set_default_node_attributes(acl); in target_alloc_node_acl()
202 return acl; in target_alloc_node_acl()
205 static void target_add_node_acl(struct se_node_acl *acl) in target_add_node_acl() argument
207 struct se_portal_group *tpg = acl->se_tpg; in target_add_node_acl()
210 list_add_tail(&acl->acl_list, &tpg->acl_node_list); in target_add_node_acl()
213 pr_debug("%s_TPG[%hu] - Added %s ACL with TCQ Depth: %d for %s" in target_add_node_acl()
217 acl->dynamic_node_acl ? "DYNAMIC" : "", in target_add_node_acl()
218 acl->queue_depth, in target_add_node_acl()
220 acl->initiatorname); in target_add_node_acl()
226 struct se_node_acl *acl; in target_tpg_has_node_acl() local
230 list_for_each_entry(acl, &tpg->acl_node_list, acl_list) { in target_tpg_has_node_acl()
231 if (!strcmp(acl->initiatorname, initiatorname)) { in target_tpg_has_node_acl()
246 struct se_node_acl *acl; in core_tpg_check_initiator_node_acl() local
248 acl = core_tpg_get_initiator_node_acl(tpg, initiatorname); in core_tpg_check_initiator_node_acl()
249 if (acl) in core_tpg_check_initiator_node_acl()
250 return acl; in core_tpg_check_initiator_node_acl()
255 acl = target_alloc_node_acl(tpg, initiatorname); in core_tpg_check_initiator_node_acl()
256 if (!acl) in core_tpg_check_initiator_node_acl()
266 kref_get(&acl->acl_kref); in core_tpg_check_initiator_node_acl()
267 acl->dynamic_node_acl = 1; in core_tpg_check_initiator_node_acl()
276 core_tpg_add_node_to_devs(acl, tpg, NULL); in core_tpg_check_initiator_node_acl()
278 target_add_node_acl(acl); in core_tpg_check_initiator_node_acl()
279 return acl; in core_tpg_check_initiator_node_acl()
293 struct se_node_acl *acl; in core_tpg_add_initiator_node_acl() local
296 acl = __core_tpg_get_initiator_node_acl(tpg, initiatorname); in core_tpg_add_initiator_node_acl()
297 if (acl) { in core_tpg_add_initiator_node_acl()
298 if (acl->dynamic_node_acl) { in core_tpg_add_initiator_node_acl()
299 acl->dynamic_node_acl = 0; in core_tpg_add_initiator_node_acl()
300 pr_debug("%s_TPG[%u] - Replacing dynamic ACL" in core_tpg_add_initiator_node_acl()
304 return acl; in core_tpg_add_initiator_node_acl()
307 pr_err("ACL entry for %s Initiator" in core_tpg_add_initiator_node_acl()
316 acl = target_alloc_node_acl(tpg, initiatorname); in core_tpg_add_initiator_node_acl()
317 if (!acl) in core_tpg_add_initiator_node_acl()
320 target_add_node_acl(acl); in core_tpg_add_initiator_node_acl()
321 return acl; in core_tpg_add_initiator_node_acl()
324 static void target_shutdown_sessions(struct se_node_acl *acl) in target_shutdown_sessions() argument
330 spin_lock_irqsave(&acl->nacl_sess_lock, flags); in target_shutdown_sessions()
331 list_for_each_entry(sess, &acl->acl_sess_list, sess_acl_list) { in target_shutdown_sessions()
336 spin_unlock_irqrestore(&acl->nacl_sess_lock, flags); in target_shutdown_sessions()
338 if (acl->se_tpg->se_tpg_tfo->close_session) in target_shutdown_sessions()
339 acl->se_tpg->se_tpg_tfo->close_session(sess); in target_shutdown_sessions()
342 spin_unlock_irqrestore(&acl->nacl_sess_lock, flags); in target_shutdown_sessions()
345 void core_tpg_del_initiator_node_acl(struct se_node_acl *acl) in core_tpg_del_initiator_node_acl() argument
347 struct se_portal_group *tpg = acl->se_tpg; in core_tpg_del_initiator_node_acl()
350 if (acl->dynamic_node_acl) in core_tpg_del_initiator_node_acl()
351 acl->dynamic_node_acl = 0; in core_tpg_del_initiator_node_acl()
352 list_del_init(&acl->acl_list); in core_tpg_del_initiator_node_acl()
355 target_shutdown_sessions(acl); in core_tpg_del_initiator_node_acl()
357 target_put_nacl(acl); in core_tpg_del_initiator_node_acl()
362 wait_for_completion(&acl->acl_free_comp); in core_tpg_del_initiator_node_acl()
364 core_tpg_wait_for_nacl_pr_ref(acl); in core_tpg_del_initiator_node_acl()
365 core_free_device_list_for_node(acl, tpg); in core_tpg_del_initiator_node_acl()
367 pr_debug("%s_TPG[%hu] - Deleted ACL with TCQ Depth: %d for %s" in core_tpg_del_initiator_node_acl()
369 tpg->se_tpg_tfo->tpg_get_tag(tpg), acl->queue_depth, in core_tpg_del_initiator_node_acl()
370 tpg->se_tpg_tfo->fabric_name, acl->initiatorname); in core_tpg_del_initiator_node_acl()
372 kfree(acl); in core_tpg_del_initiator_node_acl()
380 struct se_node_acl *acl, in core_tpg_set_initiator_node_queue_depth() argument
383 struct se_portal_group *tpg = acl->se_tpg; in core_tpg_set_initiator_node_queue_depth()
390 if (acl->queue_depth == queue_depth) in core_tpg_set_initiator_node_queue_depth()
397 target_set_nacl_queue_depth(tpg, acl, queue_depth); in core_tpg_set_initiator_node_queue_depth()
402 target_shutdown_sessions(acl); in core_tpg_set_initiator_node_queue_depth()
405 " Node: %s on %s Target Portal Group: %u\n", acl->queue_depth, in core_tpg_set_initiator_node_queue_depth()
406 acl->initiatorname, tpg->se_tpg_tfo->fabric_name, in core_tpg_set_initiator_node_queue_depth()
421 struct se_node_acl *acl, in core_tpg_set_initiator_node_tag() argument
428 acl->acl_tag[0] = '\0'; in core_tpg_set_initiator_node_tag()
432 return snprintf(acl->acl_tag, MAX_ACL_TAG_SIZE, "%s", new_tag); in core_tpg_set_initiator_node_tag()