Message ID | 20240920094936.450987-3-vsementsov@yandex-team.ru |
---|---|
State | New |
Headers | show |
Series | vhost-user-blk: live resize additional APIs | expand |
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 >
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; }