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


Reply via email to