 785ec4b1b9
			
		
	
	
		785ec4b1b9
		
	
	
	
	
		
			
			Some error messages contain ambiguous representations of the 'node-name'
parameter. This can be particularly confusing when exchanging QMP
messages (C = client, S = server):
C: {"execute": "block_resize", "arguments": { "device": "my_file", "size": 26843545600 }}
S: {"error": {"class": "GenericError", "desc": "Cannot find device=my_file nor node_name="}}
                                                                               ^^^^^^^^^
This error message suggests one could send a message with a key called
'node_name':
C: {"execute": "block_resize", "arguments": { "node_name": "my_file", "size": 26843545600 }}
                                               ^^^^^^^^^
but using the underscore is actually incorrect, the parameter should be
'node-name':
S: {"error": {"class": "GenericError", "desc": "Parameter 'node_name' is unexpected"}}
This behavior was uncovered in bz1651437, but I ended up going down a
rabbit hole looking for other areas where this miscommunication might
occur and changing those accordingly as well.
Fixes: https://bugzilla.redhat.com/1651437
Signed-off-by: Connor Kuehl <ckuehl@redhat.com>
Message-Id: <20210305151929.1947331-2-ckuehl@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
		
	
			
		
			
				
	
	
		
			272 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			272 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| === 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": "Invalid parameter '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": {}}
 | |
| 
 |