| === Successful image creation (defaults) === |
| |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "file", "filename": "TEST_DIR/PID-t.qcow2", "size": 0}}} |
| {"return": {}} |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}} |
| {"return": {}} |
| |
| {"execute": "blockdev-add", "arguments": {"driver": "file", "filename": "TEST_DIR/PID-t.qcow2", "node-name": "imgfile"}} |
| {"return": {}} |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "file": "imgfile", "size": 134217728}}} |
| {"return": {}} |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}} |
| {"return": {}} |
| |
| image: TEST_IMG |
| file format: IMGFMT |
| virtual size: 128 MiB (134217728 bytes) |
| cluster_size: 65536 |
| Format specific information: |
| compat: 1.1 |
| compression type: zlib |
| lazy refcounts: false |
| refcount bits: 16 |
| corrupt: false |
| extended l2: false |
| |
| === Successful image creation (inline blockdev-add, explicit defaults) === |
| |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "file", "filename": "TEST_DIR/PID-t.qcow2", "nocow": false, "preallocation": "off", "size": 0}}} |
| {"return": {}} |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}} |
| {"return": {}} |
| |
| {"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"}}} |
| {"return": {}} |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}} |
| {"return": {}} |
| |
| image: TEST_IMG |
| file format: IMGFMT |
| virtual size: 64 MiB (67108864 bytes) |
| cluster_size: 65536 |
| Format specific information: |
| compat: 1.1 |
| compression type: zlib |
| lazy refcounts: false |
| refcount bits: 16 |
| corrupt: false |
| extended l2: false |
| |
| === Successful image creation (v3 non-default options) === |
| |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "file", "filename": "TEST_DIR/PID-t.qcow2", "nocow": true, "preallocation": "falloc", "size": 0}}} |
| {"return": {}} |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}} |
| {"return": {}} |
| |
| {"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"}}} |
| {"return": {}} |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}} |
| {"return": {}} |
| |
| image: TEST_IMG |
| file format: IMGFMT |
| virtual size: 32 MiB (33554432 bytes) |
| cluster_size: 2097152 |
| Format specific information: |
| compat: 1.1 |
| compression type: zlib |
| lazy refcounts: true |
| refcount bits: 1 |
| corrupt: false |
| extended l2: false |
| |
| === Successful image creation (v2 non-default options) === |
| |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "file", "filename": "TEST_DIR/PID-t.qcow2", "size": 0}}} |
| {"return": {}} |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}} |
| {"return": {}} |
| |
| {"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"}}} |
| {"return": {}} |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}} |
| {"return": {}} |
| |
| image: TEST_IMG |
| file format: IMGFMT |
| virtual size: 32 MiB (33554432 bytes) |
| cluster_size: 512 |
| backing file: TEST_IMG.base |
| backing file format: IMGFMT |
| Format specific information: |
| compat: 0.10 |
| compression type: zlib |
| refcount bits: 16 |
| |
| === Successful image creation (encrypted) === |
| |
| {"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}}} |
| {"return": {}} |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}} |
| {"return": {}} |
| |
| image: TEST_IMG |
| file format: IMGFMT |
| virtual size: 32 MiB (33554432 bytes) |
| encrypted: yes |
| cluster_size: 65536 |
| Format specific information: |
| compat: 1.1 |
| compression type: zlib |
| lazy refcounts: false |
| refcount bits: 16 |
| encrypt: |
| ivgen alg: plain64 |
| hash alg: sha1 |
| cipher alg: twofish-128 |
| uuid: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX |
| format: luks |
| cipher mode: ctr |
| slots: |
| [0]: |
| active: true |
| iters: XXX |
| key offset: 4096 |
| stripes: 4000 |
| [1]: |
| active: false |
| key offset: 69632 |
| [2]: |
| active: false |
| key offset: 135168 |
| [3]: |
| active: false |
| key offset: 200704 |
| [4]: |
| active: false |
| key offset: 266240 |
| [5]: |
| active: false |
| key offset: 331776 |
| [6]: |
| active: false |
| key offset: 397312 |
| [7]: |
| active: false |
| key offset: 462848 |
| payload offset: 528384 |
| master key iters: XXX |
| corrupt: false |
| extended l2: false |
| |
| === Invalid BlockdevRef === |
| |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "file": "this doesn't exist", "size": 33554432}}} |
| {"return": {}} |
| Job failed: Cannot find device='this doesn't exist' nor node-name='this doesn't exist' |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}} |
| {"return": {}} |
| |
| === Invalid sizes === |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "file": "node0", "size": 1234}}} |
| {"return": {}} |
| Job failed: Image size must be a multiple of 512 bytes |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}} |
| {"return": {}} |
| |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "file": "node0", "size": 18446744073709551104}}} |
| {"return": {}} |
| Job failed: Could not resize image: Image size cannot be negative |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}} |
| {"return": {}} |
| |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "file": "node0", "size": 9223372036854775808}}} |
| {"return": {}} |
| Job failed: Could not resize image: Image size cannot be negative |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}} |
| {"return": {}} |
| |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "file": "node0", "size": 9223372036854775296}}} |
| {"return": {}} |
| Job failed: Could not resize image: offset(9223372036854775296) exceeds maximum(9223372035781033984) |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}} |
| {"return": {}} |
| |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "file": "node0", "size": 9223372035781033984}}} |
| {"return": {}} |
| Job failed: Could not resize image: Failed to grow the L1 table: File too large |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}} |
| {"return": {}} |
| |
| === Invalid version === |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "file": "node0", "size": 67108864, "version": "v1"}}} |
| {"error": {"class": "GenericError", "desc": "Parameter 'version' does not accept value 'v1'"}} |
| |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "file": "node0", "lazy-refcounts": true, "size": 67108864, "version": "v2"}}} |
| {"return": {}} |
| Job failed: Lazy refcounts only supported with compatibility level 1.1 and above (use version=v3 or greater) |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}} |
| {"return": {}} |
| |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "file": "node0", "refcount-bits": 8, "size": 67108864, "version": "v2"}}} |
| {"return": {}} |
| Job failed: Different refcount widths than 16 bits require compatibility level 1.1 or above (use version=v3 or greater) |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}} |
| {"return": {}} |
| |
| === Invalid backing file options === |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"backing-file": "/dev/null", "driver": "qcow2", "file": "node0", "preallocation": "full", "size": 67108864}}} |
| {"return": {}} |
| Job failed: Backing file and preallocation can only be used at the same time if extended_l2 is on |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}} |
| {"return": {}} |
| |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"backing-fmt": "qcow2", "driver": "qcow2", "file": "node0", "size": 67108864}}} |
| {"return": {}} |
| Job failed: Backing format cannot be used without backing file |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}} |
| {"return": {}} |
| |
| === Invalid cluster size === |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"cluster-size": 1234, "driver": "qcow2", "file": "node0", "size": 67108864}}} |
| {"return": {}} |
| Job failed: Cluster size must be a power of two between 512 and 2048k |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}} |
| {"return": {}} |
| |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"cluster-size": 128, "driver": "qcow2", "file": "node0", "size": 67108864}}} |
| {"return": {}} |
| Job failed: Cluster size must be a power of two between 512 and 2048k |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}} |
| {"return": {}} |
| |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"cluster-size": 4194304, "driver": "qcow2", "file": "node0", "size": 67108864}}} |
| {"return": {}} |
| Job failed: Cluster size must be a power of two between 512 and 2048k |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}} |
| {"return": {}} |
| |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"cluster-size": 0, "driver": "qcow2", "file": "node0", "size": 67108864}}} |
| {"return": {}} |
| Job failed: Cluster size must be a power of two between 512 and 2048k |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}} |
| {"return": {}} |
| |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"cluster-size": 512, "driver": "qcow2", "file": "node0", "size": 281474976710656}}} |
| {"return": {}} |
| Job failed: Could not resize image: Failed to grow the L1 table: File too large |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}} |
| {"return": {}} |
| |
| === Invalid refcount width === |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "file": "node0", "refcount-bits": 128, "size": 67108864}}} |
| {"return": {}} |
| Job failed: Refcount width must be a power of two and may not exceed 64 bits |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}} |
| {"return": {}} |
| |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "file": "node0", "refcount-bits": 0, "size": 67108864}}} |
| {"return": {}} |
| Job failed: Refcount width must be a power of two and may not exceed 64 bits |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}} |
| {"return": {}} |
| |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "file": "node0", "refcount-bits": 7, "size": 67108864}}} |
| {"return": {}} |
| Job failed: Refcount width must be a power of two and may not exceed 64 bits |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}} |
| {"return": {}} |
| |