[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PATCH for-2.5 1/1] blockdev: Mark {insert, remove}-medium
From: |
Max Reitz |
Subject: |
[Qemu-block] [PATCH for-2.5 1/1] blockdev: Mark {insert, remove}-medium experimental |
Date: |
Fri, 11 Dec 2015 16:23:05 +0100 |
While in the long term we want throttling to be its own block filter
BDS, in the short term we want it to be part of the BB instead of a BDS;
even in the long term we may want legacy throttling to be automatically
tied to the BB.
blockdev-insert-medium and blockdev-remove-medium do not retain
throttling information in the BB (deliberately so). Therefore, using
them means tying this information to a BDS, which would break the model
described above. (The same applies to other flags such as
detect_zeroes.) We probably want to move this information to the BB or
its own filter BDS before blockdev-{insert,remove}-medium can be
considered completely stable.
Therefore, mark these functions experimental for the time being.
Suggested-by: Markus Armbruster <address@hidden>
Signed-off-by: Max Reitz <address@hidden>
Acked-by: Markus Armbruster <address@hidden>
Acked-by: Kevin Wolf <address@hidden>
---
blockdev.c | 10 +++++-----
qapi/block-core.json | 18 ++++++++++++------
qmp-commands.hx | 24 +++++++++++++++---------
tests/qemu-iotests/118 | 20 ++++++++++----------
tests/qemu-iotests/139 | 2 +-
5 files changed, 43 insertions(+), 31 deletions(-)
diff --git a/blockdev.c b/blockdev.c
index 313841b..80932e8 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 a07b13f..5a23165 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 9d8b42f..b6e5e44 100644
--- a/qmp-commands.hx
+++ b/qmp-commands.hx
@@ -4203,13 +4203,13 @@ 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
@@ -4217,13 +4217,16 @@ 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 a2bcd54..114d0e2 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 42f78c7..a4b9694 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)
--
2.5.0
- [Qemu-block] [PATCH for-2.5 0/1] blockdev: Mark {insert, remove}-medium experimental, Max Reitz, 2015/12/11
- [Qemu-block] [PATCH for-2.5 1/1] blockdev: Mark {insert, remove}-medium experimental,
Max Reitz <=
- Re: [Qemu-block] [Qemu-devel] [PATCH for-2.5 1/1] blockdev: Mark {insert, remove}-medium experimental, Eric Blake, 2015/12/11
- Re: [Qemu-block] [Qemu-devel] [PATCH for-2.5 1/1] blockdev: Mark {insert, remove}-medium experimental, Peter Maydell, 2015/12/11
- Re: [Qemu-block] [Qemu-devel] [PATCH for-2.5 1/1] blockdev: Mark {insert, remove}-medium experimental, Max Reitz, 2015/12/11
- Re: [Qemu-block] [Qemu-devel] [PATCH for-2.5 1/1] blockdev: Mark {insert, remove}-medium experimental, Peter Maydell, 2015/12/11
- Re: [Qemu-block] [Qemu-devel] [PATCH for-2.5 1/1] blockdev: Mark {insert, remove}-medium experimental, Markus Armbruster, 2015/12/14