Split it into _init() and _connect() part, following pattern of vhost_dev_init / vhost_dev_connect.
Signed-off-by: Vladimir Sementsov-Ogievskiy <[email protected]> --- hw/block/vhost-user-blk.c | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/hw/block/vhost-user-blk.c b/hw/block/vhost-user-blk.c index c31c265a0e..9c727c3977 100644 --- a/hw/block/vhost-user-blk.c +++ b/hw/block/vhost-user-blk.c @@ -58,6 +58,7 @@ static const int user_feature_bits[] = { }; static void vhost_user_blk_event(void *opaque, QEMUChrEvent event); +static int vhost_user_blk_connect(DeviceState *dev, Error **errp); static void vhost_user_blk_update_config(VirtIODevice *vdev, uint8_t *config) { @@ -352,9 +353,6 @@ static int vhost_user_blk_init(DeviceState *dev, bool connect, Error **errp) trace_vhost_user_blk_init_in(vdev); - /* TODO: implement support for connect=false */ - assert(connect); - assert(!s->connected); s->dev.num_queues = s->num_queues; @@ -371,6 +369,29 @@ static int vhost_user_blk_init(DeviceState *dev, bool connect, Error **errp) return ret; } + if (connect) { + ret = vhost_user_blk_connect(dev, errp); + if (ret < 0) { + return ret; + } + } + + trace_vhost_user_blk_init_out(vdev); + + return 0; +} + +static int vhost_user_blk_connect(DeviceState *dev, + Error **errp) +{ + VirtIODevice *vdev = VIRTIO_DEVICE(dev); + VHostUserBlk *s = VHOST_USER_BLK(vdev); + int ret = 0; + + trace_vhost_user_blk_connect_in(vdev); + + assert(!s->connected); + ret = vhost_dev_connect(&s->dev, errp); if (ret < 0) { return ret; -- 2.48.1
