From 84ac072e2c3f7df651edae9122b219e97445ac82 Mon Sep 17 00:00:00 2001 From: Changpeng Liu Date: Tue, 26 Jul 2022 12:42:24 +0800 Subject: [PATCH] lib/virtio: eliminate `virtio_user_backend_ops` The `vhost_user` socket transport APIs are already in the same source file, so just call the function directly. No code logic changes in this commit. Change-Id: If471b9b0166d43591fb8614e95a17473c964e87c Signed-off-by: Changpeng Liu Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/13789 Tested-by: SPDK CI Jenkins Reviewed-by: Aleksey Marchuk Reviewed-by: Jim Harris --- lib/virtio/virtio_vhost_user.c | 53 ++++++++++++---------------------- 1 file changed, 18 insertions(+), 35 deletions(-) diff --git a/lib/virtio/virtio_vhost_user.c b/lib/virtio/virtio_vhost_user.c index 1cbb5d6e9..414c961c2 100644 --- a/lib/virtio/virtio_vhost_user.c +++ b/lib/virtio/virtio_vhost_user.c @@ -21,8 +21,6 @@ ((1ULL << VHOST_USER_PROTOCOL_F_MQ) | \ (1ULL << VHOST_USER_PROTOCOL_F_CONFIG)) -struct virtio_user_backend_ops; - struct virtio_user_dev { int vhostfd; @@ -34,17 +32,9 @@ struct virtio_user_dev { char path[PATH_MAX]; uint64_t protocol_features; struct vring vrings[SPDK_VIRTIO_MAX_VIRTQUEUES]; - struct virtio_user_backend_ops *ops; struct spdk_mem_map *mem_map; }; -struct virtio_user_backend_ops { - int (*setup)(struct virtio_user_dev *dev); - int (*send_request)(struct virtio_user_dev *dev, - enum vhost_user_request req, - void *arg); -}; - static int vhost_user_write(int fd, void *buf, int len, int *fds, int fd_num) { @@ -485,11 +475,6 @@ vhost_user_setup(struct virtio_user_dev *dev) return 0; } -struct virtio_user_backend_ops ops_user = { - .setup = vhost_user_setup, - .send_request = vhost_user_sock, -}; - static int virtio_user_create_queue(struct virtio_dev *vdev, uint32_t queue_sel) { @@ -503,7 +488,7 @@ virtio_user_create_queue(struct virtio_dev *vdev, uint32_t queue_sel) file.index = queue_sel; file.fd = dev->callfds[queue_sel]; - return dev->ops->send_request(dev, VHOST_USER_SET_VRING_CALL, &file); + return vhost_user_sock(dev, VHOST_USER_SET_VRING_CALL, &file); } static int @@ -520,7 +505,7 @@ virtio_user_set_vring_addr(struct virtio_dev *vdev, uint32_t queue_sel) .flags = 0, /* disable log */ }; - return dev->ops->send_request(dev, VHOST_USER_SET_VRING_ADDR, &addr); + return vhost_user_sock(dev, VHOST_USER_SET_VRING_ADDR, &addr); } static int @@ -534,14 +519,14 @@ virtio_user_kick_queue(struct virtio_dev *vdev, uint32_t queue_sel) state.index = queue_sel; state.num = vring->num; - rc = dev->ops->send_request(dev, VHOST_USER_SET_VRING_NUM, &state); + rc = vhost_user_sock(dev, VHOST_USER_SET_VRING_NUM, &state); if (rc < 0) { return rc; } state.index = queue_sel; state.num = 0; /* no reservation */ - rc = dev->ops->send_request(dev, VHOST_USER_SET_VRING_BASE, &state); + rc = vhost_user_sock(dev, VHOST_USER_SET_VRING_BASE, &state); if (rc < 0) { return rc; } @@ -554,7 +539,7 @@ virtio_user_kick_queue(struct virtio_dev *vdev, uint32_t queue_sel) */ file.index = queue_sel; file.fd = dev->kickfds[queue_sel]; - return dev->ops->send_request(dev, VHOST_USER_SET_VRING_KICK, &file); + return vhost_user_sock(dev, VHOST_USER_SET_VRING_KICK, &file); } static int @@ -566,7 +551,7 @@ virtio_user_stop_queue(struct virtio_dev *vdev, uint32_t queue_sel) state.index = queue_sel; state.num = 0; - return dev->ops->send_request(dev, VHOST_USER_GET_VRING_BASE, &state); + return vhost_user_sock(dev, VHOST_USER_GET_VRING_BASE, &state); } static int @@ -600,7 +585,7 @@ virtio_user_map_notify(void *cb_ctx, struct spdk_mem_map *map, /* We have to resend all mappings anyway, so don't bother with any * page tracking. */ - ret = dev->ops->send_request(dev, VHOST_USER_SET_MEM_TABLE, NULL); + ret = vhost_user_sock(dev, VHOST_USER_SET_MEM_TABLE, NULL); if (ret < 0) { return ret; } @@ -611,7 +596,7 @@ virtio_user_map_notify(void *cb_ctx, struct spdk_mem_map *map, * support it, so we send a simple message that always has a response * and we wait for that response. Messages are always processed in order. */ - return dev->ops->send_request(dev, VHOST_USER_GET_FEATURES, &features); + return vhost_user_sock(dev, VHOST_USER_GET_FEATURES, &features); } static int @@ -657,7 +642,7 @@ virtio_user_start_device(struct virtio_dev *vdev) } /* negotiate the number of I/O queues. */ - ret = dev->ops->send_request(dev, VHOST_USER_GET_QUEUE_NUM, &host_max_queues); + ret = vhost_user_sock(dev, VHOST_USER_GET_QUEUE_NUM, &host_max_queues); if (ret < 0) { return ret; } @@ -711,9 +696,7 @@ virtio_user_dev_setup(struct virtio_dev *vdev) dev->kickfds[i] = -1; } - dev->ops = &ops_user; - - return dev->ops->setup(dev); + return vhost_user_setup(dev); } static int @@ -731,7 +714,7 @@ virtio_user_read_dev_config(struct virtio_dev *vdev, size_t offset, cfg.offset = 0; cfg.size = VHOST_USER_MAX_CONFIG_SIZE; - rc = dev->ops->send_request(dev, VHOST_USER_GET_CONFIG, &cfg); + rc = vhost_user_sock(dev, VHOST_USER_GET_CONFIG, &cfg); if (rc < 0) { SPDK_ERRLOG("get_config failed: %s\n", spdk_strerror(-rc)); return rc; @@ -757,7 +740,7 @@ virtio_user_write_dev_config(struct virtio_dev *vdev, size_t offset, cfg.size = length; memcpy(cfg.region, src, length); - rc = dev->ops->send_request(dev, VHOST_USER_SET_CONFIG, &cfg); + rc = vhost_user_sock(dev, VHOST_USER_SET_CONFIG, &cfg); if (rc < 0) { SPDK_ERRLOG("set_config failed: %s\n", spdk_strerror(-rc)); return rc; @@ -804,7 +787,7 @@ virtio_user_get_features(struct virtio_dev *vdev) uint64_t features; int rc; - rc = dev->ops->send_request(dev, VHOST_USER_GET_FEATURES, &features); + rc = vhost_user_sock(dev, VHOST_USER_GET_FEATURES, &features); if (rc < 0) { SPDK_ERRLOG("get_features failed: %s\n", spdk_strerror(-rc)); return 0; @@ -820,7 +803,7 @@ virtio_user_set_features(struct virtio_dev *vdev, uint64_t features) uint64_t protocol_features; int ret; - ret = dev->ops->send_request(dev, VHOST_USER_SET_FEATURES, &features); + ret = vhost_user_sock(dev, VHOST_USER_SET_FEATURES, &features); if (ret < 0) { return ret; } @@ -833,13 +816,13 @@ virtio_user_set_features(struct virtio_dev *vdev, uint64_t features) return 0; } - ret = dev->ops->send_request(dev, VHOST_USER_GET_PROTOCOL_FEATURES, &protocol_features); + ret = vhost_user_sock(dev, VHOST_USER_GET_PROTOCOL_FEATURES, &protocol_features); if (ret < 0) { return ret; } protocol_features &= VIRTIO_USER_SUPPORTED_PROTOCOL_FEATURES; - ret = dev->ops->send_request(dev, VHOST_USER_SET_PROTOCOL_FEATURES, &protocol_features); + ret = vhost_user_sock(dev, VHOST_USER_SET_PROTOCOL_FEATURES, &protocol_features); if (ret < 0) { return ret; } @@ -904,7 +887,7 @@ virtio_user_setup_queue(struct virtio_dev *vdev, struct virtqueue *vq) state.num = vq->vq_nentries; if (virtio_dev_has_feature(vdev, VHOST_USER_F_PROTOCOL_FEATURES)) { - rc = dev->ops->send_request(dev, VHOST_USER_SET_VRING_ENABLE, &state); + rc = vhost_user_sock(dev, VHOST_USER_SET_VRING_ENABLE, &state); if (rc < 0) { SPDK_ERRLOG("failed to send VHOST_USER_SET_VRING_ENABLE: %s\n", spdk_strerror(-rc)); @@ -1045,7 +1028,7 @@ virtio_user_dev_init(struct virtio_dev *vdev, const char *name, const char *path goto err; } - rc = dev->ops->send_request(dev, VHOST_USER_SET_OWNER, NULL); + rc = vhost_user_sock(dev, VHOST_USER_SET_OWNER, NULL); if (rc < 0) { SPDK_ERRLOG("set_owner fails: %s\n", spdk_strerror(-rc)); goto err;