Lines Matching refs:tpg

354 	struct vhost_scsi_tpg *tpg = container_of(se_tpg,  in vhost_scsi_get_fabric_wwn()  local
356 struct vhost_scsi_tport *tport = tpg->tport; in vhost_scsi_get_fabric_wwn()
363 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_get_tpgt() local
365 return tpg->tport_tpgt; in vhost_scsi_get_tpgt()
370 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_check_prot_fabric_only() local
373 return tpg->tv_fabric_prot_type; in vhost_scsi_check_prot_fabric_only()
1223 struct vhost_scsi_tpg **vs_tpg, *tpg = NULL; in vhost_scsi_get_req() local
1228 tpg = READ_ONCE(vs_tpg[*vc->target]); in vhost_scsi_get_req()
1229 if (unlikely(!tpg)) in vhost_scsi_get_req()
1234 *tpgp = tpg; in vhost_scsi_get_req()
1286 struct vhost_scsi_tpg **vs_tpg, *tpg; in vhost_scsi_handle_vq() local
1350 ret = vhost_scsi_get_req(vq, &vc, &tpg); in vhost_scsi_handle_vq()
1448 nexus = tpg->tpg_nexus; in vhost_scsi_handle_vq()
1584 vhost_scsi_handle_tmf(struct vhost_scsi *vs, struct vhost_scsi_tpg *tpg, in vhost_scsi_handle_tmf() argument
1598 if (!tpg->tpg_nexus || !tpg->tpg_nexus->tvn_se_sess) { in vhost_scsi_handle_tmf()
1629 if (target_submit_tmr(&tmf->se_cmd, tpg->tpg_nexus->tvn_se_sess, NULL, in vhost_scsi_handle_tmf()
1670 struct vhost_scsi_tpg *tpg; in vhost_scsi_ctl_handle_vq() local
1757 ret = vhost_scsi_get_req(vq, &vc, &tpg); in vhost_scsi_ctl_handle_vq()
1762 vhost_scsi_handle_tmf(vs, tpg, vq, &v_req.tmf, &vc, in vhost_scsi_ctl_handle_vq()
1801 struct vhost_scsi_tpg *tpg, struct se_lun *lun, in vhost_scsi_send_evt() argument
1810 if (tpg && lun) { in vhost_scsi_send_evt()
1817 evt->event.lun[1] = tpg->tport_tpgt; in vhost_scsi_send_evt()
1990 struct vhost_scsi_tpg *tpg; in vhost_scsi_set_endpoint() local
2022 list_for_each_entry(tpg, &vhost_scsi_list, tv_tpg_list) { in vhost_scsi_set_endpoint()
2023 mutex_lock(&tpg->tv_tpg_mutex); in vhost_scsi_set_endpoint()
2024 if (!tpg->tpg_nexus) { in vhost_scsi_set_endpoint()
2025 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_set_endpoint()
2028 if (tpg->tv_tpg_vhost_count != 0) { in vhost_scsi_set_endpoint()
2029 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_set_endpoint()
2032 tv_tport = tpg->tport; in vhost_scsi_set_endpoint()
2041 se_tpg = &tpg->se_tpg; in vhost_scsi_set_endpoint()
2045 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_set_endpoint()
2049 tpg->tv_tpg_vhost_count++; in vhost_scsi_set_endpoint()
2050 tpg->vhost_scsi = vs; in vhost_scsi_set_endpoint()
2051 vs_tpg[tpg->tport_tpgt] = tpg; in vhost_scsi_set_endpoint()
2054 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_set_endpoint()
2100 tpg = vs_tpg[i]; in vhost_scsi_set_endpoint()
2101 if (tpg) { in vhost_scsi_set_endpoint()
2102 mutex_lock(&tpg->tv_tpg_mutex); in vhost_scsi_set_endpoint()
2103 tpg->vhost_scsi = NULL; in vhost_scsi_set_endpoint()
2104 tpg->tv_tpg_vhost_count--; in vhost_scsi_set_endpoint()
2105 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_set_endpoint()
2106 target_undepend_item(&tpg->se_tpg.tpg_group.cg_item); in vhost_scsi_set_endpoint()
2122 struct vhost_scsi_tpg *tpg; in vhost_scsi_clear_endpoint() local
2144 tpg = vs->vs_tpg[target]; in vhost_scsi_clear_endpoint()
2145 if (!tpg) in vhost_scsi_clear_endpoint()
2148 tv_tport = tpg->tport; in vhost_scsi_clear_endpoint()
2157 tv_tport->tport_name, tpg->tport_tpgt, in vhost_scsi_clear_endpoint()
2188 tpg = vs->vs_tpg[target]; in vhost_scsi_clear_endpoint()
2189 if (!tpg) in vhost_scsi_clear_endpoint()
2192 mutex_lock(&tpg->tv_tpg_mutex); in vhost_scsi_clear_endpoint()
2194 tpg->tv_tpg_vhost_count--; in vhost_scsi_clear_endpoint()
2195 tpg->vhost_scsi = NULL; in vhost_scsi_clear_endpoint()
2198 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_clear_endpoint()
2200 se_tpg = &tpg->se_tpg; in vhost_scsi_clear_endpoint()
2484 vhost_scsi_do_plug(struct vhost_scsi_tpg *tpg, in vhost_scsi_do_plug() argument
2488 struct vhost_scsi *vs = tpg->vhost_scsi; in vhost_scsi_do_plug()
2510 vhost_scsi_send_evt(vs, vq, tpg, lun, in vhost_scsi_do_plug()
2516 static void vhost_scsi_hotplug(struct vhost_scsi_tpg *tpg, struct se_lun *lun) in vhost_scsi_hotplug() argument
2518 vhost_scsi_do_plug(tpg, lun, true); in vhost_scsi_hotplug()
2521 static void vhost_scsi_hotunplug(struct vhost_scsi_tpg *tpg, struct se_lun *lun) in vhost_scsi_hotunplug() argument
2523 vhost_scsi_do_plug(tpg, lun, false); in vhost_scsi_hotunplug()
2529 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_port_link() local
2532 mutex_lock(&tpg->tv_tpg_mutex); in vhost_scsi_port_link()
2533 tpg->tv_tpg_port_count++; in vhost_scsi_port_link()
2534 vhost_scsi_hotplug(tpg, lun); in vhost_scsi_port_link()
2535 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_port_link()
2543 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_port_unlink() local
2546 mutex_lock(&tpg->tv_tpg_mutex); in vhost_scsi_port_unlink()
2547 tpg->tv_tpg_port_count--; in vhost_scsi_port_unlink()
2548 vhost_scsi_hotunplug(tpg, lun); in vhost_scsi_port_unlink()
2549 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_port_unlink()
2556 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_tpg_attrib_fabric_prot_type_store() local
2569 tpg->tv_fabric_prot_type = val; in vhost_scsi_tpg_attrib_fabric_prot_type_store()
2578 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_tpg_attrib_fabric_prot_type_show() local
2581 return sysfs_emit(page, "%d\n", tpg->tv_fabric_prot_type); in vhost_scsi_tpg_attrib_fabric_prot_type_show()
2591 static int vhost_scsi_make_nexus(struct vhost_scsi_tpg *tpg, in vhost_scsi_make_nexus() argument
2596 mutex_lock(&tpg->tv_tpg_mutex); in vhost_scsi_make_nexus()
2597 if (tpg->tpg_nexus) { in vhost_scsi_make_nexus()
2598 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_make_nexus()
2605 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_make_nexus()
2614 tv_nexus->tvn_se_sess = target_setup_session(&tpg->se_tpg, 0, 0, in vhost_scsi_make_nexus()
2618 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_make_nexus()
2622 tpg->tpg_nexus = tv_nexus; in vhost_scsi_make_nexus()
2624 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_make_nexus()
2628 static int vhost_scsi_drop_nexus(struct vhost_scsi_tpg *tpg) in vhost_scsi_drop_nexus() argument
2633 mutex_lock(&tpg->tv_tpg_mutex); in vhost_scsi_drop_nexus()
2634 tv_nexus = tpg->tpg_nexus; in vhost_scsi_drop_nexus()
2636 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_drop_nexus()
2642 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_drop_nexus()
2646 if (tpg->tv_tpg_port_count != 0) { in vhost_scsi_drop_nexus()
2647 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_drop_nexus()
2650 tpg->tv_tpg_port_count); in vhost_scsi_drop_nexus()
2654 if (tpg->tv_tpg_vhost_count != 0) { in vhost_scsi_drop_nexus()
2655 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_drop_nexus()
2658 tpg->tv_tpg_vhost_count); in vhost_scsi_drop_nexus()
2663 " %s Initiator Port: %s\n", vhost_scsi_dump_proto_id(tpg->tport), in vhost_scsi_drop_nexus()
2670 tpg->tpg_nexus = NULL; in vhost_scsi_drop_nexus()
2671 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_drop_nexus()
2680 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_tpg_nexus_show() local
2685 mutex_lock(&tpg->tv_tpg_mutex); in vhost_scsi_tpg_nexus_show()
2686 tv_nexus = tpg->tpg_nexus; in vhost_scsi_tpg_nexus_show()
2688 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_tpg_nexus_show()
2693 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_tpg_nexus_show()
2702 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_tpg_nexus_store() local
2704 struct vhost_scsi_tport *tport_wwn = tpg->tport; in vhost_scsi_tpg_nexus_store()
2711 ret = vhost_scsi_drop_nexus(tpg); in vhost_scsi_tpg_nexus_store()
2769 ret = vhost_scsi_make_nexus(tpg, port_ptr); in vhost_scsi_tpg_nexus_store()
2789 struct vhost_scsi_tpg *tpg; in vhost_scsi_make_tpg() local
2798 tpg = kzalloc(sizeof(*tpg), GFP_KERNEL); in vhost_scsi_make_tpg()
2799 if (!tpg) { in vhost_scsi_make_tpg()
2803 mutex_init(&tpg->tv_tpg_mutex); in vhost_scsi_make_tpg()
2804 INIT_LIST_HEAD(&tpg->tv_tpg_list); in vhost_scsi_make_tpg()
2805 tpg->tport = tport; in vhost_scsi_make_tpg()
2806 tpg->tport_tpgt = tpgt; in vhost_scsi_make_tpg()
2808 ret = core_tpg_register(wwn, &tpg->se_tpg, tport->tport_proto_id); in vhost_scsi_make_tpg()
2810 kfree(tpg); in vhost_scsi_make_tpg()
2814 list_add_tail(&tpg->tv_tpg_list, &vhost_scsi_list); in vhost_scsi_make_tpg()
2817 return &tpg->se_tpg; in vhost_scsi_make_tpg()
2822 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_drop_tpg() local
2826 list_del(&tpg->tv_tpg_list); in vhost_scsi_drop_tpg()
2831 vhost_scsi_drop_nexus(tpg); in vhost_scsi_drop_tpg()
2836 kfree(tpg); in vhost_scsi_drop_tpg()