get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/814958/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 814958,
    "url": "http://patchwork.ozlabs.org/api/patches/814958/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/c4d27b4b5d9e37468e63e35214ce4833ca271542.1505737465.git.maozy.fnst@cn.fujitsu.com/",
    "project": {
        "id": 14,
        "url": "http://patchwork.ozlabs.org/api/projects/14/?format=api",
        "name": "QEMU Development",
        "link_name": "qemu-devel",
        "list_id": "qemu-devel.nongnu.org",
        "list_email": "qemu-devel@nongnu.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<c4d27b4b5d9e37468e63e35214ce4833ca271542.1505737465.git.maozy.fnst@cn.fujitsu.com>",
    "list_archive_url": null,
    "date": "2017-09-18T14:05:13",
    "name": "[v3,1/6] hw/ide: Convert DeviceClass init to realize",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "17d45d7a0b0fda2819efbc7700d7e53075317a07",
    "submitter": {
        "id": 71231,
        "url": "http://patchwork.ozlabs.org/api/people/71231/?format=api",
        "name": "Mao Zhongyi",
        "email": "maozy.fnst@cn.fujitsu.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/c4d27b4b5d9e37468e63e35214ce4833ca271542.1505737465.git.maozy.fnst@cn.fujitsu.com/mbox/",
    "series": [
        {
            "id": 3655,
            "url": "http://patchwork.ozlabs.org/api/series/3655/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=3655",
            "date": "2017-09-18T14:05:14",
            "name": "Convert to realize and improve error handling",
            "version": 3,
            "mbox": "http://patchwork.ozlabs.org/series/3655/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/814958/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/814958/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>",
        "X-Original-To": "incoming@patchwork.ozlabs.org",
        "Delivered-To": "patchwork-incoming@bilbo.ozlabs.org",
        "Authentication-Results": "ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)",
        "Received": [
            "from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xwp1p6989z9s7F\n\tfor <incoming@patchwork.ozlabs.org>;\n\tTue, 19 Sep 2017 00:15:26 +1000 (AEST)",
            "from localhost ([::1]:36888 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1dtwpY-0006ZO-VM\n\tfor incoming@patchwork.ozlabs.org; Mon, 18 Sep 2017 10:15:25 -0400",
            "from eggs.gnu.org ([2001:4830:134:3::10]:42946)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <maozy.fnst@cn.fujitsu.com>) id 1dtwiW-0000iE-BV\n\tfor qemu-devel@nongnu.org; Mon, 18 Sep 2017 10:08:11 -0400",
            "from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <maozy.fnst@cn.fujitsu.com>) id 1dtwiP-0006PA-LO\n\tfor qemu-devel@nongnu.org; Mon, 18 Sep 2017 10:08:08 -0400",
            "from mail.cn.fujitsu.com ([183.91.158.132]:20987\n\thelo=heian.cn.fujitsu.com) by eggs.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <maozy.fnst@cn.fujitsu.com>) id 1dtwiP-0006Nj-0O\n\tfor qemu-devel@nongnu.org; Mon, 18 Sep 2017 10:08:01 -0400",
            "from localhost (HELO cn.fujitsu.com) ([10.167.33.5])\n\tby heian.cn.fujitsu.com with ESMTP; 18 Sep 2017 22:07:50 +0800",
            "from G08CNEXCHPEKD03.g08.fujitsu.local (unknown [10.167.33.85])\n\tby cn.fujitsu.com (Postfix) with ESMTP id 4F5FD47ACDAE;\n\tMon, 18 Sep 2017 22:07:46 +0800 (CST)",
            "from maozy.g08.fujitsu.local (10.167.225.76) by\n\tG08CNEXCHPEKD03.g08.fujitsu.local (10.167.33.89) with Microsoft SMTP\n\tServer (TLS) id 14.3.361.1; Mon, 18 Sep 2017 22:07:48 +0800"
        ],
        "X-IronPort-AV": "E=Sophos;i=\"5.42,413,1500912000\"; d=\"scan'208\";a=\"26773969\"",
        "From": "Mao Zhongyi <maozy.fnst@cn.fujitsu.com>",
        "To": "<qemu-devel@nongnu.org>",
        "Date": "Mon, 18 Sep 2017 22:05:13 +0800",
        "Message-ID": "<c4d27b4b5d9e37468e63e35214ce4833ca271542.1505737465.git.maozy.fnst@cn.fujitsu.com>",
        "X-Mailer": "git-send-email 2.9.4",
        "In-Reply-To": "<cover.1505737465.git.maozy.fnst@cn.fujitsu.com>",
        "References": "<cover.1505737465.git.maozy.fnst@cn.fujitsu.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[10.167.225.76]",
        "X-yoursite-MailScanner-ID": "4F5FD47ACDAE.A61A2",
        "X-yoursite-MailScanner": "Found to be clean",
        "X-yoursite-MailScanner-From": "maozy.fnst@cn.fujitsu.com",
        "X-detected-operating-system": "by eggs.gnu.org: Genre and OS details not\n\trecognized.",
        "X-Received-From": "183.91.158.132",
        "Subject": "[Qemu-devel] [PATCH v3 1/6] hw/ide: Convert DeviceClass init to\n\trealize",
        "X-BeenThere": "qemu-devel@nongnu.org",
        "X-Mailman-Version": "2.1.21",
        "Precedence": "list",
        "List-Id": "<qemu-devel.nongnu.org>",
        "List-Unsubscribe": "<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>",
        "List-Archive": "<http://lists.nongnu.org/archive/html/qemu-devel/>",
        "List-Post": "<mailto:qemu-devel@nongnu.org>",
        "List-Help": "<mailto:qemu-devel-request@nongnu.org?subject=help>",
        "List-Subscribe": "<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>",
        "Cc": "Kevin Wolf <kwolf@redhat.com>, John Snow <jsnow@redhat.com>,\n\tMarkus Armbruster <armbru@redhat.com>, Max Reitz <mreitz@redhat.com>",
        "Errors-To": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org",
        "Sender": "\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"
    },
    "content": "Replace init with realize in IDEDeviceClass, which has errp\nas a parameter. So all the implementations now use error_setg\ninstead of error_report for reporting error.\n\nCc: John Snow <jsnow@redhat.com>\nCc: Markus Armbruster <armbru@redhat.com>\nCc: Kevin Wolf <kwolf@redhat.com>\nCc: Max Reitz <mreitz@redhat.com>\n\nSigned-off-by: Mao Zhongyi <maozy.fnst@cn.fujitsu.com>\nReviewed-by: John Snow <jsnow@redhat.com>\n---\n hw/ide/core.c                 |  7 ++--\n hw/ide/qdev.c                 | 86 +++++++++++++++++++++----------------------\n include/hw/ide/internal.h     |  5 ++-\n tests/qemu-iotests/051.pc.out | 10 +----\n 4 files changed, 51 insertions(+), 57 deletions(-)",
    "diff": "diff --git a/hw/ide/core.c b/hw/ide/core.c\nindex bea3953..dcf3dab 100644\n--- a/hw/ide/core.c\n+++ b/hw/ide/core.c\n@@ -34,6 +34,7 @@\n #include \"hw/block/block.h\"\n #include \"sysemu/block-backend.h\"\n #include \"qemu/cutils.h\"\n+#include \"qemu/error-report.h\"\n \n #include \"hw/ide/internal.h\"\n \n@@ -2406,7 +2407,7 @@ int ide_init_drive(IDEState *s, BlockBackend *blk, IDEDriveKind kind,\n                    const char *version, const char *serial, const char *model,\n                    uint64_t wwn,\n                    uint32_t cylinders, uint32_t heads, uint32_t secs,\n-                   int chs_trans)\n+                   int chs_trans, Error **errp)\n {\n     uint64_t nb_sectors;\n \n@@ -2431,11 +2432,11 @@ int ide_init_drive(IDEState *s, BlockBackend *blk, IDEDriveKind kind,\n         blk_set_guest_block_size(blk, 2048);\n     } else {\n         if (!blk_is_inserted(s->blk)) {\n-            error_report(\"Device needs media, but drive is empty\");\n+            error_setg(errp, \"Device needs media, but drive is empty\");\n             return -1;\n         }\n         if (blk_is_read_only(blk)) {\n-            error_report(\"Can't use a read-only drive\");\n+            error_setg(errp, \"Can't use a read-only drive\");\n             return -1;\n         }\n         blk_set_dev_ops(blk, &ide_hd_block_ops, s);\ndiff --git a/hw/ide/qdev.c b/hw/ide/qdev.c\nindex cc2f5bd..d60ac25 100644\n--- a/hw/ide/qdev.c\n+++ b/hw/ide/qdev.c\n@@ -80,7 +80,7 @@ static char *idebus_get_fw_dev_path(DeviceState *dev)\n     return g_strdup(path);\n }\n \n-static int ide_qdev_init(DeviceState *qdev)\n+static void ide_qdev_realize(DeviceState *qdev, Error **errp)\n {\n     IDEDevice *dev = IDE_DEVICE(qdev);\n     IDEDeviceClass *dc = IDE_DEVICE_GET_CLASS(dev);\n@@ -91,34 +91,31 @@ static int ide_qdev_init(DeviceState *qdev)\n     }\n \n     if (dev->unit >= bus->max_units) {\n-        error_report(\"Can't create IDE unit %d, bus supports only %d units\",\n+        error_setg(errp, \"Can't create IDE unit %d, bus supports only %d units\",\n                      dev->unit, bus->max_units);\n-        goto err;\n+        return;\n     }\n \n     switch (dev->unit) {\n     case 0:\n         if (bus->master) {\n-            error_report(\"IDE unit %d is in use\", dev->unit);\n-            goto err;\n+            error_setg(errp, \"IDE unit %d is in use\", dev->unit);\n+            return;\n         }\n         bus->master = dev;\n         break;\n     case 1:\n         if (bus->slave) {\n-            error_report(\"IDE unit %d is in use\", dev->unit);\n-            goto err;\n+            error_setg(errp, \"IDE unit %d is in use\", dev->unit);\n+            return;\n         }\n         bus->slave = dev;\n         break;\n     default:\n-        error_report(\"Invalid IDE unit %d\", dev->unit);\n-        goto err;\n+        error_setg(errp, \"Invalid IDE unit %d\", dev->unit);\n+        return;\n     }\n-    return dc->init(dev);\n-\n-err:\n-    return -1;\n+    dc->realize(dev, errp);\n }\n \n IDEDevice *ide_create_drive(IDEBus *bus, int unit, DriveInfo *drive)\n@@ -159,7 +156,7 @@ typedef struct IDEDrive {\n     IDEDevice dev;\n } IDEDrive;\n \n-static int ide_dev_initfn(IDEDevice *dev, IDEDriveKind kind)\n+static void ide_dev_initfn(IDEDevice *dev, IDEDriveKind kind, Error **errp)\n {\n     IDEBus *bus = DO_UPCAST(IDEBus, qbus, dev->qdev.parent_bus);\n     IDEState *s = bus->ifs + dev->unit;\n@@ -168,8 +165,8 @@ static int ide_dev_initfn(IDEDevice *dev, IDEDriveKind kind)\n \n     if (!dev->conf.blk) {\n         if (kind != IDE_CD) {\n-            error_report(\"No drive specified\");\n-            return -1;\n+            error_setg(errp, \"No drive specified\");\n+            return;\n         } else {\n             /* Anonymous BlockBackend for an empty drive */\n             dev->conf.blk = blk_new(0, BLK_PERM_ALL);\n@@ -182,36 +179,36 @@ static int ide_dev_initfn(IDEDevice *dev, IDEDriveKind kind)\n         dev->conf.discard_granularity = 512;\n     } else if (dev->conf.discard_granularity &&\n                dev->conf.discard_granularity != 512) {\n-        error_report(\"discard_granularity must be 512 for ide\");\n-        return -1;\n+        error_setg(errp, \"discard_granularity must be 512 for ide\");\n+        return;\n     }\n \n     blkconf_blocksizes(&dev->conf);\n     if (dev->conf.logical_block_size != 512) {\n-        error_report(\"logical_block_size must be 512 for IDE\");\n-        return -1;\n+        error_setg(errp, \"logical_block_size must be 512 for IDE\");\n+        return;\n     }\n \n     blkconf_serial(&dev->conf, &dev->serial);\n     if (kind != IDE_CD) {\n         blkconf_geometry(&dev->conf, &dev->chs_trans, 65535, 16, 255, &err);\n         if (err) {\n-            error_report_err(err);\n-            return -1;\n+            error_propagate(errp, err);\n+            return;\n         }\n     }\n     blkconf_apply_backend_options(&dev->conf, kind == IDE_CD, kind != IDE_CD,\n                                   &err);\n     if (err) {\n-        error_report_err(err);\n-        return -1;\n+        error_propagate(errp, err);\n+        return;\n     }\n \n     if (ide_init_drive(s, dev->conf.blk, kind,\n                        dev->version, dev->serial, dev->model, dev->wwn,\n                        dev->conf.cyls, dev->conf.heads, dev->conf.secs,\n-                       dev->chs_trans) < 0) {\n-        return -1;\n+                       dev->chs_trans, errp) < 0) {\n+        return;\n     }\n \n     if (!dev->version) {\n@@ -223,8 +220,6 @@ static int ide_dev_initfn(IDEDevice *dev, IDEDriveKind kind)\n \n     add_boot_device_path(dev->conf.bootindex, &dev->qdev,\n                          dev->unit ? \"/disk@1\" : \"/disk@0\");\n-\n-    return 0;\n }\n \n static void ide_dev_get_bootindex(Object *obj, Visitor *v, const char *name,\n@@ -270,17 +265,17 @@ static void ide_dev_instance_init(Object *obj)\n     object_property_set_int(obj, -1, \"bootindex\", NULL);\n }\n \n-static int ide_hd_initfn(IDEDevice *dev)\n+static void ide_hd_realize(IDEDevice *dev, Error **errp)\n {\n-    return ide_dev_initfn(dev, IDE_HD);\n+    ide_dev_initfn(dev, IDE_HD, errp);\n }\n \n-static int ide_cd_initfn(IDEDevice *dev)\n+static void ide_cd_realize(IDEDevice *dev, Error **errp)\n {\n-    return ide_dev_initfn(dev, IDE_CD);\n+    ide_dev_initfn(dev, IDE_CD, errp);\n }\n \n-static int ide_drive_initfn(IDEDevice *dev)\n+static void ide_drive_realize(IDEDevice *dev, Error **errp)\n {\n     DriveInfo *dinfo = NULL;\n \n@@ -288,7 +283,7 @@ static int ide_drive_initfn(IDEDevice *dev)\n         dinfo = blk_legacy_dinfo(dev->conf.blk);\n     }\n \n-    return ide_dev_initfn(dev, dinfo && dinfo->media_cd ? IDE_CD : IDE_HD);\n+    ide_dev_initfn(dev, dinfo && dinfo->media_cd ? IDE_CD : IDE_HD, errp);\n }\n \n #define DEFINE_IDE_DEV_PROPERTIES()                     \\\n@@ -311,10 +306,11 @@ static void ide_hd_class_init(ObjectClass *klass, void *data)\n {\n     DeviceClass *dc = DEVICE_CLASS(klass);\n     IDEDeviceClass *k = IDE_DEVICE_CLASS(klass);\n-    k->init = ide_hd_initfn;\n+\n+    k->realize  = ide_hd_realize;\n     dc->fw_name = \"drive\";\n-    dc->desc = \"virtual IDE disk\";\n-    dc->props = ide_hd_properties;\n+    dc->desc    = \"virtual IDE disk\";\n+    dc->props   = ide_hd_properties;\n }\n \n static const TypeInfo ide_hd_info = {\n@@ -333,10 +329,11 @@ static void ide_cd_class_init(ObjectClass *klass, void *data)\n {\n     DeviceClass *dc = DEVICE_CLASS(klass);\n     IDEDeviceClass *k = IDE_DEVICE_CLASS(klass);\n-    k->init = ide_cd_initfn;\n+\n+    k->realize  = ide_cd_realize;\n     dc->fw_name = \"drive\";\n-    dc->desc = \"virtual IDE CD-ROM\";\n-    dc->props = ide_cd_properties;\n+    dc->desc    = \"virtual IDE CD-ROM\";\n+    dc->props   = ide_cd_properties;\n }\n \n static const TypeInfo ide_cd_info = {\n@@ -355,10 +352,11 @@ static void ide_drive_class_init(ObjectClass *klass, void *data)\n {\n     DeviceClass *dc = DEVICE_CLASS(klass);\n     IDEDeviceClass *k = IDE_DEVICE_CLASS(klass);\n-    k->init = ide_drive_initfn;\n+\n+    k->realize  = ide_drive_realize;\n     dc->fw_name = \"drive\";\n-    dc->desc = \"virtual IDE disk or CD-ROM (legacy)\";\n-    dc->props = ide_drive_properties;\n+    dc->desc    = \"virtual IDE disk or CD-ROM (legacy)\";\n+    dc->props   = ide_drive_properties;\n }\n \n static const TypeInfo ide_drive_info = {\n@@ -371,7 +369,7 @@ static const TypeInfo ide_drive_info = {\n static void ide_device_class_init(ObjectClass *klass, void *data)\n {\n     DeviceClass *k = DEVICE_CLASS(klass);\n-    k->init = ide_qdev_init;\n+    k->realize = ide_qdev_realize;\n     set_bit(DEVICE_CATEGORY_STORAGE, k->categories);\n     k->bus_type = TYPE_IDE_BUS;\n     k->props = ide_props;\ndiff --git a/include/hw/ide/internal.h b/include/hw/ide/internal.h\nindex 482a951..5ebb4c9 100644\n--- a/include/hw/ide/internal.h\n+++ b/include/hw/ide/internal.h\n@@ -12,6 +12,7 @@\n #include \"sysemu/sysemu.h\"\n #include \"hw/block/block.h\"\n #include \"block/scsi.h\"\n+#include \"qapi/error.h\"\n \n /* debug IDE devices */\n //#define DEBUG_IDE\n@@ -495,7 +496,7 @@ struct IDEBus {\n \n typedef struct IDEDeviceClass {\n     DeviceClass parent_class;\n-    int (*init)(IDEDevice *dev);\n+    void (*realize)(IDEDevice *dev, Error **errp);\n } IDEDeviceClass;\n \n struct IDEDevice {\n@@ -605,7 +606,7 @@ int ide_init_drive(IDEState *s, BlockBackend *blk, IDEDriveKind kind,\n                    const char *version, const char *serial, const char *model,\n                    uint64_t wwn,\n                    uint32_t cylinders, uint32_t heads, uint32_t secs,\n-                   int chs_trans);\n+                   int chs_trans, Error **errp);\n void ide_init2(IDEBus *bus, qemu_irq irq);\n void ide_exit(IDEState *s);\n void ide_init_ioport(IDEBus *bus, ISADevice *isa, int iobase, int iobase2);\ndiff --git a/tests/qemu-iotests/051.pc.out b/tests/qemu-iotests/051.pc.out\nindex 76d7205..762fb9f 100644\n--- a/tests/qemu-iotests/051.pc.out\n+++ b/tests/qemu-iotests/051.pc.out\n@@ -123,8 +123,7 @@ quit\n \n Testing: -drive if=ide\n QEMU X.Y.Z monitor - type 'help' for more information\n-(qemu) QEMU_PROG: Device needs media, but drive is empty\n-QEMU_PROG: Initialization of device ide-hd failed: Device initialization failed.\n+(qemu) QEMU_PROG: Initialization of device ide-hd failed: Device needs media, but drive is empty\n \n Testing: -drive if=scsi\n QEMU X.Y.Z monitor - type 'help' for more information\n@@ -146,12 +145,10 @@ QEMU X.Y.Z monitor - type 'help' for more information\n Testing: -drive if=none,id=disk -device ide-drive,drive=disk\n QEMU X.Y.Z monitor - type 'help' for more information\n (qemu) QEMU_PROG: -device ide-drive,drive=disk: Device needs media, but drive is empty\n-QEMU_PROG: -device ide-drive,drive=disk: Device initialization failed.\n \n Testing: -drive if=none,id=disk -device ide-hd,drive=disk\n QEMU X.Y.Z monitor - type 'help' for more information\n (qemu) QEMU_PROG: -device ide-hd,drive=disk: Device needs media, but drive is empty\n-QEMU_PROG: -device ide-hd,drive=disk: Device initialization failed.\n \n Testing: -drive if=none,id=disk -device lsi53c895a -device scsi-disk,drive=disk\n QEMU X.Y.Z monitor - type 'help' for more information\n@@ -179,8 +176,7 @@ quit\n \n Testing: -drive file=TEST_DIR/t.qcow2,if=ide,readonly=on\n QEMU X.Y.Z monitor - type 'help' for more information\n-(qemu) QEMU_PROG: Block node is read-only\n-QEMU_PROG: Initialization of device ide-hd failed: Device initialization failed.\n+(qemu) QEMU_PROG: Initialization of device ide-hd failed: Block node is read-only\n \n Testing: -drive file=TEST_DIR/t.qcow2,if=scsi,readonly=on\n QEMU X.Y.Z monitor - type 'help' for more information\n@@ -202,12 +198,10 @@ QEMU X.Y.Z monitor - type 'help' for more information\n Testing: -drive file=TEST_DIR/t.qcow2,if=none,id=disk,readonly=on -device ide-drive,drive=disk\n QEMU X.Y.Z monitor - type 'help' for more information\n (qemu) QEMU_PROG: -device ide-drive,drive=disk: Block node is read-only\n-QEMU_PROG: -device ide-drive,drive=disk: Device initialization failed.\n \n Testing: -drive file=TEST_DIR/t.qcow2,if=none,id=disk,readonly=on -device ide-hd,drive=disk\n QEMU X.Y.Z monitor - type 'help' for more information\n (qemu) QEMU_PROG: -device ide-hd,drive=disk: Block node is read-only\n-QEMU_PROG: -device ide-hd,drive=disk: Device initialization failed.\n \n Testing: -drive file=TEST_DIR/t.qcow2,if=none,id=disk,readonly=on -device lsi53c895a -device scsi-disk,drive=disk\n QEMU X.Y.Z monitor - type 'help' for more information\n",
    "prefixes": [
        "v3",
        "1/6"
    ]
}