vhost: move the session_start_done calls to common layer

Signed-off-by: Jim Harris <james.r.harris@intel.com>
Change-Id: I355790f87ef148af85d5c13002260f1120749ae5
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/14340
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Dong Yi <yidong0635@126.com>
Reviewed-by: GangCao <gang.cao@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com>
This commit is contained in:
Jim Harris 2022-09-01 14:09:52 +00:00
parent f869197b76
commit 75cc6fd62f
3 changed files with 17 additions and 15 deletions

View File

@ -920,13 +920,22 @@ new_connection(int vid)
}
static int
vhost_user_session_start(struct spdk_vhost_dev *vdev, struct spdk_vhost_session *vsession)
vhost_user_session_start_cb(struct spdk_vhost_dev *vdev,
struct spdk_vhost_session *vsession, void *unused)
{
const struct spdk_vhost_user_dev_backend *backend;
int rc;
backend = to_user_dev(vdev)->user_backend;
rc = backend->start_session(vdev, vsession, NULL);
vhost_user_session_start_done(vsession, rc);
return rc;
}
return vhost_user_session_send_event(vsession, backend->start_session, 3, "start session");
static int
vhost_user_session_start(struct spdk_vhost_dev *vdev, struct spdk_vhost_session *vsession)
{
return vhost_user_session_send_event(vsession, vhost_user_session_start_cb, 3, "start session");
}
static int

View File

@ -1309,15 +1309,14 @@ vhost_blk_start(struct spdk_vhost_dev *vdev,
*/
if (vsession->virtqueue[i].vring.desc == NULL) {
SPDK_ERRLOG("%s: queue %"PRIu32" is empty\n", vsession->name, i);
rc = -1;
goto out;
return -1;
}
}
rc = alloc_task_pool(bvsession);
if (rc != 0) {
SPDK_ERRLOG("%s: failed to alloc task pool.\n", vsession->name);
goto out;
return rc;
}
if (bvdev->bdev) {
@ -1325,8 +1324,7 @@ vhost_blk_start(struct spdk_vhost_dev *vdev,
if (!bvsession->io_channel) {
free_task_pool(bvsession);
SPDK_ERRLOG("%s: I/O channel allocation failed\n", vsession->name);
rc = -1;
goto out;
return -1;
}
}
@ -1343,7 +1341,7 @@ vhost_blk_start(struct spdk_vhost_dev *vdev,
if (rc) {
SPDK_ERRLOG("%s: Interrupt register failed\n", vsession->name);
goto out;
return rc;
}
}
@ -1358,8 +1356,6 @@ vhost_blk_start(struct spdk_vhost_dev *vdev,
spdk_poller_register_interrupt(bvsession->requestq_poller, vhost_blk_poller_set_interrupt_mode,
bvsession);
out:
vhost_user_session_start_done(vsession, rc);
return rc;
}

View File

@ -1369,15 +1369,14 @@ vhost_scsi_start(struct spdk_vhost_dev *vdev,
for (i = VIRTIO_SCSI_REQUESTQ; i < vsession->max_queues; i++) {
if (vsession->virtqueue[i].vring.desc == NULL) {
SPDK_ERRLOG("%s: queue %"PRIu32" is empty\n", vsession->name, i);
rc = -1;
goto out;
return -1;
}
}
rc = alloc_task_pool(svsession);
if (rc != 0) {
SPDK_ERRLOG("%s: failed to alloc task pool.\n", vsession->name);
goto out;
return rc;
}
for (i = 0; i < SPDK_VHOST_SCSI_CTRLR_MAX_DEVS; i++) {
@ -1408,8 +1407,6 @@ vhost_scsi_start(struct spdk_vhost_dev *vdev,
svsession->requestq_poller = SPDK_POLLER_REGISTER(vdev_worker, svsession, 0);
svsession->mgmt_poller = SPDK_POLLER_REGISTER(vdev_mgmt_worker, svsession,
MGMT_POLL_PERIOD_US);
out:
vhost_user_session_start_done(vsession, rc);
return rc;
}