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: zlib 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: zlib 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: zlib 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: zlib 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": "twofish-128", "cipher-mode": "ctr", "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: zlib 113 lazy refcounts: false 114 refcount bits: 16 115 encrypt: 116 ivgen alg: plain64 117 hash alg: sha1 118 cipher alg: twofish-128 119 uuid: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX 120 format: luks 121 cipher mode: ctr 122 slots: 123 [0]: 124 active: true 125 iters: XXX 126 key offset: 4096 127 stripes: 4000 128 [1]: 129 active: false 130 key offset: 69632 131 [2]: 132 active: false 133 key offset: 135168 134 [3]: 135 active: false 136 key offset: 200704 137 [4]: 138 active: false 139 key offset: 266240 140 [5]: 141 active: false 142 key offset: 331776 143 [6]: 144 active: false 145 key offset: 397312 146 [7]: 147 active: false 148 key offset: 462848 149 payload offset: 528384 150 master key iters: XXX 151 corrupt: false 152 extended l2: false 153 154=== Invalid BlockdevRef === 155 156{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "file": "this doesn't exist", "size": 33554432}}} 157{"return": {}} 158Job failed: Cannot find device=this doesn't exist nor node_name=this doesn't exist 159{"execute": "job-dismiss", "arguments": {"id": "job0"}} 160{"return": {}} 161 162=== Invalid sizes === 163{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "file": "node0", "size": 1234}}} 164{"return": {}} 165Job failed: Image size must be a multiple of 512 bytes 166{"execute": "job-dismiss", "arguments": {"id": "job0"}} 167{"return": {}} 168 169{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "file": "node0", "size": 18446744073709551104}}} 170{"return": {}} 171Job failed: Could not resize image: Image size cannot be negative 172{"execute": "job-dismiss", "arguments": {"id": "job0"}} 173{"return": {}} 174 175{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "file": "node0", "size": 9223372036854775808}}} 176{"return": {}} 177Job failed: Could not resize image: Image size cannot be negative 178{"execute": "job-dismiss", "arguments": {"id": "job0"}} 179{"return": {}} 180 181{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "file": "node0", "size": 9223372036854775296}}} 182{"return": {}} 183Job failed: Could not resize image: offset(9223372036854775296) exceeds maximum(9223372035781033984) 184{"execute": "job-dismiss", "arguments": {"id": "job0"}} 185{"return": {}} 186 187{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "file": "node0", "size": 9223372035781033984}}} 188{"return": {}} 189Job failed: Could not resize image: Failed to grow the L1 table: File too large 190{"execute": "job-dismiss", "arguments": {"id": "job0"}} 191{"return": {}} 192 193=== Invalid version === 194{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "file": "node0", "size": 67108864, "version": "v1"}}} 195{"error": {"class": "GenericError", "desc": "Invalid parameter 'v1'"}} 196 197{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "file": "node0", "lazy-refcounts": true, "size": 67108864, "version": "v2"}}} 198{"return": {}} 199Job failed: Lazy refcounts only supported with compatibility level 1.1 and above (use version=v3 or greater) 200{"execute": "job-dismiss", "arguments": {"id": "job0"}} 201{"return": {}} 202 203{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "file": "node0", "refcount-bits": 8, "size": 67108864, "version": "v2"}}} 204{"return": {}} 205Job failed: Different refcount widths than 16 bits require compatibility level 1.1 or above (use version=v3 or greater) 206{"execute": "job-dismiss", "arguments": {"id": "job0"}} 207{"return": {}} 208 209=== Invalid backing file options === 210{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"backing-file": "/dev/null", "driver": "qcow2", "file": "node0", "preallocation": "full", "size": 67108864}}} 211{"return": {}} 212Job failed: Backing file and preallocation can only be used at the same time if extended_l2 is on 213{"execute": "job-dismiss", "arguments": {"id": "job0"}} 214{"return": {}} 215 216{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"backing-fmt": "qcow2", "driver": "qcow2", "file": "node0", "size": 67108864}}} 217{"return": {}} 218Job failed: Backing format cannot be used without backing file 219{"execute": "job-dismiss", "arguments": {"id": "job0"}} 220{"return": {}} 221 222=== Invalid cluster size === 223{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"cluster-size": 1234, "driver": "qcow2", "file": "node0", "size": 67108864}}} 224{"return": {}} 225Job failed: Cluster size must be a power of two between 512 and 2048k 226{"execute": "job-dismiss", "arguments": {"id": "job0"}} 227{"return": {}} 228 229{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"cluster-size": 128, "driver": "qcow2", "file": "node0", "size": 67108864}}} 230{"return": {}} 231Job failed: Cluster size must be a power of two between 512 and 2048k 232{"execute": "job-dismiss", "arguments": {"id": "job0"}} 233{"return": {}} 234 235{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"cluster-size": 4194304, "driver": "qcow2", "file": "node0", "size": 67108864}}} 236{"return": {}} 237Job failed: Cluster size must be a power of two between 512 and 2048k 238{"execute": "job-dismiss", "arguments": {"id": "job0"}} 239{"return": {}} 240 241{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"cluster-size": 0, "driver": "qcow2", "file": "node0", "size": 67108864}}} 242{"return": {}} 243Job failed: Cluster size must be a power of two between 512 and 2048k 244{"execute": "job-dismiss", "arguments": {"id": "job0"}} 245{"return": {}} 246 247{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"cluster-size": 512, "driver": "qcow2", "file": "node0", "size": 281474976710656}}} 248{"return": {}} 249Job failed: Could not resize image: Failed to grow the L1 table: File too large 250{"execute": "job-dismiss", "arguments": {"id": "job0"}} 251{"return": {}} 252 253=== Invalid refcount width === 254{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "file": "node0", "refcount-bits": 128, "size": 67108864}}} 255{"return": {}} 256Job failed: Refcount width must be a power of two and may not exceed 64 bits 257{"execute": "job-dismiss", "arguments": {"id": "job0"}} 258{"return": {}} 259 260{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "file": "node0", "refcount-bits": 0, "size": 67108864}}} 261{"return": {}} 262Job failed: Refcount width must be a power of two and may not exceed 64 bits 263{"execute": "job-dismiss", "arguments": {"id": "job0"}} 264{"return": {}} 265 266{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "file": "node0", "refcount-bits": 7, "size": 67108864}}} 267{"return": {}} 268Job failed: Refcount width must be a power of two and may not exceed 64 bits 269{"execute": "job-dismiss", "arguments": {"id": "job0"}} 270{"return": {}} 271 272