[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 21/29] block/export: Add BLOCK_EXPORT_DELETED event
From: |
Kevin Wolf |
Subject: |
[PATCH 21/29] block/export: Add BLOCK_EXPORT_DELETED event |
Date: |
Mon, 7 Sep 2020 20:20:03 +0200 |
Clients may want to know when an export has finally disappeard
(block-export-del returns earlier than that in the general case), so add
a QAPI event for it.
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
qapi/block-export.json | 12 ++++++++++++
block/export/export.c | 2 ++
tests/qemu-iotests/140.out | 1 +
tests/qemu-iotests/223.out | 4 ++++
4 files changed, 19 insertions(+)
diff --git a/qapi/block-export.json b/qapi/block-export.json
index 77a6b595e8..dac3250f08 100644
--- a/qapi/block-export.json
+++ b/qapi/block-export.json
@@ -233,3 +233,15 @@
##
{ 'command': 'block-export-del',
'data': { 'id': 'str', '*mode': 'BlockExportRemoveMode' } }
+
+##
+# @BLOCK_EXPORT_DELETED:
+#
+# Emitted when a block export is removed and it's id can be reused.
+#
+# @id: Block export id.
+#
+# Since: 5.2
+##
+{ 'event': 'BLOCK_EXPORT_DELETED',
+ 'data': { 'id': 'str' } }
diff --git a/block/export/export.c b/block/export/export.c
index 4af3b69186..ae7879e6a9 100644
--- a/block/export/export.c
+++ b/block/export/export.c
@@ -19,6 +19,7 @@
#include "block/nbd.h"
#include "qapi/error.h"
#include "qapi/qapi-commands-block-export.h"
+#include "qapi/qapi-events-block-export.h"
#include "qemu/id.h"
static const BlockExportDriver *blk_exp_drivers[] = {
@@ -113,6 +114,7 @@ static void blk_exp_delete_bh(void *opaque)
assert(exp->refcount == 0);
QLIST_REMOVE(exp, next);
exp->drv->delete(exp);
+ qapi_event_send_block_export_deleted(exp->id);
g_free(exp->id);
g_free(exp);
diff --git a/tests/qemu-iotests/140.out b/tests/qemu-iotests/140.out
index 86b985da75..f1db409b26 100644
--- a/tests/qemu-iotests/140.out
+++ b/tests/qemu-iotests/140.out
@@ -15,6 +15,7 @@ read 65536/65536 bytes at offset 0
qemu-io: can't open device nbd+unix:///drv?socket=SOCK_DIR/nbd: Requested
export not available
server reported: export 'drv' not present
{ 'execute': 'quit' }
+{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event":
"BLOCK_EXPORT_DELETED", "data": {"id": "drv"}}
{"return": {}}
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event":
"SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
*** done
diff --git a/tests/qemu-iotests/223.out b/tests/qemu-iotests/223.out
index 31ce9e6fe0..f6eac23f04 100644
--- a/tests/qemu-iotests/223.out
+++ b/tests/qemu-iotests/223.out
@@ -102,8 +102,10 @@ read 2097152/2097152 bytes at offset 2097152
{"execute":"nbd-server-remove", "arguments":{"name":"n"}}
{"return": {}}
{"execute":"nbd-server-remove", "arguments":{"name":"n2"}}
+{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event":
"BLOCK_EXPORT_DELETED", "data": {"id": "n"}}
{"return": {}}
{"execute":"nbd-server-remove", "arguments":{"name":"n2"}}
+{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event":
"BLOCK_EXPORT_DELETED", "data": {"id": "n2"}}
{"error": {"class": "GenericError", "desc": "Export 'n2' is not found"}}
{"execute":"nbd-server-stop"}
{"return": {}}
@@ -183,8 +185,10 @@ read 2097152/2097152 bytes at offset 2097152
{"execute":"nbd-server-remove", "arguments":{"name":"n"}}
{"return": {}}
{"execute":"nbd-server-remove", "arguments":{"name":"n2"}}
+{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event":
"BLOCK_EXPORT_DELETED", "data": {"id": "n"}}
{"return": {}}
{"execute":"nbd-server-remove", "arguments":{"name":"n2"}}
+{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event":
"BLOCK_EXPORT_DELETED", "data": {"id": "n2"}}
{"error": {"class": "GenericError", "desc": "Export 'n2' is not found"}}
{"execute":"nbd-server-stop"}
{"return": {}}
--
2.25.4
- [PATCH 15/29] block/export: Add node-name to BlockExportOptions, (continued)
- [PATCH 15/29] block/export: Add node-name to BlockExportOptions, Kevin Wolf, 2020/09/07
- [PATCH 17/29] block/export: Add blk_exp_close_all(_type), Kevin Wolf, 2020/09/07
- [PATCH 19/29] block/export: Move strong user reference to block_exports, Kevin Wolf, 2020/09/07
- [PATCH 20/29] block/export: Add block-export-del, Kevin Wolf, 2020/09/07
- [PATCH 18/29] block/export: Add 'id' option to block-export-add, Kevin Wolf, 2020/09/07
- [PATCH 21/29] block/export: Add BLOCK_EXPORT_DELETED event,
Kevin Wolf <=
- [PATCH 23/29] block/export: Create BlockBackend in blk_exp_add(), Kevin Wolf, 2020/09/07
- [PATCH 24/29] block/export: Add query-block-exports, Kevin Wolf, 2020/09/07
- [PATCH 22/29] block/export: Move blk to BlockExport, Kevin Wolf, 2020/09/07
- [PATCH 25/29] block/export: Move writable to BlockExportOptions, Kevin Wolf, 2020/09/07