Lines Matching defs:vsession

82 	struct spdk_vhost_session vsession;
116 struct spdk_vhost_session *vsession, void *unused);
118 struct spdk_vhost_session *vsession, void *unused);
126 static int alloc_vq_task_pool(struct spdk_vhost_session *vsession, uint16_t qid);
166 struct spdk_vhost_session *vsession = &task->svsession->vsession;
168 assert(vsession->task_cnt > 0);
169 vsession->task_cnt--;
228 struct spdk_vhost_session *vsession, void *ctx)
231 struct spdk_vhost_scsi_session *svsession = (struct spdk_vhost_scsi_session *)vsession;
276 struct spdk_vhost_session *vsession = &svsession->vsession;
285 vq = &vsession->virtqueue[VIRTIO_SCSI_EVENTQ];
289 vsession->name);
293 rc = vhost_vq_get_desc(vsession, vq, req, &desc, &desc_table, &desc_table_size);
296 vsession->name, req);
300 desc_ev = vhost_gpa_to_vva(vsession, desc->addr, sizeof(*desc_ev));
304 vsession->name, req, (void *)(uintptr_t)desc->addr);
324 vhost_vq_used_ring_enqueue(vsession, vq, req, req_size);
330 struct spdk_vhost_session *vsession = &task->svsession->vsession;
332 vhost_vq_used_ring_enqueue(vsession, task->vq, task->req_idx,
387 struct spdk_vhost_session *vsession = &task->svsession->vsession;
389 vhost_vq_used_ring_enqueue(vsession, task->vq, task->req_idx,
428 struct spdk_vhost_session *vsession = &task->svsession->vsession;
436 rc = vhost_vq_get_desc(vsession, task->vq, task->req_idx, &desc, &desc_table,
440 vsession->name, task->req_idx);
444 ctrl_req = vhost_gpa_to_vva(vsession, desc->addr, sizeof(*ctrl_req));
447 vsession->name, task->req_idx);
462 vsession->name, task->req_idx);
469 task->tmf_resp = vhost_gpa_to_vva(vsession, desc->addr, sizeof(*task->tmf_resp));
472 vsession->name, task->req_idx);
485 SPDK_DEBUGLOG(vhost_scsi_queue, "%s: LUN reset\n", vsession->name);
493 vsession->name, ctrl_req->subtype);
499 an_resp = vhost_gpa_to_vva(vsession, desc->addr, sizeof(*an_resp));
502 vsession->name);
511 vsession->name, ctrl_req->type);
517 vhost_vq_used_ring_enqueue(vsession, task->vq, task->req_idx, used_len);
531 struct spdk_vhost_session *vsession = &task->svsession->vsession;
540 rc = vhost_vq_get_desc(vsession, task->vq, task->req_idx, &desc, &desc_table, &desc_table_len);
545 vsession->name, task->req_idx);
549 *req = vhost_gpa_to_vva(vsession, desc->addr, sizeof(**req));
552 vsession->name, task->req_idx);
560 vsession->name, task->req_idx);
571 task->resp = vhost_gpa_to_vva(vsession, desc->addr, sizeof(*task->resp));
574 vsession->name, task->req_idx);
580 vsession->name, task->req_idx);
603 vsession->name, iovcnt);
607 if (spdk_unlikely(vhost_vring_desc_to_iov(vsession, iovs, &iovcnt, desc))) {
615 vsession->name, task->req_idx);
630 if (spdk_unlikely(vhost_vring_desc_to_iov(vsession, iovs, &iovcnt, desc))) {
637 SPDK_WARNLOG("%s: TO_DEV cmd: no response descriptor.\n", vsession->name);
642 task->resp = vhost_gpa_to_vva(vsession, desc->addr, sizeof(*task->resp));
645 vsession->name, task->req_idx);
659 vsession->name, task->req_idx);
693 process_scsi_task(struct spdk_vhost_session *vsession,
703 vsession->name, req_idx);
704 vhost_vq_used_ring_enqueue(vsession, vq, req_idx, 0);
708 vsession->task_cnt++;
735 struct spdk_vhost_session *vsession;
748 vsession = &svsession->vsession;
757 vsession->name, req_idx, vq->vring.size);
758 vhost_vq_used_ring_enqueue(vsession, vq, req_idx, 0);
762 process_scsi_task(vsession, vq, req_idx);
772 struct spdk_vhost_session *vsession = &svsession->vsession;
788 vsession->name, reqs[i], vq->vring.size);
789 vhost_vq_used_ring_enqueue(vsession, vq, reqs[i], 0);
793 rte_vhost_set_inflight_desc_split(vsession->vid, vq->vring_idx, reqs[i]);
795 process_scsi_task(vsession, vq, reqs[i]);
805 struct spdk_vhost_session *vsession = &svsession->vsession;
810 if (vsession->virtqueue[VIRTIO_SCSI_EVENTQ].vring.desc) {
811 vhost_vq_used_signal(vsession, &vsession->virtqueue[VIRTIO_SCSI_EVENTQ]);
814 if (vsession->virtqueue[VIRTIO_SCSI_CONTROLQ].vring.desc) {
815 rc = process_vq(svsession, &vsession->virtqueue[VIRTIO_SCSI_CONTROLQ]);
816 vhost_vq_used_signal(vsession, &vsession->virtqueue[VIRTIO_SCSI_CONTROLQ]);
826 struct spdk_vhost_session *vsession = &svsession->vsession;
830 for (q_idx = VIRTIO_SCSI_REQUESTQ; q_idx < vsession->max_queues; q_idx++) {
831 rc = process_vq(svsession, &vsession->virtqueue[q_idx]);
832 vhost_session_vq_used_signal(&vsession->virtqueue[q_idx]);
854 to_scsi_session(struct spdk_vhost_session *vsession)
856 assert(vsession->vdev->backend->type == VHOST_BACKEND_SCSI);
857 return (struct spdk_vhost_scsi_session *)vsession;
1054 struct spdk_vhost_session *vsession, void *ctx)
1057 struct spdk_vhost_scsi_session *svsession = (struct spdk_vhost_scsi_session *)vsession;
1062 if (!vsession->started || session_sdev->dev != NULL) {
1074 vsession->name, scsi_tgt_num);
1091 if (vhost_dev_has_feature(vsession, VIRTIO_SCSI_F_HOTPLUG)) {
1097 vsession->name);
1207 struct spdk_vhost_session *vsession, void *_ctx)
1211 struct spdk_vhost_scsi_session *svsession = (struct spdk_vhost_scsi_session *)vsession;
1214 if (!vsession->started || state->dev == NULL) {
1224 if (vhost_dev_has_feature(vsession, VIRTIO_SCSI_F_HOTPLUG)) {
1287 struct spdk_vhost_session *vsession, void *ctx)
1290 struct spdk_vhost_scsi_session *svsession = (struct spdk_vhost_scsi_session *)vsession;
1293 if (!vsession->started || state->dev == NULL) {
1299 if (vhost_dev_has_feature(vsession, VIRTIO_SCSI_F_CHANGE)) {
1355 struct spdk_vhost_session *vsession = &svsession->vsession;
1359 for (i = 0; i < vsession->max_queues; i++) {
1360 vq = &vsession->virtqueue[i];
1371 alloc_vq_task_pool(struct spdk_vhost_session *vsession, uint16_t qid)
1373 struct spdk_vhost_scsi_session *svsession = to_scsi_session(vsession);
1383 vq = &vsession->virtqueue[qid];
1392 vsession->name, qid, task_cnt, SPDK_VHOST_MAX_VQ_SIZE);
1400 vsession->name, task_cnt, qid);
1416 struct spdk_vhost_session *vsession, void *unused)
1418 struct spdk_vhost_scsi_session *svsession = to_scsi_session(vsession);
1426 SPDK_INFOLOG(vhost, "%s: start in progress\n", vsession->name);
1431 if (vsession->max_queues < VIRTIO_SCSI_REQUESTQ + 1) {
1432 SPDK_INFOLOG(vhost, "%s: max_queues %u, no I/O queues\n", vsession->name, vsession->max_queues);
1435 for (i = VIRTIO_SCSI_REQUESTQ; i < vsession->max_queues; i++) {
1436 if (vsession->virtqueue[i].vring.desc == NULL) {
1437 SPDK_ERRLOG("%s: queue %"PRIu32" is empty\n", vsession->name, i);
1442 svdev = to_scsi_dev(vsession->vdev);
1458 vsession->name, i);
1469 vsession->name, spdk_env_get_current_core());
1481 struct spdk_vhost_session *vsession = &svsession->vsession;
1482 struct spdk_vhost_user_dev *user_dev = to_user_dev(vsession->vdev);
1486 if (vsession->task_cnt > 0 || (pthread_mutex_trylock(&user_dev->lock) != 0)) {
1487 assert(vsession->stop_retry_count > 0);
1488 vsession->stop_retry_count--;
1489 if (vsession->stop_retry_count == 0) {
1490 SPDK_ERRLOG("%s: Timedout when destroy session (task_cnt %d)\n", vsession->name,
1491 vsession->task_cnt);
1493 vhost_user_session_stop_done(vsession, -ETIMEDOUT);
1499 for (i = 0; i < vsession->max_queues; i++) {
1500 vhost_vq_used_signal(vsession, &vsession->virtqueue[i]);
1521 vhost_user_dev_foreach_session(vsession->vdev,
1530 vsession->name, spdk_env_get_current_core());
1535 vhost_user_session_stop_done(vsession, 0);
1543 struct spdk_vhost_session *vsession, void *unused)
1545 struct spdk_vhost_scsi_session *svsession = to_scsi_session(vsession);
1561 svsession->vsession.stop_retry_count = (SPDK_VHOST_SESSION_STOP_RETRY_TIMEOUT_IN_SEC * 1000 *