vhost: add start_session

vhost_blk_start and vhost_scsi_start are now just
a single vhost_user_session_send_event() call, so
make this more generic by adding a top-level
start_session function.

Now this function will do the
vhost_user_session_send_event(), using the
user_dev_backend's start_session function pointer.

Signed-off-by: Jim Harris <james.r.harris@intel.com>
Change-Id: Ia89ba15011e231f0474405fb7225e713dcc920bf
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/14327
Community-CI: Mellanox Build Bot
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
Jim Harris 2022-09-01 10:15:40 +00:00 committed by Tomasz Zawadzki
parent f8df19a49f
commit 01cec2499f
4 changed files with 18 additions and 21 deletions

View File

@ -919,6 +919,16 @@ new_connection(int vid)
return 0; return 0;
} }
static int
vhost_user_session_start(struct spdk_vhost_dev *vdev, struct spdk_vhost_session *vsession)
{
const struct spdk_vhost_user_dev_backend *backend;
backend = to_user_dev(vdev)->user_backend;
return vhost_user_session_send_event(vsession, backend->start_session, 3, "start session");
}
static int static int
start_device(int vid) start_device(int vid)
{ {
@ -1040,7 +1050,7 @@ start_device(int vid)
vhost_user_session_set_coalescing(vdev, vsession, NULL); vhost_user_session_set_coalescing(vdev, vsession, NULL);
vhost_session_mem_register(vsession->mem); vhost_session_mem_register(vsession->mem);
vsession->initialized = true; vsession->initialized = true;
rc = to_user_dev(vdev)->user_backend->start_session(vsession); rc = vhost_user_session_start(vdev, vsession);
if (rc != 0) { if (rc != 0) {
vhost_session_mem_unregister(vsession->mem); vhost_session_mem_unregister(vsession->mem);
free(vsession->mem); free(vsession->mem);

View File

@ -1291,8 +1291,8 @@ alloc_task_pool(struct spdk_vhost_blk_session *bvsession)
} }
static int static int
vhost_blk_start_cb(struct spdk_vhost_dev *vdev, vhost_blk_start(struct spdk_vhost_dev *vdev,
struct spdk_vhost_session *vsession, void *unused) struct spdk_vhost_session *vsession, void *unused)
{ {
struct spdk_vhost_blk_session *bvsession = to_blk_session(vsession); struct spdk_vhost_blk_session *bvsession = to_blk_session(vsession);
struct spdk_vhost_blk_dev *bvdev; struct spdk_vhost_blk_dev *bvdev;
@ -1363,13 +1363,6 @@ out:
return rc; return rc;
} }
static int
vhost_blk_start(struct spdk_vhost_session *vsession)
{
return vhost_user_session_send_event(vsession, vhost_blk_start_cb,
3, "start session");
}
static int static int
destroy_session_poller_cb(void *arg) destroy_session_poller_cb(void *arg)
{ {

View File

@ -216,7 +216,7 @@ struct spdk_vhost_user_dev_backend {
*/ */
size_t session_ctx_size; size_t session_ctx_size;
int (*start_session)(struct spdk_vhost_session *vsession); spdk_vhost_session_fn start_session;
int (*stop_session)(struct spdk_vhost_session *vsession); int (*stop_session)(struct spdk_vhost_session *vsession);
}; };

View File

@ -112,7 +112,8 @@ struct spdk_vhost_scsi_task {
struct spdk_vhost_virtqueue *vq; struct spdk_vhost_virtqueue *vq;
}; };
static int vhost_scsi_start(struct spdk_vhost_session *vsession); static int vhost_scsi_start(struct spdk_vhost_dev *vdev,
struct spdk_vhost_session *vsession, void *unused);
static int vhost_scsi_stop(struct spdk_vhost_session *vsession); static int vhost_scsi_stop(struct spdk_vhost_session *vsession);
static void vhost_scsi_dump_info_json(struct spdk_vhost_dev *vdev, static void vhost_scsi_dump_info_json(struct spdk_vhost_dev *vdev,
struct spdk_json_write_ctx *w); struct spdk_json_write_ctx *w);
@ -1351,8 +1352,8 @@ alloc_task_pool(struct spdk_vhost_scsi_session *svsession)
} }
static int static int
vhost_scsi_start_cb(struct spdk_vhost_dev *vdev, vhost_scsi_start(struct spdk_vhost_dev *vdev,
struct spdk_vhost_session *vsession, void *unused) struct spdk_vhost_session *vsession, void *unused)
{ {
struct spdk_vhost_scsi_session *svsession = to_scsi_session(vsession); struct spdk_vhost_scsi_session *svsession = to_scsi_session(vsession);
struct spdk_vhost_scsi_dev *svdev; struct spdk_vhost_scsi_dev *svdev;
@ -1412,13 +1413,6 @@ out:
return rc; return rc;
} }
static int
vhost_scsi_start(struct spdk_vhost_session *vsession)
{
return vhost_user_session_send_event(vsession, vhost_scsi_start_cb,
3, "start session");
}
static int static int
destroy_session_poller_cb(void *arg) destroy_session_poller_cb(void *arg)
{ {