[pve-devel] Fwd: [Qemu-devel] [PATCH for-2.9] block: Declare blockdev-add and blockdev-del supported

Alexandre DERUMIER aderumier at odiso.com
Wed Mar 22 07:05:32 CET 2017


finally,after many years, blockdev-add and blockdev-del are ready  :)

I think it could be great to implement it for proxmox 5 ! (qemu 2.9 ?)

and also blockdev-mirror.

This should allow clean discard,skip zeroes for some storage like rbd.



----- Mail transféré -----
De: "Markus Armbruster" <armbru at redhat.com>
À: "qemu-devel" <qemu-devel at nongnu.org>
Cc: "Kevin Wolf" <kwolf at redhat.com>, pkrempa at redhat.com, "mreitz" <mreitz at redhat.com>
Envoyé: Mardi 21 Mars 2017 17:57:53
Objet: [Qemu-devel] [PATCH for-2.9] block: Declare blockdev-add and blockdev-del supported

It's been a long journey, but here we are. 

x-blockdev-remove-medium, x-blockdev-insert-medium and 
x-blockdev-change need a bit more work, so leave them alone for now. 

Signed-off-by: Markus Armbruster <armbru at redhat.com> 
--- 
blockdev.c | 4 ++-- 
qapi/block-core.json | 14 +++++--------- 
tests/qemu-iotests/139 | 8 ++++---- 
tests/qemu-iotests/141 | 4 ++-- 
tests/qemu-iotests/147 | 2 +- 
5 files changed, 14 insertions(+), 18 deletions(-) 

diff --git a/blockdev.c b/blockdev.c 
index c5b2c2c..040c152 100644 
--- a/blockdev.c 
+++ b/blockdev.c 
@@ -2835,7 +2835,7 @@ void hmp_drive_del(Monitor *mon, const QDict *qdict) 

bs = bdrv_find_node(id); 
if (bs) { 
- qmp_x_blockdev_del(id, &local_err); 
+ qmp_blockdev_del(id, &local_err); 
if (local_err) { 
error_report_err(local_err); 
} 
@@ -3900,7 +3900,7 @@ fail: 
visit_free(v); 
} 

-void qmp_x_blockdev_del(const char *node_name, Error **errp) 
+void qmp_blockdev_del(const char *node_name, Error **errp) 
{ 
AioContext *aio_context; 
BlockDriverState *bs; 
diff --git a/qapi/block-core.json b/qapi/block-core.json 
index 0f132fc..5d913d4 100644 
--- a/qapi/block-core.json 
+++ b/qapi/block-core.json 
@@ -2907,11 +2907,7 @@ 
# BlockBackend will be created; otherwise, @node-name is mandatory at the top 
# level and no BlockBackend will be created. 
# 
-# Note: This command is still a work in progress. It doesn't support all 
-# block drivers among other things. Stay away from it unless you want 
-# to help with its development. 
-# 
-# Since: 1.7 
+# Since: 2.9 
# 
# Example: 
# 
@@ -2957,7 +2953,7 @@ 
{ 'command': 'blockdev-add', 'data': 'BlockdevOptions', 'boxed': true } 

## 
-# @x-blockdev-del: 
+# @blockdev-del: 
# 
# Deletes a block device that has been added using blockdev-add. 
# The command will fail if the node is attached to a device or is 
@@ -2969,7 +2965,7 @@ 
# experimental. Stay away from it unless you want to help with its 
# development. 
# 
-# Since: 2.5 
+# Since: 2.9 
# 
# Example: 
# 
@@ -2985,13 +2981,13 @@ 
# } 
# <- { "return": {} } 
# 
-# -> { "execute": "x-blockdev-del", 
+# -> { "execute": "blockdev-del", 
# "arguments": { "node-name": "node0" } 
# } 
# <- { "return": {} } 
# 
## 
-{ 'command': 'x-blockdev-del', 'data': { 'node-name': 'str' } } 
+{ 'command': 'blockdev-del', 'data': { 'node-name': 'str' } } 

## 
# @blockdev-open-tray: 
diff --git a/tests/qemu-iotests/139 b/tests/qemu-iotests/139 
index 6d98e4f..175d8f0 100644 
--- a/tests/qemu-iotests/139 
+++ b/tests/qemu-iotests/139 
@@ -1,6 +1,6 @@ 
#!/usr/bin/env python 
# 
-# Test cases for the QMP 'x-blockdev-del' command 
+# Test cases for the QMP 'blockdev-del' command 
# 
# Copyright (C) 2015 Igalia, S.L. 
# Author: Alberto Garcia <berto at igalia.com> 
@@ -79,7 +79,7 @@ class TestBlockdevDel(iotests.QMPTestCase): 
# Delete a BlockDriverState 
def delBlockDriverState(self, node, expect_error = False): 
self.checkBlockDriverState(node) 
- result = self.vm.qmp('x-blockdev-del', node_name = node) 
+ result = self.vm.qmp('blockdev-del', node_name = node) 
if expect_error: 
self.assert_qmp(result, 'error/class', 'GenericError') 
else: 
@@ -173,7 +173,7 @@ class TestBlockdevDel(iotests.QMPTestCase): 
self.wait_until_completed(id) 

# Add a BlkDebug node 
- # Note that the purpose of this is to test the x-blockdev-del 
+ # Note that the purpose of this is to test the blockdev-del 
# sanity checks, not to create a usable blkdebug drive 
def addBlkDebug(self, debug, node): 
self.checkBlockDriverState(node, False) 
@@ -191,7 +191,7 @@ class TestBlockdevDel(iotests.QMPTestCase): 
self.checkBlockDriverState(debug) 

# Add a BlkVerify node 
- # Note that the purpose of this is to test the x-blockdev-del 
+ # Note that the purpose of this is to test the blockdev-del 
# sanity checks, not to create a usable blkverify drive 
def addBlkVerify(self, blkverify, test, raw): 
self.checkBlockDriverState(test, False) 
diff --git a/tests/qemu-iotests/141 b/tests/qemu-iotests/141 
index 6d8f0a1..27fb1cc 100755 
--- a/tests/qemu-iotests/141 
+++ b/tests/qemu-iotests/141 
@@ -65,7 +65,7 @@ test_blockjob() 

# We want this to return an error because the block job is still running 
_send_qemu_cmd $QEMU_HANDLE \ 
- "{'execute': 'x-blockdev-del', 
+ "{'execute': 'blockdev-del', 
'arguments': {'node-name': 'drv0'}}" \ 
'error' | _filter_generated_node_ids 

@@ -75,7 +75,7 @@ test_blockjob() 
"$3" 

_send_qemu_cmd $QEMU_HANDLE \ 
- "{'execute': 'x-blockdev-del', 
+ "{'execute': 'blockdev-del', 
'arguments': {'node-name': 'drv0'}}" \ 
'return' 
} 
diff --git a/tests/qemu-iotests/147 b/tests/qemu-iotests/147 
index 45469c9..cca75c5 100755 
--- a/tests/qemu-iotests/147 
+++ b/tests/qemu-iotests/147 
@@ -57,7 +57,7 @@ class NBDBlockdevAddBase(iotests.QMPTestCase): 
filename) 
break 

- result = self.vm.qmp('x-blockdev-del', node_name='nbd-blockdev') 
+ result = self.vm.qmp('blockdev-del', node_name='nbd-blockdev') 
self.assert_qmp(result, 'return', {}) 


-- 
2.7.4 




More information about the pve-devel mailing list