1=== Successful image creation (defaults) === 2 3{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "file", "filename": "TEST_DIR/PID-t.qcow2", "size": 0}}} 4{"return": {}} 5{"execute": "job-dismiss", "arguments": {"id": "job0"}} 6{"return": {}} 7 8{"execute": "blockdev-add", "arguments": {"driver": "file", "filename": "TEST_DIR/PID-t.qcow2", "node-name": "imgfile"}} 9{"return": {}} 10{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "file": "imgfile", "size": 134217728}}} 11{"return": {}} 12{"execute": "job-dismiss", "arguments": {"id": "job0"}} 13{"return": {}} 14 15image: TEST_IMG 16file format: IMGFMT 17virtual size: 128 MiB (134217728 bytes) 18cluster_size: 65536 19Format specific information: 20 compat: 1.1 21 compression type: COMPRESSION_TYPE 22 lazy refcounts: false 23 refcount bits: 16 24 corrupt: false 25 extended l2: false 26 27=== Successful image creation (inline blockdev-add, explicit defaults) === 28 29{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "file", "filename": "TEST_DIR/PID-t.qcow2", "nocow": false, "preallocation": "off", "size": 0}}} 30{"return": {}} 31{"execute": "job-dismiss", "arguments": {"id": "job0"}} 32{"return": {}} 33 34{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"cluster-size": 65536, "driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-t.qcow2"}, "lazy-refcounts": false, "preallocation": "off", "refcount-bits": 16, "size": 67108864, "version": "v3"}}} 35{"return": {}} 36{"execute": "job-dismiss", "arguments": {"id": "job0"}} 37{"return": {}} 38 39image: TEST_IMG 40file format: IMGFMT 41virtual size: 64 MiB (67108864 bytes) 42cluster_size: 65536 43Format specific information: 44 compat: 1.1 45 compression type: COMPRESSION_TYPE 46 lazy refcounts: false 47 refcount bits: 16 48 corrupt: false 49 extended l2: false 50 51=== Successful image creation (v3 non-default options) === 52 53{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "file", "filename": "TEST_DIR/PID-t.qcow2", "nocow": true, "preallocation": "falloc", "size": 0}}} 54{"return": {}} 55{"execute": "job-dismiss", "arguments": {"id": "job0"}} 56{"return": {}} 57 58{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"cluster-size": 2097152, "driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-t.qcow2"}, "lazy-refcounts": true, "preallocation": "metadata", "refcount-bits": 1, "size": 33554432, "version": "v3"}}} 59{"return": {}} 60{"execute": "job-dismiss", "arguments": {"id": "job0"}} 61{"return": {}} 62 63image: TEST_IMG 64file format: IMGFMT 65virtual size: 32 MiB (33554432 bytes) 66cluster_size: 2097152 67Format specific information: 68 compat: 1.1 69 compression type: COMPRESSION_TYPE 70 lazy refcounts: true 71 refcount bits: 1 72 corrupt: false 73 extended l2: false 74 75=== Successful image creation (v2 non-default options) === 76 77{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "file", "filename": "TEST_DIR/PID-t.qcow2", "size": 0}}} 78{"return": {}} 79{"execute": "job-dismiss", "arguments": {"id": "job0"}} 80{"return": {}} 81 82{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"backing-file": "TEST_DIR/PID-t.qcow2.base", "backing-fmt": "qcow2", "cluster-size": 512, "driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-t.qcow2"}, "size": 33554432, "version": "v2"}}} 83{"return": {}} 84{"execute": "job-dismiss", "arguments": {"id": "job0"}} 85{"return": {}} 86 87image: TEST_IMG 88file format: IMGFMT 89virtual size: 32 MiB (33554432 bytes) 90cluster_size: 512 91backing file: TEST_IMG.base 92backing file format: IMGFMT 93Format specific information: 94 compat: 0.10 95 compression type: COMPRESSION_TYPE 96 refcount bits: 16 97 98=== Successful image creation (encrypted) === 99 100{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "encrypt": {"cipher-alg": "aes-128", "cipher-mode": "cbc", "format": "luks", "hash-alg": "sha1", "iter-time": 10, "ivgen-alg": "plain64", "ivgen-hash-alg": "md5", "key-secret": "keysec0"}, "file": {"driver": "file", "filename": "TEST_DIR/PID-t.qcow2"}, "size": 33554432}}} 101{"return": {}} 102{"execute": "job-dismiss", "arguments": {"id": "job0"}} 103{"return": {}} 104 105image: TEST_IMG 106file format: IMGFMT 107virtual size: 32 MiB (33554432 bytes) 108encrypted: yes 109cluster_size: 65536 110Format specific information: 111 compat: 1.1 112 compression type: COMPRESSION_TYPE 113 lazy refcounts: false 114 refcount bits: 16 115 encrypt: 116 ivgen alg: plain64 117 detached header: false 118 hash alg: sha1 119 cipher alg: aes-128 120 uuid: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX 121 format: luks 122 cipher mode: cbc 123 slots: 124 [0]: 125 active: true 126 iters: XXX 127 key offset: 4096 128 stripes: 4000 129 [1]: 130 active: false 131 key offset: 69632 132 [2]: 133 active: false 134 key offset: 135168 135 [3]: 136 active: false 137 key offset: 200704 138 [4]: 139 active: false 140 key offset: 266240 141 [5]: 142 active: false 143 key offset: 331776 144 [6]: 145 active: false 146 key offset: 397312 147 [7]: 148 active: false 149 key offset: 462848 150 payload offset: 528384 151 master key iters: XXX 152 corrupt: false 153 extended l2: false 154 155=== Invalid BlockdevRef === 156 157{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "file": "this doesn't exist", "size": 33554432}}} 158{"return": {}} 159Job failed: Cannot find device='this doesn't exist' nor node-name='this doesn't exist' 160{"execute": "job-dismiss", "arguments": {"id": "job0"}} 161{"return": {}} 162 163=== Invalid sizes === 164{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "file": "node0", "size": 1234}}} 165{"return": {}} 166Job failed: Image size must be a multiple of 512 bytes 167{"execute": "job-dismiss", "arguments": {"id": "job0"}} 168{"return": {}} 169 170{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "file": "node0", "size": 18446744073709551104}}} 171{"return": {}} 172Job failed: Could not resize image: Image size cannot be negative 173{"execute": "job-dismiss", "arguments": {"id": "job0"}} 174{"return": {}} 175 176{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "file": "node0", "size": 9223372036854775808}}} 177{"return": {}} 178Job failed: Could not resize image: Image size cannot be negative 179{"execute": "job-dismiss", "arguments": {"id": "job0"}} 180{"return": {}} 181 182{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "file": "node0", "size": 9223372036854775296}}} 183{"return": {}} 184Job failed: Could not resize image: offset(9223372036854775296) exceeds maximum(9223372035781033984) 185{"execute": "job-dismiss", "arguments": {"id": "job0"}} 186{"return": {}} 187 188{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "file": "node0", "size": 9223372035781033984}}} 189{"return": {}} 190Job failed: Could not resize image: Failed to grow the L1 table: File too large 191{"execute": "job-dismiss", "arguments": {"id": "job0"}} 192{"return": {}} 193 194=== Invalid version === 195{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "file": "node0", "size": 67108864, "version": "v1"}}} 196{"error": {"class": "GenericError", "desc": "Parameter 'version' does not accept value 'v1'"}} 197 198{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "file": "node0", "lazy-refcounts": true, "size": 67108864, "version": "v2"}}} 199{"return": {}} 200Job failed: Lazy refcounts only supported with compatibility level 1.1 and above (use version=v3 or greater) 201{"execute": "job-dismiss", "arguments": {"id": "job0"}} 202{"return": {}} 203 204{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "file": "node0", "refcount-bits": 8, "size": 67108864, "version": "v2"}}} 205{"return": {}} 206Job failed: Different refcount widths than 16 bits require compatibility level 1.1 or above (use version=v3 or greater) 207{"execute": "job-dismiss", "arguments": {"id": "job0"}} 208{"return": {}} 209 210=== Invalid backing file options === 211{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"backing-file": "/dev/null", "driver": "qcow2", "file": "node0", "preallocation": "full", "size": 67108864}}} 212{"return": {}} 213Job failed: Backing file and preallocation can only be used at the same time if extended_l2 is on 214{"execute": "job-dismiss", "arguments": {"id": "job0"}} 215{"return": {}} 216 217{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"backing-fmt": "qcow2", "driver": "qcow2", "file": "node0", "size": 67108864}}} 218{"return": {}} 219Job failed: Backing format cannot be used without backing file 220{"execute": "job-dismiss", "arguments": {"id": "job0"}} 221{"return": {}} 222 223=== Invalid cluster size === 224{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"cluster-size": 1234, "driver": "qcow2", "file": "node0", "size": 67108864}}} 225{"return": {}} 226Job failed: Cluster size must be a power of two between 512 and 2048k 227{"execute": "job-dismiss", "arguments": {"id": "job0"}} 228{"return": {}} 229 230{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"cluster-size": 128, "driver": "qcow2", "file": "node0", "size": 67108864}}} 231{"return": {}} 232Job failed: Cluster size must be a power of two between 512 and 2048k 233{"execute": "job-dismiss", "arguments": {"id": "job0"}} 234{"return": {}} 235 236{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"cluster-size": 4194304, "driver": "qcow2", "file": "node0", "size": 67108864}}} 237{"return": {}} 238Job failed: Cluster size must be a power of two between 512 and 2048k 239{"execute": "job-dismiss", "arguments": {"id": "job0"}} 240{"return": {}} 241 242{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"cluster-size": 0, "driver": "qcow2", "file": "node0", "size": 67108864}}} 243{"return": {}} 244Job failed: Cluster size must be a power of two between 512 and 2048k 245{"execute": "job-dismiss", "arguments": {"id": "job0"}} 246{"return": {}} 247 248{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"cluster-size": 512, "driver": "qcow2", "file": "node0", "size": 281474976710656}}} 249{"return": {}} 250Job failed: Could not resize image: Failed to grow the L1 table: File too large 251{"execute": "job-dismiss", "arguments": {"id": "job0"}} 252{"return": {}} 253 254=== Invalid refcount width === 255{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "file": "node0", "refcount-bits": 128, "size": 67108864}}} 256{"return": {}} 257Job failed: Refcount width must be a power of two and may not exceed 64 bits 258{"execute": "job-dismiss", "arguments": {"id": "job0"}} 259{"return": {}} 260 261{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "file": "node0", "refcount-bits": 0, "size": 67108864}}} 262{"return": {}} 263Job failed: Refcount width must be a power of two and may not exceed 64 bits 264{"execute": "job-dismiss", "arguments": {"id": "job0"}} 265{"return": {}} 266 267{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "file": "node0", "refcount-bits": 7, "size": 67108864}}} 268{"return": {}} 269Job failed: Refcount width must be a power of two and may not exceed 64 bits 270{"execute": "job-dismiss", "arguments": {"id": "job0"}} 271{"return": {}} 272 273