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:
parent
f869197b76
commit
75cc6fd62f
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user