]> git.ipfire.org Git - thirdparty/qemu.git/commitdiff
nbd: Forbid nbd-server-stop when server is not running
authorEric Blake <eblake@redhat.com>
Fri, 11 Jan 2019 19:47:14 +0000 (13:47 -0600)
committerEric Blake <eblake@redhat.com>
Mon, 14 Jan 2019 16:09:46 +0000 (10:09 -0600)
Since we already forbid other nbd-server commands when not
in the right state, it is unlikely that any caller was relying
on a second stop to behave as a silent no-op.  Update iotest
223 to show the improved behavior.

Signed-off-by: Eric Blake <eblake@redhat.com>
Message-Id: <20190111194720.15671-3-eblake@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
blockdev-nbd.c
tests/qemu-iotests/223
tests/qemu-iotests/223.out

index 1d170c80b828c1597dae2effdb7446d53dc36e60..ca5849191946a0324e8ced0f3041f8848120f1f9 100644 (file)
@@ -214,6 +214,11 @@ void qmp_nbd_server_remove(const char *name,
 
 void qmp_nbd_server_stop(Error **errp)
 {
+    if (!nbd_server) {
+        error_setg(errp, "NBD server not running");
+        return;
+    }
+
     nbd_export_close_all();
 
     nbd_server_free(nbd_server);
index 61b46a2f06696c94cd4cbfd804cf5678ded499cd..a4016091b21bf6bc27ad93b2e8c1d794172bb57d 100755 (executable)
@@ -172,7 +172,7 @@ _send_qemu_cmd $QEMU_HANDLE '{"execute":"nbd-server-remove",
 _send_qemu_cmd $QEMU_HANDLE '{"execute":"nbd-server-remove",
   "arguments":{"name":"n2"}}' "error" # Attempt duplicate clean
 _send_qemu_cmd $QEMU_HANDLE '{"execute":"nbd-server-stop"}' "return"
-_send_qemu_cmd $QEMU_HANDLE '{"execute":"nbd-server-stop"}' "return" # Oops
+_send_qemu_cmd $QEMU_HANDLE '{"execute":"nbd-server-stop"}' "error" # Again
 _send_qemu_cmd $QEMU_HANDLE '{"execute":"quit"}' "return"
 
 # success, all done
index e6ede0591cdc3b8b59dacf19de311a16f85e3a4c..8a4d63a4fc2809c631a5c6ef2d63ec9925dfa52f 100644 (file)
@@ -69,6 +69,6 @@ read 2097152/2097152 bytes at offset 2097152
 {"return": {}}
 {"error": {"class": "GenericError", "desc": "Export 'n2' is not found"}}
 {"return": {}}
-{"return": {}}
+{"error": {"class": "GenericError", "desc": "NBD server not running"}}
 {"return": {}}
 *** done