Lines Matching defs:tpg

305 	struct vhost_scsi_tpg *tpg = container_of(se_tpg,
307 struct vhost_scsi_tport *tport = tpg->tport;
314 struct vhost_scsi_tpg *tpg = container_of(se_tpg,
316 return tpg->tport_tpgt;
321 struct vhost_scsi_tpg *tpg = container_of(se_tpg,
324 return tpg->tv_fabric_prot_type;
612 vhost_scsi_get_cmd(struct vhost_virtqueue *vq, struct vhost_scsi_tpg *tpg,
625 tv_nexus = tpg->tpg_nexus;
1032 struct vhost_scsi_tpg **vs_tpg, *tpg;
1036 tpg = READ_ONCE(vs_tpg[*vc->target]);
1037 if (unlikely(!tpg)) {
1041 *tpgp = tpg;
1057 struct vhost_scsi_tpg **vs_tpg, *tpg;
1115 ret = vhost_scsi_get_req(vq, &vc, &tpg);
1212 cmd = vhost_scsi_get_cmd(vq, tpg, cdb, tag, lun, task_attr,
1317 vhost_scsi_handle_tmf(struct vhost_scsi *vs, struct vhost_scsi_tpg *tpg,
1330 if (!tpg->tpg_nexus || !tpg->tpg_nexus->tvn_se_sess) {
1348 if (target_submit_tmr(&tmf->se_cmd, tpg->tpg_nexus->tvn_se_sess, NULL,
1388 struct vhost_scsi_tpg *tpg;
1470 ret = vhost_scsi_get_req(vq, &vc, &tpg);
1475 vhost_scsi_handle_tmf(vs, tpg, vq, &v_req.tmf, &vc);
1506 struct vhost_scsi_tpg *tpg, struct se_lun *lun,
1515 if (tpg && lun) {
1522 evt->event.lun[1] = tpg->tport_tpgt;
1674 * vs->dev.mutex -> vhost_scsi_mutex -> tpg->tv_tpg_mutex -> vq->mutex
1682 struct vhost_scsi_tpg *tpg;
1709 list_for_each_entry(tpg, &vhost_scsi_list, tv_tpg_list) {
1710 mutex_lock(&tpg->tv_tpg_mutex);
1711 if (!tpg->tpg_nexus) {
1712 mutex_unlock(&tpg->tv_tpg_mutex);
1715 if (tpg->tv_tpg_vhost_count != 0) {
1716 mutex_unlock(&tpg->tv_tpg_mutex);
1719 tv_tport = tpg->tport;
1722 if (vs->vs_tpg && vs->vs_tpg[tpg->tport_tpgt]) {
1723 mutex_unlock(&tpg->tv_tpg_mutex);
1734 se_tpg = &tpg->se_tpg;
1738 mutex_unlock(&tpg->tv_tpg_mutex);
1742 tpg->tv_tpg_vhost_count++;
1743 tpg->vhost_scsi = vs;
1744 vs_tpg[tpg->tport_tpgt] = tpg;
1747 mutex_unlock(&tpg->tv_tpg_mutex);
1793 tpg = vs_tpg[i];
1794 if (tpg) {
1795 mutex_lock(&tpg->tv_tpg_mutex);
1796 tpg->vhost_scsi = NULL;
1797 tpg->tv_tpg_vhost_count--;
1798 mutex_unlock(&tpg->tv_tpg_mutex);
1799 target_undepend_item(&tpg->se_tpg.tpg_group.cg_item);
1814 struct vhost_scsi_tpg *tpg;
1836 tpg = vs->vs_tpg[target];
1837 if (!tpg)
1840 tv_tport = tpg->tport;
1847 pr_warn("tv_tport->tport_name: %s, tpg->tport_tpgt: %hu"
1849 tv_tport->tport_name, tpg->tport_tpgt,
1875 * We can now release our hold on the tpg and sessions and userspace
1880 tpg = vs->vs_tpg[target];
1881 if (!tpg)
1884 mutex_lock(&tpg->tv_tpg_mutex);
1886 tpg->tv_tpg_vhost_count--;
1887 tpg->vhost_scsi = NULL;
1890 mutex_unlock(&tpg->tv_tpg_mutex);
1892 se_tpg = &tpg->se_tpg;
2146 vhost_scsi_do_plug(struct vhost_scsi_tpg *tpg,
2150 struct vhost_scsi *vs = tpg->vhost_scsi;
2172 vhost_scsi_send_evt(vs, vq, tpg, lun,
2178 static void vhost_scsi_hotplug(struct vhost_scsi_tpg *tpg, struct se_lun *lun)
2180 vhost_scsi_do_plug(tpg, lun, true);
2183 static void vhost_scsi_hotunplug(struct vhost_scsi_tpg *tpg, struct se_lun *lun)
2185 vhost_scsi_do_plug(tpg, lun, false);
2191 struct vhost_scsi_tpg *tpg = container_of(se_tpg,
2194 mutex_lock(&tpg->tv_tpg_mutex);
2195 tpg->tv_tpg_port_count++;
2196 vhost_scsi_hotplug(tpg, lun);
2197 mutex_unlock(&tpg->tv_tpg_mutex);
2205 struct vhost_scsi_tpg *tpg = container_of(se_tpg,
2208 mutex_lock(&tpg->tv_tpg_mutex);
2209 tpg->tv_tpg_port_count--;
2210 vhost_scsi_hotunplug(tpg, lun);
2211 mutex_unlock(&tpg->tv_tpg_mutex);
2218 struct vhost_scsi_tpg *tpg = container_of(se_tpg,
2231 tpg->tv_fabric_prot_type = val;
2240 struct vhost_scsi_tpg *tpg = container_of(se_tpg,
2243 return sysfs_emit(page, "%d\n", tpg->tv_fabric_prot_type);
2253 static int vhost_scsi_make_nexus(struct vhost_scsi_tpg *tpg,
2258 mutex_lock(&tpg->tv_tpg_mutex);
2259 if (tpg->tpg_nexus) {
2260 mutex_unlock(&tpg->tv_tpg_mutex);
2261 pr_debug("tpg->tpg_nexus already exists\n");
2267 mutex_unlock(&tpg->tv_tpg_mutex);
2276 tv_nexus->tvn_se_sess = target_setup_session(&tpg->se_tpg, 0, 0,
2280 mutex_unlock(&tpg->tv_tpg_mutex);
2284 tpg->tpg_nexus = tv_nexus;
2286 mutex_unlock(&tpg->tv_tpg_mutex);
2290 static int vhost_scsi_drop_nexus(struct vhost_scsi_tpg *tpg)
2295 mutex_lock(&tpg->tv_tpg_mutex);
2296 tv_nexus = tpg->tpg_nexus;
2298 mutex_unlock(&tpg->tv_tpg_mutex);
2304 mutex_unlock(&tpg->tv_tpg_mutex);
2308 if (tpg->tv_tpg_port_count != 0) {
2309 mutex_unlock(&tpg->tv_tpg_mutex);
2312 tpg->tv_tpg_port_count);
2316 if (tpg->tv_tpg_vhost_count != 0) {
2317 mutex_unlock(&tpg->tv_tpg_mutex);
2320 tpg->tv_tpg_vhost_count);
2325 " %s Initiator Port: %s\n", vhost_scsi_dump_proto_id(tpg->tport),
2332 tpg->tpg_nexus = NULL;
2333 mutex_unlock(&tpg->tv_tpg_mutex);
2342 struct vhost_scsi_tpg *tpg = container_of(se_tpg,
2347 mutex_lock(&tpg->tv_tpg_mutex);
2348 tv_nexus = tpg->tpg_nexus;
2350 mutex_unlock(&tpg->tv_tpg_mutex);
2355 mutex_unlock(&tpg->tv_tpg_mutex);
2364 struct vhost_scsi_tpg *tpg = container_of(se_tpg,
2366 struct vhost_scsi_tport *tport_wwn = tpg->tport;
2373 ret = vhost_scsi_drop_nexus(tpg);
2431 ret = vhost_scsi_make_nexus(tpg, port_ptr);
2451 struct vhost_scsi_tpg *tpg;
2460 tpg = kzalloc(sizeof(*tpg), GFP_KERNEL);
2461 if (!tpg) {
2465 mutex_init(&tpg->tv_tpg_mutex);
2466 INIT_LIST_HEAD(&tpg->tv_tpg_list);
2467 tpg->tport = tport;
2468 tpg->tport_tpgt = tpgt;
2470 ret = core_tpg_register(wwn, &tpg->se_tpg, tport->tport_proto_id);
2472 kfree(tpg);
2476 list_add_tail(&tpg->tv_tpg_list, &vhost_scsi_list);
2479 return &tpg->se_tpg;
2484 struct vhost_scsi_tpg *tpg = container_of(se_tpg,
2488 list_del(&tpg->tv_tpg_list);
2493 vhost_scsi_drop_nexus(tpg);
2498 kfree(tpg);