Commit 75cc6fd6 authored by Jim Harris's avatar Jim Harris
Browse files

vhost: move the session_start_done calls to common layer



Signed-off-by: default avatarJim 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: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-by: default avatarDong Yi <yidong0635@126.com>
Reviewed-by: default avatarGangCao <gang.cao@intel.com>
Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <smatsumoto@nvidia.com>
parent f869197b
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -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
+4 −8
Original line number Diff line number Diff line
@@ -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;
}

+2 −5
Original line number Diff line number Diff line
@@ -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;
}