• Home
  • Raw
  • Download

Lines Matching refs:tpg

203 	struct vhost_scsi_tpg *tpg;  member
298 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_get_fabric_wwn() local
300 struct vhost_scsi_tport *tport = tpg->tport; in vhost_scsi_get_fabric_wwn()
307 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_get_tpgt() local
309 return tpg->tport_tpgt; in vhost_scsi_get_tpgt()
314 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_check_prot_fabric_only() local
317 return tpg->tv_fabric_prot_type; in vhost_scsi_check_prot_fabric_only()
349 struct vhost_scsi_tpg *tpg = tmf->tpg; in vhost_scsi_release_tmf_res() local
352 mutex_lock(&tpg->tv_tpg_mutex); in vhost_scsi_release_tmf_res()
353 list_add_tail(&tpg->tmf_queue, &tmf->queue_entry); in vhost_scsi_release_tmf_res()
354 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_release_tmf_res()
583 vhost_scsi_get_cmd(struct vhost_virtqueue *vq, struct vhost_scsi_tpg *tpg, in vhost_scsi_get_cmd() argument
595 tv_nexus = tpg->tpg_nexus; in vhost_scsi_get_cmd()
902 struct vhost_scsi_tpg **vs_tpg, *tpg; in vhost_scsi_get_req() local
906 tpg = READ_ONCE(vs_tpg[*vc->target]); in vhost_scsi_get_req()
907 if (unlikely(!tpg)) { in vhost_scsi_get_req()
911 *tpgp = tpg; in vhost_scsi_get_req()
927 struct vhost_scsi_tpg **vs_tpg, *tpg; in vhost_scsi_handle_vq() local
985 ret = vhost_scsi_get_req(vq, &vc, &tpg); in vhost_scsi_handle_vq()
1082 cmd = vhost_scsi_get_cmd(vq, tpg, cdb, tag, lun, task_attr, in vhost_scsi_handle_vq()
1172 vhost_scsi_handle_tmf(struct vhost_scsi *vs, struct vhost_scsi_tpg *tpg, in vhost_scsi_handle_tmf() argument
1185 if (!tpg->tpg_nexus || !tpg->tpg_nexus->tvn_se_sess) { in vhost_scsi_handle_tmf()
1190 mutex_lock(&tpg->tv_tpg_mutex); in vhost_scsi_handle_tmf()
1191 if (list_empty(&tpg->tmf_queue)) { in vhost_scsi_handle_tmf()
1193 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_handle_tmf()
1197 tmf = list_first_entry(&tpg->tmf_queue, struct vhost_scsi_tmf, in vhost_scsi_handle_tmf()
1200 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_handle_tmf()
1202 tmf->tpg = tpg; in vhost_scsi_handle_tmf()
1210 if (target_submit_tmr(&tmf->se_cmd, tpg->tpg_nexus->tvn_se_sess, NULL, in vhost_scsi_handle_tmf()
1250 struct vhost_scsi_tpg *tpg; in vhost_scsi_ctl_handle_vq() local
1332 ret = vhost_scsi_get_req(vq, &vc, &tpg); in vhost_scsi_ctl_handle_vq()
1337 vhost_scsi_handle_tmf(vs, tpg, vq, &v_req.tmf, &vc); in vhost_scsi_ctl_handle_vq()
1368 struct vhost_scsi_tpg *tpg, in vhost_scsi_send_evt() argument
1379 if (tpg && lun) { in vhost_scsi_send_evt()
1386 evt->event.lun[1] = tpg->tport_tpgt; in vhost_scsi_send_evt()
1536 struct vhost_scsi_tpg *tpg; in vhost_scsi_set_endpoint() local
1563 list_for_each_entry(tpg, &vhost_scsi_list, tv_tpg_list) { in vhost_scsi_set_endpoint()
1564 mutex_lock(&tpg->tv_tpg_mutex); in vhost_scsi_set_endpoint()
1565 if (!tpg->tpg_nexus) { in vhost_scsi_set_endpoint()
1566 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_set_endpoint()
1569 if (tpg->tv_tpg_vhost_count != 0) { in vhost_scsi_set_endpoint()
1570 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_set_endpoint()
1573 tv_tport = tpg->tport; in vhost_scsi_set_endpoint()
1576 if (vs->vs_tpg && vs->vs_tpg[tpg->tport_tpgt]) { in vhost_scsi_set_endpoint()
1577 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_set_endpoint()
1587 se_tpg = &tpg->se_tpg; in vhost_scsi_set_endpoint()
1591 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_set_endpoint()
1594 tpg->tv_tpg_vhost_count++; in vhost_scsi_set_endpoint()
1595 tpg->vhost_scsi = vs; in vhost_scsi_set_endpoint()
1596 vs_tpg[tpg->tport_tpgt] = tpg; in vhost_scsi_set_endpoint()
1599 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_set_endpoint()
1644 tpg = vs_tpg[i]; in vhost_scsi_set_endpoint()
1645 if (tpg) { in vhost_scsi_set_endpoint()
1646 tpg->tv_tpg_vhost_count--; in vhost_scsi_set_endpoint()
1647 target_undepend_item(&tpg->se_tpg.tpg_group.cg_item); in vhost_scsi_set_endpoint()
1663 struct vhost_scsi_tpg *tpg; in vhost_scsi_clear_endpoint() local
1686 tpg = vs->vs_tpg[target]; in vhost_scsi_clear_endpoint()
1687 if (!tpg) in vhost_scsi_clear_endpoint()
1690 mutex_lock(&tpg->tv_tpg_mutex); in vhost_scsi_clear_endpoint()
1691 tv_tport = tpg->tport; in vhost_scsi_clear_endpoint()
1700 tv_tport->tport_name, tpg->tport_tpgt, in vhost_scsi_clear_endpoint()
1705 tpg->tv_tpg_vhost_count--; in vhost_scsi_clear_endpoint()
1706 tpg->vhost_scsi = NULL; in vhost_scsi_clear_endpoint()
1709 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_clear_endpoint()
1714 se_tpg = &tpg->se_tpg; in vhost_scsi_clear_endpoint()
1745 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_clear_endpoint()
1947 vhost_scsi_do_plug(struct vhost_scsi_tpg *tpg, in vhost_scsi_do_plug() argument
1951 struct vhost_scsi *vs = tpg->vhost_scsi; in vhost_scsi_do_plug()
1968 vhost_scsi_send_evt(vs, tpg, lun, in vhost_scsi_do_plug()
1974 static void vhost_scsi_hotplug(struct vhost_scsi_tpg *tpg, struct se_lun *lun) in vhost_scsi_hotplug() argument
1976 vhost_scsi_do_plug(tpg, lun, true); in vhost_scsi_hotplug()
1979 static void vhost_scsi_hotunplug(struct vhost_scsi_tpg *tpg, struct se_lun *lun) in vhost_scsi_hotunplug() argument
1981 vhost_scsi_do_plug(tpg, lun, false); in vhost_scsi_hotunplug()
1987 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_port_link() local
1999 mutex_lock(&tpg->tv_tpg_mutex); in vhost_scsi_port_link()
2000 tpg->tv_tpg_port_count++; in vhost_scsi_port_link()
2001 list_add_tail(&tmf->queue_entry, &tpg->tmf_queue); in vhost_scsi_port_link()
2002 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_port_link()
2004 vhost_scsi_hotplug(tpg, lun); in vhost_scsi_port_link()
2014 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_port_unlink() local
2020 mutex_lock(&tpg->tv_tpg_mutex); in vhost_scsi_port_unlink()
2021 tpg->tv_tpg_port_count--; in vhost_scsi_port_unlink()
2022 tmf = list_first_entry(&tpg->tmf_queue, struct vhost_scsi_tmf, in vhost_scsi_port_unlink()
2026 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_port_unlink()
2028 vhost_scsi_hotunplug(tpg, lun); in vhost_scsi_port_unlink()
2037 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_tpg_attrib_fabric_prot_type_store() local
2050 tpg->tv_fabric_prot_type = val; in vhost_scsi_tpg_attrib_fabric_prot_type_store()
2059 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_tpg_attrib_fabric_prot_type_show() local
2062 return sprintf(page, "%d\n", tpg->tv_fabric_prot_type); in vhost_scsi_tpg_attrib_fabric_prot_type_show()
2072 static int vhost_scsi_make_nexus(struct vhost_scsi_tpg *tpg, in vhost_scsi_make_nexus() argument
2077 mutex_lock(&tpg->tv_tpg_mutex); in vhost_scsi_make_nexus()
2078 if (tpg->tpg_nexus) { in vhost_scsi_make_nexus()
2079 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_make_nexus()
2086 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_make_nexus()
2095 tv_nexus->tvn_se_sess = target_setup_session(&tpg->se_tpg, 0, 0, in vhost_scsi_make_nexus()
2099 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_make_nexus()
2103 tpg->tpg_nexus = tv_nexus; in vhost_scsi_make_nexus()
2105 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_make_nexus()
2109 static int vhost_scsi_drop_nexus(struct vhost_scsi_tpg *tpg) in vhost_scsi_drop_nexus() argument
2114 mutex_lock(&tpg->tv_tpg_mutex); in vhost_scsi_drop_nexus()
2115 tv_nexus = tpg->tpg_nexus; in vhost_scsi_drop_nexus()
2117 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_drop_nexus()
2123 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_drop_nexus()
2127 if (tpg->tv_tpg_port_count != 0) { in vhost_scsi_drop_nexus()
2128 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_drop_nexus()
2131 tpg->tv_tpg_port_count); in vhost_scsi_drop_nexus()
2135 if (tpg->tv_tpg_vhost_count != 0) { in vhost_scsi_drop_nexus()
2136 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_drop_nexus()
2139 tpg->tv_tpg_vhost_count); in vhost_scsi_drop_nexus()
2144 " %s Initiator Port: %s\n", vhost_scsi_dump_proto_id(tpg->tport), in vhost_scsi_drop_nexus()
2151 tpg->tpg_nexus = NULL; in vhost_scsi_drop_nexus()
2152 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_drop_nexus()
2161 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_tpg_nexus_show() local
2166 mutex_lock(&tpg->tv_tpg_mutex); in vhost_scsi_tpg_nexus_show()
2167 tv_nexus = tpg->tpg_nexus; in vhost_scsi_tpg_nexus_show()
2169 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_tpg_nexus_show()
2174 mutex_unlock(&tpg->tv_tpg_mutex); in vhost_scsi_tpg_nexus_show()
2183 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_tpg_nexus_store() local
2185 struct vhost_scsi_tport *tport_wwn = tpg->tport; in vhost_scsi_tpg_nexus_store()
2192 ret = vhost_scsi_drop_nexus(tpg); in vhost_scsi_tpg_nexus_store()
2250 ret = vhost_scsi_make_nexus(tpg, port_ptr); in vhost_scsi_tpg_nexus_store()
2270 struct vhost_scsi_tpg *tpg; in vhost_scsi_make_tpg() local
2279 tpg = kzalloc(sizeof(*tpg), GFP_KERNEL); in vhost_scsi_make_tpg()
2280 if (!tpg) { in vhost_scsi_make_tpg()
2284 mutex_init(&tpg->tv_tpg_mutex); in vhost_scsi_make_tpg()
2285 INIT_LIST_HEAD(&tpg->tv_tpg_list); in vhost_scsi_make_tpg()
2286 INIT_LIST_HEAD(&tpg->tmf_queue); in vhost_scsi_make_tpg()
2287 tpg->tport = tport; in vhost_scsi_make_tpg()
2288 tpg->tport_tpgt = tpgt; in vhost_scsi_make_tpg()
2290 ret = core_tpg_register(wwn, &tpg->se_tpg, tport->tport_proto_id); in vhost_scsi_make_tpg()
2292 kfree(tpg); in vhost_scsi_make_tpg()
2296 list_add_tail(&tpg->tv_tpg_list, &vhost_scsi_list); in vhost_scsi_make_tpg()
2299 return &tpg->se_tpg; in vhost_scsi_make_tpg()
2304 struct vhost_scsi_tpg *tpg = container_of(se_tpg, in vhost_scsi_drop_tpg() local
2308 list_del(&tpg->tv_tpg_list); in vhost_scsi_drop_tpg()
2313 vhost_scsi_drop_nexus(tpg); in vhost_scsi_drop_tpg()
2318 kfree(tpg); in vhost_scsi_drop_tpg()