mirror of
				https://github.com/qemu/qemu.git
				synced 2025-10-31 12:07:31 +00:00 
			
		
		
		
	 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>
		
	
			
		
			
				
	
	
		
			349 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			349 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| === Successful image creation (defaults) ===
 | |
| 
 | |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "file", "filename": "TEST_DIR/PID-t.vmdk", "size": 0}}}
 | |
| {"return": {}}
 | |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}}
 | |
| {"return": {}}
 | |
| 
 | |
| {"execute": "blockdev-add", "arguments": {"driver": "file", "filename": "TEST_DIR/PID-t.vmdk", "node-name": "imgfile"}}
 | |
| {"return": {}}
 | |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vmdk", "file": "imgfile", "size": 5368709120}}}
 | |
| {"return": {}}
 | |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}}
 | |
| {"return": {}}
 | |
| 
 | |
| image: TEST_IMG
 | |
| file format: IMGFMT
 | |
| virtual size: 5 GiB (5368709120 bytes)
 | |
| cluster_size: 65536
 | |
| Format specific information:
 | |
|     cid: XXXXXXXXXX
 | |
|     parent cid: XXXXXXXXXX
 | |
|     create type: monolithicSparse
 | |
|     extents:
 | |
|         [0]:
 | |
|             virtual size: 5368709120
 | |
|             filename: TEST_IMG
 | |
|             cluster size: 65536
 | |
|             format: 
 | |
| 
 | |
| === Successful image creation (inline blockdev-add, explicit defaults) ===
 | |
| 
 | |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "file", "filename": "TEST_DIR/PID-t.vmdk", "size": 0}}}
 | |
| {"return": {}}
 | |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}}
 | |
| {"return": {}}
 | |
| 
 | |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"adapter-type": "ide", "driver": "vmdk", "extents": [], "file": {"driver": "file", "filename": "TEST_DIR/PID-t.vmdk"}, "hwversion": "4", "size": 67108864, "subformat": "monolithicSparse", "zeroed-grain": false}}}
 | |
| {"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:
 | |
|     cid: XXXXXXXXXX
 | |
|     parent cid: XXXXXXXXXX
 | |
|     create type: monolithicSparse
 | |
|     extents:
 | |
|         [0]:
 | |
|             virtual size: 67108864
 | |
|             filename: TEST_IMG
 | |
|             cluster size: 65536
 | |
|             format: 
 | |
| 
 | |
| === Successful image creation (with non-default options) ===
 | |
| 
 | |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "file", "filename": "TEST_DIR/PID-t.vmdk", "size": 0}}}
 | |
| {"return": {}}
 | |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}}
 | |
| {"return": {}}
 | |
| 
 | |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"adapter-type": "buslogic", "driver": "vmdk", "extents": [], "file": {"driver": "file", "filename": "TEST_DIR/PID-t.vmdk"}, "size": 33554432, "subformat": "monolithicSparse", "zeroed-grain": true}}}
 | |
| {"return": {}}
 | |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}}
 | |
| {"return": {}}
 | |
| 
 | |
| image: TEST_IMG
 | |
| file format: IMGFMT
 | |
| virtual size: 32 MiB (33554432 bytes)
 | |
| cluster_size: 65536
 | |
| Format specific information:
 | |
|     cid: XXXXXXXXXX
 | |
|     parent cid: XXXXXXXXXX
 | |
|     create type: monolithicSparse
 | |
|     extents:
 | |
|         [0]:
 | |
|             virtual size: 33554432
 | |
|             filename: TEST_IMG
 | |
|             cluster size: 65536
 | |
|             format: 
 | |
| 
 | |
| === Invalid BlockdevRef ===
 | |
| 
 | |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vmdk", "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": {}}
 | |
| 
 | |
| === Adapter types ===
 | |
| 
 | |
| == Valid adapter types ==
 | |
| 
 | |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"adapter-type": "ide", "driver": "vmdk", "file": "node0", "size": 33554432}}}
 | |
| {"return": {}}
 | |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}}
 | |
| {"return": {}}
 | |
| 
 | |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"adapter-type": "buslogic", "driver": "vmdk", "file": "node0", "size": 33554432}}}
 | |
| {"return": {}}
 | |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}}
 | |
| {"return": {}}
 | |
| 
 | |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"adapter-type": "lsilogic", "driver": "vmdk", "file": "node0", "size": 33554432}}}
 | |
| {"return": {}}
 | |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}}
 | |
| {"return": {}}
 | |
| 
 | |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"adapter-type": "legacyESX", "driver": "vmdk", "file": "node0", "size": 33554432}}}
 | |
| {"return": {}}
 | |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}}
 | |
| {"return": {}}
 | |
| 
 | |
| == Invalid adapter types ==
 | |
| 
 | |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"adapter-type": "foo", "driver": "vmdk", "file": "node0", "size": 33554432}}}
 | |
| {"error": {"class": "GenericError", "desc": "Invalid parameter 'foo'"}}
 | |
| 
 | |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"adapter-type": "IDE", "driver": "vmdk", "file": "node0", "size": 33554432}}}
 | |
| {"error": {"class": "GenericError", "desc": "Invalid parameter 'IDE'"}}
 | |
| 
 | |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"adapter-type": "legacyesx", "driver": "vmdk", "file": "node0", "size": 33554432}}}
 | |
| {"error": {"class": "GenericError", "desc": "Invalid parameter 'legacyesx'"}}
 | |
| 
 | |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"adapter-type": 1, "driver": "vmdk", "file": "node0", "size": 33554432}}}
 | |
| {"error": {"class": "GenericError", "desc": "Invalid parameter type for 'options.adapter-type', expected: string"}}
 | |
| 
 | |
| === Other subformats ===
 | |
| 
 | |
| Formatting 'TEST_DIR/PID-t.vmdk.1', fmt=vmdk size=0 compat6=off hwversion=undefined
 | |
| 
 | |
| Formatting 'TEST_DIR/PID-t.vmdk.2', fmt=vmdk size=0 compat6=off hwversion=undefined
 | |
| 
 | |
| Formatting 'TEST_DIR/PID-t.vmdk.3', fmt=vmdk size=0 compat6=off hwversion=undefined
 | |
| 
 | |
| == Missing extent ==
 | |
| 
 | |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vmdk", "file": "node0", "size": 33554432, "subformat": "monolithicFlat"}}}
 | |
| {"return": {}}
 | |
| Job failed: Extent [0] not specified
 | |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}}
 | |
| {"return": {}}
 | |
| 
 | |
| == Correct extent ==
 | |
| 
 | |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vmdk", "extents": ["ext1"], "file": "node0", "size": 33554432, "subformat": "monolithicFlat"}}}
 | |
| {"return": {}}
 | |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}}
 | |
| {"return": {}}
 | |
| 
 | |
| == Extra extent ==
 | |
| 
 | |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vmdk", "extents": ["ext1", "ext2", "ext3"], "file": "node0", "size": 512, "subformat": "monolithicFlat"}}}
 | |
| {"return": {}}
 | |
| Job failed: List of extents contains unused extents
 | |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}}
 | |
| {"return": {}}
 | |
| 
 | |
| == Split formats ==
 | |
| 
 | |
| = twoGbMaxExtentFlat 512 =
 | |
| 
 | |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vmdk", "extents": ["ext1"], "file": "node0", "size": 512, "subformat": "twoGbMaxExtentFlat"}}}
 | |
| {"return": {}}
 | |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}}
 | |
| {"return": {}}
 | |
| 
 | |
| image: TEST_IMG
 | |
| file format: IMGFMT
 | |
| virtual size: 512 B (512 bytes)
 | |
| Format specific information:
 | |
|     cid: XXXXXXXXXX
 | |
|     parent cid: XXXXXXXXXX
 | |
|     create type: twoGbMaxExtentFlat
 | |
|     extents:
 | |
|         [0]:
 | |
|             virtual size: 512
 | |
|             filename: TEST_IMG.1
 | |
|             format: FLAT
 | |
| 
 | |
| = twoGbMaxExtentSparse 512 =
 | |
| 
 | |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vmdk", "extents": ["ext1"], "file": "node0", "size": 512, "subformat": "twoGbMaxExtentSparse"}}}
 | |
| {"return": {}}
 | |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}}
 | |
| {"return": {}}
 | |
| 
 | |
| image: TEST_IMG
 | |
| file format: IMGFMT
 | |
| virtual size: 512 B (512 bytes)
 | |
| cluster_size: 65536
 | |
| Format specific information:
 | |
|     cid: XXXXXXXXXX
 | |
|     parent cid: XXXXXXXXXX
 | |
|     create type: twoGbMaxExtentSparse
 | |
|     extents:
 | |
|         [0]:
 | |
|             virtual size: 512
 | |
|             filename: TEST_IMG.1
 | |
|             cluster size: 65536
 | |
|             format: SPARSE
 | |
| 
 | |
| = twoGbMaxExtentFlat 1073741824 =
 | |
| 
 | |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vmdk", "extents": ["ext1"], "file": "node0", "size": 1073741824, "subformat": "twoGbMaxExtentFlat"}}}
 | |
| {"return": {}}
 | |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}}
 | |
| {"return": {}}
 | |
| 
 | |
| image: TEST_IMG
 | |
| file format: IMGFMT
 | |
| virtual size: 1 GiB (1073741824 bytes)
 | |
| Format specific information:
 | |
|     cid: XXXXXXXXXX
 | |
|     parent cid: XXXXXXXXXX
 | |
|     create type: twoGbMaxExtentFlat
 | |
|     extents:
 | |
|         [0]:
 | |
|             virtual size: 1073741824
 | |
|             filename: TEST_IMG.1
 | |
|             format: FLAT
 | |
| 
 | |
| = twoGbMaxExtentSparse 1073741824 =
 | |
| 
 | |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vmdk", "extents": ["ext1"], "file": "node0", "size": 1073741824, "subformat": "twoGbMaxExtentSparse"}}}
 | |
| {"return": {}}
 | |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}}
 | |
| {"return": {}}
 | |
| 
 | |
| image: TEST_IMG
 | |
| file format: IMGFMT
 | |
| virtual size: 1 GiB (1073741824 bytes)
 | |
| cluster_size: 65536
 | |
| Format specific information:
 | |
|     cid: XXXXXXXXXX
 | |
|     parent cid: XXXXXXXXXX
 | |
|     create type: twoGbMaxExtentSparse
 | |
|     extents:
 | |
|         [0]:
 | |
|             virtual size: 1073741824
 | |
|             filename: TEST_IMG.1
 | |
|             cluster size: 65536
 | |
|             format: SPARSE
 | |
| 
 | |
| = twoGbMaxExtentFlat 2147483648 =
 | |
| 
 | |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vmdk", "extents": ["ext1"], "file": "node0", "size": 2147483648, "subformat": "twoGbMaxExtentFlat"}}}
 | |
| {"return": {}}
 | |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}}
 | |
| {"return": {}}
 | |
| 
 | |
| image: TEST_IMG
 | |
| file format: IMGFMT
 | |
| virtual size: 2 GiB (2147483648 bytes)
 | |
| Format specific information:
 | |
|     cid: XXXXXXXXXX
 | |
|     parent cid: XXXXXXXXXX
 | |
|     create type: twoGbMaxExtentFlat
 | |
|     extents:
 | |
|         [0]:
 | |
|             virtual size: 2147483648
 | |
|             filename: TEST_IMG.1
 | |
|             format: FLAT
 | |
| 
 | |
| = twoGbMaxExtentSparse 2147483648 =
 | |
| 
 | |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vmdk", "extents": ["ext1"], "file": "node0", "size": 2147483648, "subformat": "twoGbMaxExtentSparse"}}}
 | |
| {"return": {}}
 | |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}}
 | |
| {"return": {}}
 | |
| 
 | |
| image: TEST_IMG
 | |
| file format: IMGFMT
 | |
| virtual size: 2 GiB (2147483648 bytes)
 | |
| cluster_size: 65536
 | |
| Format specific information:
 | |
|     cid: XXXXXXXXXX
 | |
|     parent cid: XXXXXXXXXX
 | |
|     create type: twoGbMaxExtentSparse
 | |
|     extents:
 | |
|         [0]:
 | |
|             virtual size: 2147483648
 | |
|             filename: TEST_IMG.1
 | |
|             cluster size: 65536
 | |
|             format: SPARSE
 | |
| 
 | |
| = twoGbMaxExtentFlat 5368709120 =
 | |
| 
 | |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vmdk", "extents": ["ext1", "ext2", "ext3"], "file": "node0", "size": 5368709120, "subformat": "twoGbMaxExtentFlat"}}}
 | |
| {"return": {}}
 | |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}}
 | |
| {"return": {}}
 | |
| 
 | |
| image: TEST_IMG
 | |
| file format: IMGFMT
 | |
| virtual size: 5 GiB (5368709120 bytes)
 | |
| Format specific information:
 | |
|     cid: XXXXXXXXXX
 | |
|     parent cid: XXXXXXXXXX
 | |
|     create type: twoGbMaxExtentFlat
 | |
|     extents:
 | |
|         [0]:
 | |
|             virtual size: 2147483648
 | |
|             filename: TEST_IMG.1
 | |
|             format: FLAT
 | |
|         [1]:
 | |
|             virtual size: 2147483648
 | |
|             filename: TEST_IMG.2
 | |
|             format: FLAT
 | |
|         [2]:
 | |
|             virtual size: 1073741824
 | |
|             filename: TEST_IMG.3
 | |
|             format: FLAT
 | |
| 
 | |
| = twoGbMaxExtentSparse 5368709120 =
 | |
| 
 | |
| {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vmdk", "extents": ["ext1", "ext2", "ext3"], "file": "node0", "size": 5368709120, "subformat": "twoGbMaxExtentSparse"}}}
 | |
| {"return": {}}
 | |
| {"execute": "job-dismiss", "arguments": {"id": "job0"}}
 | |
| {"return": {}}
 | |
| 
 | |
| image: TEST_IMG
 | |
| file format: IMGFMT
 | |
| virtual size: 5 GiB (5368709120 bytes)
 | |
| cluster_size: 65536
 | |
| Format specific information:
 | |
|     cid: XXXXXXXXXX
 | |
|     parent cid: XXXXXXXXXX
 | |
|     create type: twoGbMaxExtentSparse
 | |
|     extents:
 | |
|         [0]:
 | |
|             virtual size: 2147483648
 | |
|             filename: TEST_IMG.1
 | |
|             cluster size: 65536
 | |
|             format: SPARSE
 | |
|         [1]:
 | |
|             virtual size: 2147483648
 | |
|             filename: TEST_IMG.2
 | |
|             cluster size: 65536
 | |
|             format: SPARSE
 | |
|         [2]:
 | |
|             virtual size: 1073741824
 | |
|             filename: TEST_IMG.3
 | |
|             cluster size: 65536
 | |
|             format: SPARSE
 | |
| 
 |