QA output created by 067
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728

=== -drive/-device and device_del ===

Testing: -drive file=TEST_DIR/t.qcow2,format=qcow2,if=none,id=disk -device virtio-blk,drive=disk,id=virtio0
{
    QMP_VERSION
}
{
    "return": {
    }
}
{
    "return": [
        {
            "io-status": "ok",
            "device": "disk",
            "locked": false,
            "removable": false,
            "inserted": {
                "iops_rd": 0,
                "detect_zeroes": "off",
                "image": {
                    "virtual-size": 134217728,
                    "filename": "TEST_DIR/t.qcow2",
                    "cluster-size": 65536,
                    "format": "qcow2",
                    "actual-size": SIZE,
                    "format-specific": {
                        "type": "qcow2",
                        "data": {
                            "compat": "1.1",
                            "lazy-refcounts": false,
                            "refcount-bits": 16,
                            "corrupt": false
                        }
                    },
                    "dirty-flag": false
                },
                "iops_wr": 0,
                "ro": false,
                "node-name": "NODE_NAME",
                "backing_file_depth": 0,
                "drv": "qcow2",
                "iops": 0,
                "bps_wr": 0,
                "write_threshold": 0,
                "encrypted": false,
                "bps": 0,
                "bps_rd": 0,
                "cache": {
                    "no-flush": false,
                    "direct": false,
                    "writeback": true
                },
                "file": "TEST_DIR/t.qcow2",
                "encryption_key_missing": false
            },
            "type": "unknown"
        }
    ]
}
{
    "return": {
    }
}
{
    "return": {
    }
}
{
    "return": [
    ]
}
{
    "return": {
    }
}

=== -drive/device_add and device_del ===

Testing: -drive file=TEST_DIR/t.qcow2,format=qcow2,if=none,id=disk
{
    QMP_VERSION
}
{
    "return": {
    }
}
{
    "return": [
        {
            "device": "disk",
            "locked": false,
            "removable": true,
            "inserted": {
                "iops_rd": 0,
                "detect_zeroes": "off",
                "image": {
                    "virtual-size": 134217728,
                    "filename": "TEST_DIR/t.qcow2",
                    "cluster-size": 65536,
                    "format": "qcow2",
                    "actual-size": SIZE,
                    "format-specific": {
                        "type": "qcow2",
                        "data": {
                            "compat": "1.1",
                            "lazy-refcounts": false,
                            "refcount-bits": 16,
                            "corrupt": false
                        }
                    },
                    "dirty-flag": false
                },
                "iops_wr": 0,
                "ro": false,
                "node-name": "NODE_NAME",
                "backing_file_depth": 0,
                "drv": "qcow2",
                "iops": 0,
                "bps_wr": 0,
                "write_threshold": 0,
                "encrypted": false,
                "bps": 0,
                "bps_rd": 0,
                "cache": {
                    "no-flush": false,
                    "direct": false,
                    "writeback": true
                },
                "file": "TEST_DIR/t.qcow2",
                "encryption_key_missing": false
            },
            "type": "unknown"
        }
    ]
}
{
    "return": {
    }
}
{
    "return": {
    }
}
{
    "return": {
    }
}
{
    "return": [
    ]
}
{
    "return": {
    }
}

=== drive_add/device_add and device_del ===

Testing:
{
    QMP_VERSION
}
{
    "return": {
    }
}
{
    "return": "OK\r\n"
}
{
    "return": [
        {
            "device": "disk",
            "locked": false,
            "removable": true,
            "inserted": {
                "iops_rd": 0,
                "detect_zeroes": "off",
                "image": {
                    "virtual-size": 134217728,
                    "filename": "TEST_DIR/t.qcow2",
                    "cluster-size": 65536,
                    "format": "qcow2",
                    "actual-size": SIZE,
                    "format-specific": {
                        "type": "qcow2",
                        "data": {
                            "compat": "1.1",
                            "lazy-refcounts": false,
                            "refcount-bits": 16,
                            "corrupt": false
                        }
                    },
                    "dirty-flag": false
                },
                "iops_wr": 0,
                "ro": false,
                "node-name": "NODE_NAME",
                "backing_file_depth": 0,
                "drv": "qcow2",
                "iops": 0,
                "bps_wr": 0,
                "write_threshold": 0,
                "encrypted": false,
                "bps": 0,
                "bps_rd": 0,
                "cache": {
                    "no-flush": false,
                    "direct": false,
                    "writeback": true
                },
                "file": "TEST_DIR/t.qcow2",
                "encryption_key_missing": false
            },
            "type": "unknown"
        }
    ]
}
{
    "return": {
    }
}
{
    "return": {
    }
}
{
    "return": {
    }
}
{
    "return": [
    ]
}
{
    "return": {
    }
}

=== blockdev_add/device_add and device_del ===

Testing:
{
    QMP_VERSION
}
{
    "return": {
    }
}
{
    "return": {
    }
}
{
    "return": [
        {
            "device": "disk",
            "locked": false,
            "removable": true,
            "inserted": {
                "iops_rd": 0,
                "detect_zeroes": "off",
                "image": {
                    "virtual-size": 134217728,
                    "filename": "TEST_DIR/t.qcow2",
                    "cluster-size": 65536,
                    "format": "qcow2",
                    "actual-size": SIZE,
                    "format-specific": {
                        "type": "qcow2",
                        "data": {
                            "compat": "1.1",
                            "lazy-refcounts": false,
                            "refcount-bits": 16,
                            "corrupt": false
                        }
                    },
                    "dirty-flag": false
                },
                "iops_wr": 0,
                "ro": false,
                "node-name": "NODE_NAME",
                "backing_file_depth": 0,
                "drv": "qcow2",
                "iops": 0,
                "bps_wr": 0,
                "write_threshold": 0,
                "encrypted": false,
                "bps": 0,
                "bps_rd": 0,
                "cache": {
                    "no-flush": false,
                    "direct": false,
                    "writeback": true
                },
                "file": "TEST_DIR/t.qcow2",
                "encryption_key_missing": false
            },
            "type": "unknown"
        }
    ]
}
{
    "return": {
    }
}
{
    "return": {
    }
}
{
    "return": {
    }
}
{
    "return": [
        {
            "io-status": "ok",
            "device": "disk",
            "locked": false,
            "removable": true,
            "inserted": {
                "iops_rd": 0,
                "detect_zeroes": "off",
                "image": {
                    "virtual-size": 134217728,
                    "filename": "TEST_DIR/t.qcow2",
                    "cluster-size": 65536,
                    "format": "qcow2",
                    "actual-size": SIZE,
                    "format-specific": {
                        "type": "qcow2",
                        "data": {
                            "compat": "1.1",
                            "lazy-refcounts": false,
                            "refcount-bits": 16,
                            "corrupt": false
                        }
                    },
                    "dirty-flag": false
                },
                "iops_wr": 0,
                "ro": false,
                "node-name": "NODE_NAME",
                "backing_file_depth": 0,
                "drv": "qcow2",
                "iops": 0,
                "bps_wr": 0,
                "write_threshold": 0,
                "encrypted": false,
                "bps": 0,
                "bps_rd": 0,
                "cache": {
                    "no-flush": false,
                    "direct": false,
                    "writeback": true
                },
                "file": "TEST_DIR/t.qcow2",
                "encryption_key_missing": false
            },
            "type": "unknown"
        }
    ]
}
{
    "return": {
    }
}
*** done
