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