Lines Matching refs:lun
125 struct se_lun *lun; in core_tpg_add_node_to_devs() local
129 hlist_for_each_entry_rcu(lun, &tpg->tpg_lun_hlist, link) { in core_tpg_add_node_to_devs()
130 if (lun_orig && lun != lun_orig) in core_tpg_add_node_to_devs()
133 dev = rcu_dereference_check(lun->lun_se_dev, in core_tpg_add_node_to_devs()
155 tpg->se_tpg_tfo->tpg_get_tag(tpg), lun->unpacked_lun, in core_tpg_add_node_to_devs()
158 core_enable_device_list_for_node(lun, NULL, lun->unpacked_lun, in core_tpg_add_node_to_devs()
165 core_scsi3_check_aptpl_registration(dev, tpg, lun, acl, in core_tpg_add_node_to_devs()
166 lun->unpacked_lun); in core_tpg_add_node_to_devs()
453 struct se_lun *lun = container_of(ref, struct se_lun, lun_ref); in core_tpg_lun_ref_release() local
455 complete(&lun->lun_shutdown_comp); in core_tpg_lun_ref_release()
571 struct se_lun *lun; in core_tpg_alloc_lun() local
573 lun = kzalloc(sizeof(*lun), GFP_KERNEL); in core_tpg_alloc_lun()
574 if (!lun) { in core_tpg_alloc_lun()
578 lun->unpacked_lun = unpacked_lun; in core_tpg_alloc_lun()
579 atomic_set(&lun->lun_acl_count, 0); in core_tpg_alloc_lun()
580 init_completion(&lun->lun_ref_comp); in core_tpg_alloc_lun()
581 init_completion(&lun->lun_shutdown_comp); in core_tpg_alloc_lun()
582 INIT_LIST_HEAD(&lun->lun_deve_list); in core_tpg_alloc_lun()
583 INIT_LIST_HEAD(&lun->lun_dev_link); in core_tpg_alloc_lun()
584 atomic_set(&lun->lun_tg_pt_secondary_offline, 0); in core_tpg_alloc_lun()
585 spin_lock_init(&lun->lun_deve_lock); in core_tpg_alloc_lun()
586 mutex_init(&lun->lun_tg_pt_md_mutex); in core_tpg_alloc_lun()
587 INIT_LIST_HEAD(&lun->lun_tg_pt_gp_link); in core_tpg_alloc_lun()
588 spin_lock_init(&lun->lun_tg_pt_gp_lock); in core_tpg_alloc_lun()
589 lun->lun_tpg = tpg; in core_tpg_alloc_lun()
591 return lun; in core_tpg_alloc_lun()
596 struct se_lun *lun, in core_tpg_add_lun() argument
602 ret = percpu_ref_init(&lun->lun_ref, core_tpg_lun_ref_release, 0, in core_tpg_add_lun()
607 ret = core_alloc_rtpi(lun, dev); in core_tpg_add_lun()
614 target_attach_tg_pt_gp(lun, dev->t10_alua.default_tg_pt_gp); in core_tpg_add_lun()
619 lun->lun_index = dev->dev_index; in core_tpg_add_lun()
620 rcu_assign_pointer(lun->lun_se_dev, dev); in core_tpg_add_lun()
622 list_add_tail(&lun->lun_dev_link, &dev->dev_sep_list); in core_tpg_add_lun()
626 lun->lun_access_ro = true; in core_tpg_add_lun()
628 lun->lun_access_ro = lun_access_ro; in core_tpg_add_lun()
630 hlist_add_head_rcu(&lun->link, &tpg->tpg_lun_hlist); in core_tpg_add_lun()
636 percpu_ref_exit(&lun->lun_ref); in core_tpg_add_lun()
643 struct se_lun *lun) in core_tpg_remove_lun() argument
649 struct se_device *dev = rcu_dereference_raw(lun->lun_se_dev); in core_tpg_remove_lun()
651 lun->lun_shutdown = true; in core_tpg_remove_lun()
653 core_clear_lun_from_tpg(lun, tpg); in core_tpg_remove_lun()
660 transport_clear_lun_ref(lun); in core_tpg_remove_lun()
663 if (lun->lun_se_dev) { in core_tpg_remove_lun()
664 target_detach_tg_pt_gp(lun); in core_tpg_remove_lun()
667 list_del(&lun->lun_dev_link); in core_tpg_remove_lun()
669 rcu_assign_pointer(lun->lun_se_dev, NULL); in core_tpg_remove_lun()
673 hlist_del_rcu(&lun->link); in core_tpg_remove_lun()
675 lun->lun_shutdown = false; in core_tpg_remove_lun()
678 percpu_ref_exit(&lun->lun_ref); in core_tpg_remove_lun()