Lines Matching refs:tpg

302 	struct vhost_scsi_tpg *tpg = container_of(se_tpg,  in vhost_scsi_get_fabric_proto_ident()  local
304 struct vhost_scsi_tport *tport = tpg->tport; in vhost_scsi_get_fabric_proto_ident()
324 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_get_fabric_wwn() local
326 struct vhost_scsi_tport *tport = tpg->tport; in vhost_scsi_get_fabric_wwn()
333 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_get_tpgt() local
335 return tpg->tport_tpgt; in vhost_scsi_get_tpgt()
350 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_get_pr_transport_id() local
352 struct vhost_scsi_tport *tport = tpg->tport; in vhost_scsi_get_pr_transport_id()
380 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_get_pr_transport_id_len() local
382 struct vhost_scsi_tport *tport = tpg->tport; in vhost_scsi_get_pr_transport_id_len()
410 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_parse_pr_out_transport_id() local
412 struct vhost_scsi_tport *tport = tpg->tport; in vhost_scsi_parse_pr_out_transport_id()
436 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_check_prot_fabric_only() local
439 return tpg->tv_fabric_prot_type; in vhost_scsi_check_prot_fabric_only()
741 vhost_scsi_get_tag(struct vhost_virtqueue *vq, struct vhost_scsi_tpg *tpg, in vhost_scsi_get_tag() argument
752 tv_nexus = tpg->tpg_nexus; in vhost_scsi_get_tag()
1007 struct vhost_scsi_tpg **vs_tpg, *tpg; in vhost_scsi_handle_vq() local
1106 tpg = ACCESS_ONCE(vs_tpg[*target]); in vhost_scsi_handle_vq()
1107 if (unlikely(!tpg)) { in vhost_scsi_handle_vq()
1204 cmd = vhost_scsi_get_tag(vq, tpg, cdb, tag, lun, task_attr, in vhost_scsi_handle_vq()
1260 struct vhost_scsi_tpg *tpg, in vhost_scsi_send_evt() argument
1271 if (tpg && lun) { in vhost_scsi_send_evt()
1278 evt->event.lun[1] = tpg->tport_tpgt; in vhost_scsi_send_evt()
1359 struct vhost_scsi_tpg *tpg; in vhost_scsi_set_endpoint() local
1386 list_for_each_entry(tpg, &vhost_scsi_list, tv_tpg_list) { in vhost_scsi_set_endpoint()
1387 mutex_lock(&tpg->tv_tpg_mutex); in vhost_scsi_set_endpoint()
1388 if (!tpg->tpg_nexus) { in vhost_scsi_set_endpoint()
1389 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_set_endpoint()
1392 if (tpg->tv_tpg_vhost_count != 0) { in vhost_scsi_set_endpoint()
1393 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_set_endpoint()
1396 tv_tport = tpg->tport; in vhost_scsi_set_endpoint()
1399 if (vs->vs_tpg && vs->vs_tpg[tpg->tport_tpgt]) { in vhost_scsi_set_endpoint()
1401 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_set_endpoint()
1411 se_tpg = &tpg->se_tpg; in vhost_scsi_set_endpoint()
1416 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_set_endpoint()
1419 tpg->tv_tpg_vhost_count++; in vhost_scsi_set_endpoint()
1420 tpg->vhost_scsi = vs; in vhost_scsi_set_endpoint()
1421 vs_tpg[tpg->tport_tpgt] = tpg; in vhost_scsi_set_endpoint()
1425 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_set_endpoint()
1463 struct vhost_scsi_tpg *tpg; in vhost_scsi_clear_endpoint() local
1486 tpg = vs->vs_tpg[target]; in vhost_scsi_clear_endpoint()
1487 if (!tpg) in vhost_scsi_clear_endpoint()
1490 mutex_lock(&tpg->tv_tpg_mutex); in vhost_scsi_clear_endpoint()
1491 tv_tport = tpg->tport; in vhost_scsi_clear_endpoint()
1500 tv_tport->tport_name, tpg->tport_tpgt, in vhost_scsi_clear_endpoint()
1505 tpg->tv_tpg_vhost_count--; in vhost_scsi_clear_endpoint()
1506 tpg->vhost_scsi = NULL; in vhost_scsi_clear_endpoint()
1509 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_clear_endpoint()
1514 se_tpg = &tpg->se_tpg; in vhost_scsi_clear_endpoint()
1538 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_clear_endpoint()
1752 vhost_scsi_do_plug(struct vhost_scsi_tpg *tpg, in vhost_scsi_do_plug() argument
1756 struct vhost_scsi *vs = tpg->vhost_scsi; in vhost_scsi_do_plug()
1773 vhost_scsi_send_evt(vs, tpg, lun, in vhost_scsi_do_plug()
1779 static void vhost_scsi_hotplug(struct vhost_scsi_tpg *tpg, struct se_lun *lun) in vhost_scsi_hotplug() argument
1781 vhost_scsi_do_plug(tpg, lun, true); in vhost_scsi_hotplug()
1784 static void vhost_scsi_hotunplug(struct vhost_scsi_tpg *tpg, struct se_lun *lun) in vhost_scsi_hotunplug() argument
1786 vhost_scsi_do_plug(tpg, lun, false); in vhost_scsi_hotunplug()
1792 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_port_link() local
1797 mutex_lock(&tpg->tv_tpg_mutex); in vhost_scsi_port_link()
1798 tpg->tv_tpg_port_count++; in vhost_scsi_port_link()
1799 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_port_link()
1801 vhost_scsi_hotplug(tpg, lun); in vhost_scsi_port_link()
1811 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_port_unlink() local
1816 mutex_lock(&tpg->tv_tpg_mutex); in vhost_scsi_port_unlink()
1817 tpg->tv_tpg_port_count--; in vhost_scsi_port_unlink()
1818 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_port_unlink()
1820 vhost_scsi_hotunplug(tpg, lun); in vhost_scsi_port_unlink()
1892 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_tpg_attrib_store_fabric_prot_type() local
1905 tpg->tv_fabric_prot_type = val; in vhost_scsi_tpg_attrib_store_fabric_prot_type()
1914 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_tpg_attrib_show_fabric_prot_type() local
1917 return sprintf(page, "%d\n", tpg->tv_fabric_prot_type); in vhost_scsi_tpg_attrib_show_fabric_prot_type()
1926 static int vhost_scsi_make_nexus(struct vhost_scsi_tpg *tpg, in vhost_scsi_make_nexus() argument
1935 mutex_lock(&tpg->tv_tpg_mutex); in vhost_scsi_make_nexus()
1936 if (tpg->tpg_nexus) { in vhost_scsi_make_nexus()
1937 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_make_nexus()
1941 se_tpg = &tpg->se_tpg; in vhost_scsi_make_nexus()
1945 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_make_nexus()
1958 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_make_nexus()
1969 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_make_nexus()
1977 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_make_nexus()
1985 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_make_nexus()
1998 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_make_nexus()
2008 tpg->tpg_nexus = tv_nexus; in vhost_scsi_make_nexus()
2010 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_make_nexus()
2020 static int vhost_scsi_drop_nexus(struct vhost_scsi_tpg *tpg) in vhost_scsi_drop_nexus() argument
2025 mutex_lock(&tpg->tv_tpg_mutex); in vhost_scsi_drop_nexus()
2026 tv_nexus = tpg->tpg_nexus; in vhost_scsi_drop_nexus()
2028 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_drop_nexus()
2034 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_drop_nexus()
2038 if (tpg->tv_tpg_port_count != 0) { in vhost_scsi_drop_nexus()
2039 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_drop_nexus()
2042 tpg->tv_tpg_port_count); in vhost_scsi_drop_nexus()
2046 if (tpg->tv_tpg_vhost_count != 0) { in vhost_scsi_drop_nexus()
2047 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_drop_nexus()
2050 tpg->tv_tpg_vhost_count); in vhost_scsi_drop_nexus()
2055 " %s Initiator Port: %s\n", vhost_scsi_dump_proto_id(tpg->tport), in vhost_scsi_drop_nexus()
2063 tpg->tpg_nexus = NULL; in vhost_scsi_drop_nexus()
2064 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_drop_nexus()
2073 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_tpg_show_nexus() local
2078 mutex_lock(&tpg->tv_tpg_mutex); in vhost_scsi_tpg_show_nexus()
2079 tv_nexus = tpg->tpg_nexus; in vhost_scsi_tpg_show_nexus()
2081 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_tpg_show_nexus()
2086 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_tpg_show_nexus()
2095 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_tpg_store_nexus() local
2097 struct vhost_scsi_tport *tport_wwn = tpg->tport; in vhost_scsi_tpg_store_nexus()
2104 ret = vhost_scsi_drop_nexus(tpg); in vhost_scsi_tpg_store_nexus()
2162 ret = vhost_scsi_make_nexus(tpg, port_ptr); in vhost_scsi_tpg_store_nexus()
2184 struct vhost_scsi_tpg *tpg; in vhost_scsi_make_tpg() local
2193 tpg = kzalloc(sizeof(struct vhost_scsi_tpg), GFP_KERNEL); in vhost_scsi_make_tpg()
2194 if (!tpg) { in vhost_scsi_make_tpg()
2198 mutex_init(&tpg->tv_tpg_mutex); in vhost_scsi_make_tpg()
2199 INIT_LIST_HEAD(&tpg->tv_tpg_list); in vhost_scsi_make_tpg()
2200 tpg->tport = tport; in vhost_scsi_make_tpg()
2201 tpg->tport_tpgt = tpgt; in vhost_scsi_make_tpg()
2204 &tpg->se_tpg, tpg, TRANSPORT_TPG_TYPE_NORMAL); in vhost_scsi_make_tpg()
2206 kfree(tpg); in vhost_scsi_make_tpg()
2210 list_add_tail(&tpg->tv_tpg_list, &vhost_scsi_list); in vhost_scsi_make_tpg()
2213 return &tpg->se_tpg; in vhost_scsi_make_tpg()
2218 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_drop_tpg() local
2222 list_del(&tpg->tv_tpg_list); in vhost_scsi_drop_tpg()
2227 vhost_scsi_drop_nexus(tpg); in vhost_scsi_drop_tpg()
2232 kfree(tpg); in vhost_scsi_drop_tpg()