Lines Matching refs:tpg
289 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_get_fabric_wwn() local
291 struct vhost_scsi_tport *tport = tpg->tport; in vhost_scsi_get_fabric_wwn()
298 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_get_tpgt() local
300 return tpg->tport_tpgt; in vhost_scsi_get_tpgt()
305 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_check_prot_fabric_only() local
308 return tpg->tv_fabric_prot_type; in vhost_scsi_check_prot_fabric_only()
582 vhost_scsi_get_tag(struct vhost_virtqueue *vq, struct vhost_scsi_tpg *tpg, in vhost_scsi_get_tag() argument
593 tv_nexus = tpg->tpg_nexus; in vhost_scsi_get_tag()
849 struct vhost_scsi_tpg **vs_tpg, *tpg; in vhost_scsi_handle_vq() local
948 tpg = ACCESS_ONCE(vs_tpg[*target]); in vhost_scsi_handle_vq()
949 if (unlikely(!tpg)) { in vhost_scsi_handle_vq()
1046 cmd = vhost_scsi_get_tag(vq, tpg, cdb, tag, lun, task_attr, in vhost_scsi_handle_vq()
1102 struct vhost_scsi_tpg *tpg, in vhost_scsi_send_evt() argument
1113 if (tpg && lun) { in vhost_scsi_send_evt()
1120 evt->event.lun[1] = tpg->tport_tpgt; in vhost_scsi_send_evt()
1201 struct vhost_scsi_tpg *tpg; in vhost_scsi_set_endpoint() local
1228 list_for_each_entry(tpg, &vhost_scsi_list, tv_tpg_list) { in vhost_scsi_set_endpoint()
1229 mutex_lock(&tpg->tv_tpg_mutex); in vhost_scsi_set_endpoint()
1230 if (!tpg->tpg_nexus) { in vhost_scsi_set_endpoint()
1231 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_set_endpoint()
1234 if (tpg->tv_tpg_vhost_count != 0) { in vhost_scsi_set_endpoint()
1235 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_set_endpoint()
1238 tv_tport = tpg->tport; in vhost_scsi_set_endpoint()
1241 if (vs->vs_tpg && vs->vs_tpg[tpg->tport_tpgt]) { in vhost_scsi_set_endpoint()
1243 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_set_endpoint()
1253 se_tpg = &tpg->se_tpg; in vhost_scsi_set_endpoint()
1258 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_set_endpoint()
1261 tpg->tv_tpg_vhost_count++; in vhost_scsi_set_endpoint()
1262 tpg->vhost_scsi = vs; in vhost_scsi_set_endpoint()
1263 vs_tpg[tpg->tport_tpgt] = tpg; in vhost_scsi_set_endpoint()
1267 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_set_endpoint()
1305 struct vhost_scsi_tpg *tpg; in vhost_scsi_clear_endpoint() local
1328 tpg = vs->vs_tpg[target]; in vhost_scsi_clear_endpoint()
1329 if (!tpg) in vhost_scsi_clear_endpoint()
1332 mutex_lock(&tpg->tv_tpg_mutex); in vhost_scsi_clear_endpoint()
1333 tv_tport = tpg->tport; in vhost_scsi_clear_endpoint()
1342 tv_tport->tport_name, tpg->tport_tpgt, in vhost_scsi_clear_endpoint()
1347 tpg->tv_tpg_vhost_count--; in vhost_scsi_clear_endpoint()
1348 tpg->vhost_scsi = NULL; in vhost_scsi_clear_endpoint()
1351 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_clear_endpoint()
1356 se_tpg = &tpg->se_tpg; in vhost_scsi_clear_endpoint()
1380 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_clear_endpoint()
1594 vhost_scsi_do_plug(struct vhost_scsi_tpg *tpg, in vhost_scsi_do_plug() argument
1598 struct vhost_scsi *vs = tpg->vhost_scsi; in vhost_scsi_do_plug()
1615 vhost_scsi_send_evt(vs, tpg, lun, in vhost_scsi_do_plug()
1621 static void vhost_scsi_hotplug(struct vhost_scsi_tpg *tpg, struct se_lun *lun) in vhost_scsi_hotplug() argument
1623 vhost_scsi_do_plug(tpg, lun, true); in vhost_scsi_hotplug()
1626 static void vhost_scsi_hotunplug(struct vhost_scsi_tpg *tpg, struct se_lun *lun) in vhost_scsi_hotunplug() argument
1628 vhost_scsi_do_plug(tpg, lun, false); in vhost_scsi_hotunplug()
1634 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_port_link() local
1639 mutex_lock(&tpg->tv_tpg_mutex); in vhost_scsi_port_link()
1640 tpg->tv_tpg_port_count++; in vhost_scsi_port_link()
1641 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_port_link()
1643 vhost_scsi_hotplug(tpg, lun); in vhost_scsi_port_link()
1653 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_port_unlink() local
1658 mutex_lock(&tpg->tv_tpg_mutex); in vhost_scsi_port_unlink()
1659 tpg->tv_tpg_port_count--; in vhost_scsi_port_unlink()
1660 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_port_unlink()
1662 vhost_scsi_hotunplug(tpg, lun); in vhost_scsi_port_unlink()
1689 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_tpg_attrib_fabric_prot_type_store() local
1702 tpg->tv_fabric_prot_type = val; in vhost_scsi_tpg_attrib_fabric_prot_type_store()
1711 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_tpg_attrib_fabric_prot_type_show() local
1714 return sprintf(page, "%d\n", tpg->tv_fabric_prot_type); in vhost_scsi_tpg_attrib_fabric_prot_type_show()
1724 static int vhost_scsi_make_nexus(struct vhost_scsi_tpg *tpg, in vhost_scsi_make_nexus() argument
1733 mutex_lock(&tpg->tv_tpg_mutex); in vhost_scsi_make_nexus()
1734 if (tpg->tpg_nexus) { in vhost_scsi_make_nexus()
1735 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_make_nexus()
1739 se_tpg = &tpg->se_tpg; in vhost_scsi_make_nexus()
1743 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_make_nexus()
1756 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_make_nexus()
1767 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_make_nexus()
1775 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_make_nexus()
1783 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_make_nexus()
1796 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_make_nexus()
1806 tpg->tpg_nexus = tv_nexus; in vhost_scsi_make_nexus()
1808 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_make_nexus()
1818 static int vhost_scsi_drop_nexus(struct vhost_scsi_tpg *tpg) in vhost_scsi_drop_nexus() argument
1823 mutex_lock(&tpg->tv_tpg_mutex); in vhost_scsi_drop_nexus()
1824 tv_nexus = tpg->tpg_nexus; in vhost_scsi_drop_nexus()
1826 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_drop_nexus()
1832 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_drop_nexus()
1836 if (tpg->tv_tpg_port_count != 0) { in vhost_scsi_drop_nexus()
1837 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_drop_nexus()
1840 tpg->tv_tpg_port_count); in vhost_scsi_drop_nexus()
1844 if (tpg->tv_tpg_vhost_count != 0) { in vhost_scsi_drop_nexus()
1845 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_drop_nexus()
1848 tpg->tv_tpg_vhost_count); in vhost_scsi_drop_nexus()
1853 " %s Initiator Port: %s\n", vhost_scsi_dump_proto_id(tpg->tport), in vhost_scsi_drop_nexus()
1861 tpg->tpg_nexus = NULL; in vhost_scsi_drop_nexus()
1862 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_drop_nexus()
1871 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_tpg_nexus_show() local
1876 mutex_lock(&tpg->tv_tpg_mutex); in vhost_scsi_tpg_nexus_show()
1877 tv_nexus = tpg->tpg_nexus; in vhost_scsi_tpg_nexus_show()
1879 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_tpg_nexus_show()
1884 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_tpg_nexus_show()
1893 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_tpg_nexus_store() local
1895 struct vhost_scsi_tport *tport_wwn = tpg->tport; in vhost_scsi_tpg_nexus_store()
1902 ret = vhost_scsi_drop_nexus(tpg); in vhost_scsi_tpg_nexus_store()
1960 ret = vhost_scsi_make_nexus(tpg, port_ptr); in vhost_scsi_tpg_nexus_store()
1982 struct vhost_scsi_tpg *tpg; in vhost_scsi_make_tpg() local
1991 tpg = kzalloc(sizeof(struct vhost_scsi_tpg), GFP_KERNEL); in vhost_scsi_make_tpg()
1992 if (!tpg) { in vhost_scsi_make_tpg()
1996 mutex_init(&tpg->tv_tpg_mutex); in vhost_scsi_make_tpg()
1997 INIT_LIST_HEAD(&tpg->tv_tpg_list); in vhost_scsi_make_tpg()
1998 tpg->tport = tport; in vhost_scsi_make_tpg()
1999 tpg->tport_tpgt = tpgt; in vhost_scsi_make_tpg()
2001 ret = core_tpg_register(wwn, &tpg->se_tpg, tport->tport_proto_id); in vhost_scsi_make_tpg()
2003 kfree(tpg); in vhost_scsi_make_tpg()
2007 list_add_tail(&tpg->tv_tpg_list, &vhost_scsi_list); in vhost_scsi_make_tpg()
2010 return &tpg->se_tpg; in vhost_scsi_make_tpg()
2015 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_drop_tpg() local
2019 list_del(&tpg->tv_tpg_list); in vhost_scsi_drop_tpg()
2024 vhost_scsi_drop_nexus(tpg); in vhost_scsi_drop_tpg()
2029 kfree(tpg); in vhost_scsi_drop_tpg()