[PATCH v6 2/3] vhost-user-blk: split vhost_user_blk_sync_config()

Vladimir Sementsov-Ogievskiy posted 3 patches 1 month ago
[PATCH v6 2/3] vhost-user-blk: split vhost_user_blk_sync_config()
Posted by Vladimir Sementsov-Ogievskiy 1 month ago
Split vhost_user_blk_sync_config() out from
vhost_user_blk_handle_config_change(), to be reused in the following
commit.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
Acked-by: Raphael Norwitz <raphael@enfabrica.net>
---
 hw/block/vhost-user-blk.c | 26 +++++++++++++++++++-------
 1 file changed, 19 insertions(+), 7 deletions(-)

diff --git a/hw/block/vhost-user-blk.c b/hw/block/vhost-user-blk.c
index 5b7f46bbb0..48b3dabb8d 100644
--- a/hw/block/vhost-user-blk.c
+++ b/hw/block/vhost-user-blk.c
@@ -90,27 +90,39 @@ static void vhost_user_blk_set_config(VirtIODevice *vdev, const uint8_t *config)
     s->blkcfg.wce = blkcfg->wce;
 }
 
+static int vhost_user_blk_sync_config(DeviceState *dev, Error **errp)
+{
+    int ret;
+    VirtIODevice *vdev = VIRTIO_DEVICE(dev);
+    VHostUserBlk *s = VHOST_USER_BLK(vdev);
+
+    ret = vhost_dev_get_config(&s->dev, (uint8_t *)&s->blkcfg,
+                               vdev->config_len, errp);
+    if (ret < 0) {
+        return ret;
+    }
+
+    memcpy(vdev->config, &s->blkcfg, vdev->config_len);
+    virtio_notify_config(vdev);
+
+    return 0;
+}
+
 static int vhost_user_blk_handle_config_change(struct vhost_dev *dev)
 {
     int ret;
-    VirtIODevice *vdev = dev->vdev;
-    VHostUserBlk *s = VHOST_USER_BLK(dev->vdev);
     Error *local_err = NULL;
 
     if (!dev->started) {
         return 0;
     }
 
-    ret = vhost_dev_get_config(dev, (uint8_t *)&s->blkcfg,
-                               vdev->config_len, &local_err);
+    ret = vhost_user_blk_sync_config(DEVICE(dev->vdev), &local_err);
     if (ret < 0) {
         error_report_err(local_err);
         return ret;
     }
 
-    memcpy(dev->vdev->config, &s->blkcfg, vdev->config_len);
-    virtio_notify_config(dev->vdev);
-
     return 0;
 }
 
-- 
2.34.1
Re: [PATCH v6 2/3] vhost-user-blk: split vhost_user_blk_sync_config()
Posted by Stefano Garzarella 3 weeks ago
On Fri, Sep 20, 2024 at 12:49:35PM GMT, Vladimir Sementsov-Ogievskiy wrote:
>Split vhost_user_blk_sync_config() out from
>vhost_user_blk_handle_config_change(), to be reused in the following
>commit.
>
>Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
>Acked-by: Raphael Norwitz <raphael@enfabrica.net>
>---
> hw/block/vhost-user-blk.c | 26 +++++++++++++++++++-------
> 1 file changed, 19 insertions(+), 7 deletions(-)
>
>diff --git a/hw/block/vhost-user-blk.c b/hw/block/vhost-user-blk.c
>index 5b7f46bbb0..48b3dabb8d 100644
>--- a/hw/block/vhost-user-blk.c
>+++ b/hw/block/vhost-user-blk.c
>@@ -90,27 +90,39 @@ static void vhost_user_blk_set_config(VirtIODevice *vdev, const uint8_t *config)
>     s->blkcfg.wce = blkcfg->wce;
> }
>
>+static int vhost_user_blk_sync_config(DeviceState *dev, Error **errp)

I was going to ask why use `DeviceState *`, but then I saw the next 
commit where it's needed by `dc->sync_config` callback.

LGTM!

Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>

>+{
>+    int ret;
>+    VirtIODevice *vdev = VIRTIO_DEVICE(dev);
>+    VHostUserBlk *s = VHOST_USER_BLK(vdev);
>+
>+    ret = vhost_dev_get_config(&s->dev, (uint8_t *)&s->blkcfg,
>+                               vdev->config_len, errp);
>+    if (ret < 0) {
>+        return ret;
>+    }
>+
>+    memcpy(vdev->config, &s->blkcfg, vdev->config_len);
>+    virtio_notify_config(vdev);
>+
>+    return 0;
>+}
>+
> static int vhost_user_blk_handle_config_change(struct vhost_dev *dev)
> {
>     int ret;
>-    VirtIODevice *vdev = dev->vdev;
>-    VHostUserBlk *s = VHOST_USER_BLK(dev->vdev);
>     Error *local_err = NULL;
>
>     if (!dev->started) {
>         return 0;
>     }
>
>-    ret = vhost_dev_get_config(dev, (uint8_t *)&s->blkcfg,
>-                               vdev->config_len, &local_err);
>+    ret = vhost_user_blk_sync_config(DEVICE(dev->vdev), &local_err);
>     if (ret < 0) {
>         error_report_err(local_err);
>         return ret;
>     }
>
>-    memcpy(dev->vdev->config, &s->blkcfg, vdev->config_len);
>-    virtio_notify_config(dev->vdev);
>-
>     return 0;
> }
>
>-- 
>2.34.1
>