diff --git a/blockdev.c b/blockdev.c index 313841b0b461823205419b7675efc333ede2cc4f..80932e8d8de46cbf415a5f04eec7e61edcdc4ad7 100644 --- a/blockdev.c +++ b/blockdev.c @@ -2257,7 +2257,7 @@ void qmp_eject(const char *device, bool has_force, bool force, Error **errp) return; } - qmp_blockdev_remove_medium(device, errp); + qmp_x_blockdev_remove_medium(device, errp); } void qmp_block_passwd(bool has_device, const char *device, @@ -2343,7 +2343,7 @@ void qmp_blockdev_close_tray(const char *device, Error **errp) blk_dev_change_media_cb(blk, true); } -void qmp_blockdev_remove_medium(const char *device, Error **errp) +void qmp_x_blockdev_remove_medium(const char *device, Error **errp) { BlockBackend *blk; BlockDriverState *bs; @@ -2430,8 +2430,8 @@ static void qmp_blockdev_insert_anon_medium(const char *device, QTAILQ_INSERT_TAIL(&bdrv_states, bs, device_list); } -void qmp_blockdev_insert_medium(const char *device, const char *node_name, - Error **errp) +void qmp_x_blockdev_insert_medium(const char *device, const char *node_name, + Error **errp) { BlockDriverState *bs; @@ -2520,7 +2520,7 @@ void qmp_blockdev_change_medium(const char *device, const char *filename, goto fail; } - qmp_blockdev_remove_medium(device, &err); + qmp_x_blockdev_remove_medium(device, &err); if (err) { error_propagate(errp, err); goto fail; diff --git a/qapi/block-core.json b/qapi/block-core.json index a07b13f54ae922ffbb9e140b3b5cd9d928f6456a..5a23165dfad8b24fab9049815eda56bca26fc6d1 100644 --- a/qapi/block-core.json +++ b/qapi/block-core.json @@ -2081,7 +2081,7 @@ 'data': { 'device': 'str' } } ## -# @blockdev-remove-medium: +# @x-blockdev-remove-medium: # # Removes a medium (a block driver state tree) from a block device. That block # device's tray must currently be open (unless there is no attached guest @@ -2089,27 +2089,33 @@ # # If the tray is open and there is no medium inserted, this will be a no-op. # +# This command is still a work in progress and is considered experimental. +# Stay away from it unless you want to help with its development. +# # @device: block device name # # Since: 2.5 ## -{ 'command': 'blockdev-remove-medium', +{ 'command': 'x-blockdev-remove-medium', 'data': { 'device': 'str' } } ## -# @blockdev-insert-medium: +# @x-blockdev-insert-medium: # # Inserts a medium (a block driver state tree) into a block device. That block # device's tray must currently be open (unless there is no attached guest # device) and there must be no medium inserted already. # +# This command is still a work in progress and is considered experimental. +# Stay away from it unless you want to help with its development. +# # @device: block device name # # @node-name: name of a node in the block driver state graph # # Since: 2.5 ## -{ 'command': 'blockdev-insert-medium', +{ 'command': 'x-blockdev-insert-medium', 'data': { 'device': 'str', 'node-name': 'str'} } @@ -2137,8 +2143,8 @@ # # Changes the medium inserted into a block device by ejecting the current medium # and loading a new image file which is inserted as the new medium (this command -# combines blockdev-open-tray, blockdev-remove-medium, blockdev-insert-medium -# and blockdev-close-tray). +# combines blockdev-open-tray, x-blockdev-remove-medium, +# x-blockdev-insert-medium and blockdev-close-tray). # # @device: block device name # diff --git a/qmp-commands.hx b/qmp-commands.hx index 9d8b42f59a893fc71888ee848b640e948a822be7..20a92f99850cd5473a221dbc4daf624b1104b622 100644 --- a/qmp-commands.hx +++ b/qmp-commands.hx @@ -4203,27 +4203,30 @@ Example: EQMP { - .name = "blockdev-remove-medium", + .name = "x-blockdev-remove-medium", .args_type = "device:s", - .mhandler.cmd_new = qmp_marshal_blockdev_remove_medium, + .mhandler.cmd_new = qmp_marshal_x_blockdev_remove_medium, }, SQMP -blockdev-remove-medium ----------------------- +x-blockdev-remove-medium +------------------------ Removes a medium (a block driver state tree) from a block device. That block device's tray must currently be open (unless there is no attached guest device). If the tray is open and there is no medium inserted, this will be a no-op. +This command is still a work in progress and is considered experimental. +Stay away from it unless you want to help with its development. + Arguments: - "device": block device name (json-string) Example: --> { "execute": "blockdev-remove-medium", +-> { "execute": "x-blockdev-remove-medium", "arguments": { "device": "ide1-cd0" } } <- { "error": { "class": "GenericError", @@ -4240,7 +4243,7 @@ Example: <- { "return": {} } --> { "execute": "blockdev-remove-medium", +-> { "execute": "x-blockdev-remove-medium", "arguments": { "device": "ide1-cd0" } } <- { "return": {} } @@ -4248,19 +4251,22 @@ Example: EQMP { - .name = "blockdev-insert-medium", + .name = "x-blockdev-insert-medium", .args_type = "device:s,node-name:s", - .mhandler.cmd_new = qmp_marshal_blockdev_insert_medium, + .mhandler.cmd_new = qmp_marshal_x_blockdev_insert_medium, }, SQMP -blockdev-insert-medium ----------------------- +x-blockdev-insert-medium +------------------------ Inserts a medium (a block driver state tree) into a block device. That block device's tray must currently be open (unless there is no attached guest device) and there must be no medium inserted already. +This command is still a work in progress and is considered experimental. +Stay away from it unless you want to help with its development. + Arguments: - "device": block device name (json-string) @@ -4276,7 +4282,7 @@ Example: <- { "return": {} } --> { "execute": "blockdev-insert-medium", +-> { "execute": "x-blockdev-insert-medium", "arguments": { "device": "ide1-cd0", "node-name": "node0" } } diff --git a/tests/qemu-iotests/118 b/tests/qemu-iotests/118 index a2bcd548c1666a6c444896a0aca505f9f30dc4c6..114d0e2dea9f1b04fdc6f329caf7432f78e2be7a 100755 --- a/tests/qemu-iotests/118 +++ b/tests/qemu-iotests/118 @@ -208,14 +208,14 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass): else: self.assert_qmp(result, 'return[0]/inserted/image/filename', old_img) - result = self.vm.qmp('blockdev-remove-medium', device='drive0') + result = self.vm.qmp('x-blockdev-remove-medium', device='drive0') self.assert_qmp(result, 'return', {}) result = self.vm.qmp('query-block') self.assert_qmp(result, 'return[0]/tray_open', True) self.assert_qmp_absent(result, 'return[0]/inserted') - result = self.vm.qmp('blockdev-insert-medium', device='drive0', + result = self.vm.qmp('x-blockdev-insert-medium', device='drive0', node_name='new') self.assert_qmp(result, 'return', {}) @@ -243,7 +243,7 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass): # Empty floppy drive return - result = self.vm.qmp('blockdev-remove-medium', device='drive0') + result = self.vm.qmp('x-blockdev-remove-medium', device='drive0') self.assert_qmp(result, 'error/class', 'GenericError') def test_insert_on_closed(self): @@ -258,7 +258,7 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass): 'driver': 'file'}}) self.assert_qmp(result, 'return', {}) - result = self.vm.qmp('blockdev-insert-medium', device='drive0', + result = self.vm.qmp('x-blockdev-insert-medium', device='drive0', node_name='new') self.assert_qmp(result, 'error/class', 'GenericError') @@ -289,7 +289,7 @@ class TestInitiallyFilled(GeneralChangeTestsBaseClass): self.wait_for_open() - result = self.vm.qmp('blockdev-insert-medium', device='drive0', + result = self.vm.qmp('x-blockdev-insert-medium', device='drive0', node_name='new') self.assert_qmp(result, 'error/class', 'GenericError') @@ -311,7 +311,7 @@ class TestInitiallyEmpty(GeneralChangeTestsBaseClass): self.wait_for_open() - result = self.vm.qmp('blockdev-remove-medium', device='drive0') + result = self.vm.qmp('x-blockdev-remove-medium', device='drive0') # Should be a no-op self.assert_qmp(result, 'return', {}) @@ -604,14 +604,14 @@ class TestChangeReadOnly(ChangeBaseClass): self.assert_qmp(result, 'return[0]/inserted/ro', False) self.assert_qmp(result, 'return[0]/inserted/image/filename', old_img) - result = self.vm.qmp('blockdev-remove-medium', device='drive0') + result = self.vm.qmp('x-blockdev-remove-medium', device='drive0') self.assert_qmp(result, 'return', {}) result = self.vm.qmp('query-block') self.assert_qmp(result, 'return[0]/tray_open', True) self.assert_qmp_absent(result, 'return[0]/inserted') - result = self.vm.qmp('blockdev-insert-medium', device='drive0', + result = self.vm.qmp('x-blockdev-insert-medium', device='drive0', node_name='new') self.assert_qmp(result, 'return', {}) @@ -653,7 +653,7 @@ class TestBlockJobsAfterCycle(ChangeBaseClass): # For device-less BBs, calling blockdev-open-tray or blockdev-close-tray # is not necessary - result = self.vm.qmp('blockdev-remove-medium', device='drive0') + result = self.vm.qmp('x-blockdev-remove-medium', device='drive0') self.assert_qmp(result, 'return', {}) result = self.vm.qmp('query-block') @@ -666,7 +666,7 @@ class TestBlockJobsAfterCycle(ChangeBaseClass): 'driver': 'file'}}) self.assert_qmp(result, 'return', {}) - result = self.vm.qmp('blockdev-insert-medium', device='drive0', + result = self.vm.qmp('x-blockdev-insert-medium', device='drive0', node_name='node0') self.assert_qmp(result, 'return', {}) diff --git a/tests/qemu-iotests/139 b/tests/qemu-iotests/139 index 42f78c7baa1218a90e7ac45b79e67f374745a104..a4b969499c3782808c3a2de302003e9fd95cb437 100644 --- a/tests/qemu-iotests/139 +++ b/tests/qemu-iotests/139 @@ -174,7 +174,7 @@ class TestBlockdevDel(iotests.QMPTestCase): def insertDrive(self, backend, node): self.checkBlockBackend(backend, None) self.checkBlockDriverState(node) - result = self.vm.qmp('blockdev-insert-medium', + result = self.vm.qmp('x-blockdev-insert-medium', device = backend, node_name = node) self.assert_qmp(result, 'return', {}) self.checkBlockBackend(backend, node)