[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 20/23] vhdx: Fix "log that needs to be replayed"
From: |
Markus Armbruster |
Subject: |
[Qemu-devel] [PATCH v2 20/23] vhdx: Fix "log that needs to be replayed" error message |
Date: |
Thu, 17 Dec 2015 17:50:01 +0100 |
The arguments of error_setg_errno() should yield a short error string
without newlines.
Here, we try to append additional help to the error message by
embedding newlines in the error string. That's nice, but it's doesn't
play nicely with the errno part. tests/qemu-iotests/070.out shows the
resulting mess:
can't open device TEST_DIR/iotest-dirtylog-10G-4M.vhdx: VHDX image file
'TEST_DIR/iotest-dirtylog-10G-4M.vhdx' opened read-only, but contains a log
that needs to be replayed. To replay the log, execute:
qemu-img check -r all 'TEST_DIR/iotest-dirtylog-10G-4M.vhdx': Operation
not permitted
Switch to error_setg() and error_append_hint(). Result:
can't open device TEST_DIR/iotest-dirtylog-10G-4M.vhdx: VHDX image file
'TEST_DIR/iotest-dirtylog-10G-4M.vhdx' opened read-only, but contains a log
that needs to be replayed
To replay the log, run:
qemu-img check -r all 'TEST_DIR/iotest-dirtylog-10G-4M.vhdx'
Signed-off-by: Markus Armbruster <address@hidden>
---
block/vhdx-log.c | 13 +++++++------
tests/qemu-iotests/070.out | 5 +++--
2 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/block/vhdx-log.c b/block/vhdx-log.c
index 47ae4b1..ab86416 100644
--- a/block/vhdx-log.c
+++ b/block/vhdx-log.c
@@ -784,12 +784,13 @@ int vhdx_parse_log(BlockDriverState *bs, BDRVVHDXState
*s, bool *flushed,
if (logs.valid) {
if (bs->read_only) {
ret = -EPERM;
- error_setg_errno(errp, EPERM,
- "VHDX image file '%s' opened read-only, but "
- "contains a log that needs to be replayed. To "
- "replay the log, execute:\n qemu-img check -r "
- "all '%s'",
- bs->filename, bs->filename);
+ error_setg(errp,
+ "VHDX image file '%s' opened read-only, but "
+ "contains a log that needs to be replayed",
+ bs->filename);
+ error_append_hint(errp, "To replay the log, run:\n"
+ "qemu-img check -r all '%s'\n",
+ bs->filename);
goto exit;
}
/* now flush the log */
diff --git a/tests/qemu-iotests/070.out b/tests/qemu-iotests/070.out
index ffd4251..131a5b1 100644
--- a/tests/qemu-iotests/070.out
+++ b/tests/qemu-iotests/070.out
@@ -1,8 +1,9 @@
QA output created by 070
=== Verify open image read-only fails, due to dirty log ===
-can't open device TEST_DIR/iotest-dirtylog-10G-4M.vhdx: VHDX image file
'TEST_DIR/iotest-dirtylog-10G-4M.vhdx' opened read-only, but contains a log
that needs to be replayed. To replay the log, execute:
- qemu-img check -r all 'TEST_DIR/iotest-dirtylog-10G-4M.vhdx': Operation not
permitted
+can't open device TEST_DIR/iotest-dirtylog-10G-4M.vhdx: VHDX image file
'TEST_DIR/iotest-dirtylog-10G-4M.vhdx' opened read-only, but contains a log
that needs to be replayed
+To replay the log, run:
+qemu-img check -r all 'TEST_DIR/iotest-dirtylog-10G-4M.vhdx'
no file open, try 'help open'
=== Verify open image replays log ===
read 18874368/18874368 bytes at offset 0
--
2.4.3
- Re: [Qemu-devel] [PATCH v2 05/23] error: Improve documentation around error_append_hint(), (continued)
[Qemu-devel] [PATCH v2 07/23] qemu-nbd: Clean up "Failed to load snapshot" error message, Markus Armbruster, 2015/12/17
[Qemu-devel] [PATCH v2 12/23] error: Use error_prepend() where it makes obvious sense, Markus Armbruster, 2015/12/17
[Qemu-devel] [PATCH v2 11/23] error: Use error_reportf_err() where it makes obvious sense, Markus Armbruster, 2015/12/17
[Qemu-devel] [PATCH v2 20/23] vhdx: Fix "log that needs to be replayed" error message,
Markus Armbruster <=
[Qemu-devel] [PATCH v2 19/23] pci-assign: Clean up "Failed to assign" error messages, Markus Armbruster, 2015/12/17
[Qemu-devel] [PATCH v2 10/23] error: Don't decorate original error message when adding to it, Markus Armbruster, 2015/12/17
[Qemu-devel] [PATCH v2 15/23] qemu-io qemu-nbd: Use error_report() etc. instead of fprintf(), Markus Armbruster, 2015/12/17
[Qemu-devel] [PATCH v2 14/23] migration: Use error_reportf_err() instead of monitor_printf(), Markus Armbruster, 2015/12/17