[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 04/15] blockdev: Fix blockdev-snapshot-sync error reporting for no
From: |
Kevin Wolf |
Subject: |
[PULL 04/15] blockdev: Fix blockdev-snapshot-sync error reporting for no medium |
Date: |
Mon, 18 Mar 2024 14:01:07 +0100 |
From: Markus Armbruster <armbru@redhat.com>
When external_snapshot_abort() rejects a BlockDriverState without a
medium, it creates an error like this:
error_setg(errp, "Device '%s' has no medium", device);
Trouble is @device can be null. My system formats null as "(null)",
but other systems might crash. Reproducer:
1. Create a block device without a medium
-> {"execute": "blockdev-add", "arguments": {"driver": "host_cdrom",
"node-name": "blk0", "filename": "/dev/sr0"}}
<- {"return": {}}
3. Attempt to snapshot it
-> {"execute":"blockdev-snapshot-sync", "arguments": { "node-name": "blk0",
"snapshot-file":"/tmp/foo.qcow2","format":"qcow2"}}
<- {"error": {"class": "GenericError", "desc": "Device '(null)' has no
medium"}}
Broken when commit 0901f67ecdb made @device optional.
Use bdrv_get_device_or_node_name() instead. Now it fails as it
should:
<- {"error": {"class": "GenericError", "desc": "Device 'blk0' has no
medium"}}
Fixes: 0901f67ecdb7 ("qmp: Allow to take external snapshots on bs graphs node.")
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-ID: <20240306142831.2514431-1-armbru@redhat.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
blockdev.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/blockdev.c b/blockdev.c
index d8fb3399f5..057601dcf0 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -1395,7 +1395,8 @@ static void external_snapshot_action(TransactionAction
*action,
bdrv_drained_begin(state->old_bs);
if (!bdrv_is_inserted(state->old_bs)) {
- error_setg(errp, QERR_DEVICE_HAS_NO_MEDIUM, device);
+ error_setg(errp, QERR_DEVICE_HAS_NO_MEDIUM,
+ bdrv_get_device_or_node_name(state->old_bs));
return;
}
--
2.44.0
- [PULL 00/15] Block layer patches, Kevin Wolf, 2024/03/18
- [PULL 01/15] mirror: Don't call job_pause_point() under graph lock, Kevin Wolf, 2024/03/18
- [PULL 07/15] tests/qemu-iotests: Restrict test 066 to the 'file' protocol, Kevin Wolf, 2024/03/18
- [PULL 03/15] iotests: Add test for reset/AioContext switches with NBD exports, Kevin Wolf, 2024/03/18
- [PULL 09/15] tests/qemu-iotests: Restrict test 130 to the 'file' protocol, Kevin Wolf, 2024/03/18
- [PULL 08/15] tests/qemu-iotests: Restrict test 114 to the 'file' protocol, Kevin Wolf, 2024/03/18
- [PULL 04/15] blockdev: Fix blockdev-snapshot-sync error reporting for no medium,
Kevin Wolf <=
- [PULL 02/15] nbd/server: Fix race in draining the export, Kevin Wolf, 2024/03/18
- [PULL 12/15] tests/qemu-iotests: Restrict tests that use --image-opts to the 'file' protocol, Kevin Wolf, 2024/03/18
- [PULL 13/15] tests/qemu-iotests: Fix some tests that use --image-opts for other protocols, Kevin Wolf, 2024/03/18
- [PULL 05/15] qemu-img: Fix Column Width and Improve Formatting in snapshot list, Kevin Wolf, 2024/03/18
- [PULL 15/15] iotests: adapt to output change for recently introduced 'detached header' field, Kevin Wolf, 2024/03/18
- [PULL 06/15] tests/qemu-iotests: Fix test 033 for running with non-file protocols, Kevin Wolf, 2024/03/18
- [PULL 14/15] tests/qemu-iotests: Restrict tests using "--blockdev file" to the file protocol, Kevin Wolf, 2024/03/18
- [PULL 10/15] tests/qemu-iotests: Restrict test 134 and 158 to the 'file' protocol, Kevin Wolf, 2024/03/18
- [PULL 11/15] tests/qemu-iotests: Restrict test 156 to the 'file' protocol, Kevin Wolf, 2024/03/18
- Re: [PULL 00/15] Block layer patches, Peter Maydell, 2024/03/19