block: Improve error message when external snapshot can't flush
authorMarkus Armbruster <armbru@redhat.com>
Mon, 13 May 2024 14:16:58 +0000 (16:16 +0200)
committerMarkus Armbruster <armbru@redhat.com>
Mon, 27 May 2024 10:42:01 +0000 (12:42 +0200)
external_snapshot_action() reports bdrv_flush() failure to its caller
as

    An IO error has occurred

The errno code returned by bdrv_flush() is lost.

Improve this to

    Write to node '<device or node name>' failed: <description of errno>

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-ID: <20240513141703.549874-2-armbru@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
blockdev.c

index 08eccc9052d742bb1bc08a41c96e22fb5aa072b0..528db3452f584b5fc98922d3a03f43835ff126c3 100644 (file)
@@ -1406,8 +1406,10 @@ static void external_snapshot_action(TransactionAction *action,
     }
 
     if (!bdrv_is_read_only(state->old_bs)) {
-        if (bdrv_flush(state->old_bs)) {
-            error_setg(errp, QERR_IO_ERROR);
+        ret = bdrv_flush(state->old_bs);
+        if (ret < 0) {
+            error_setg_errno(errp, -ret, "Write to node '%s' failed",
+                             bdrv_get_device_or_node_name(state->old_bs));
             return;
         }
     }