[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v3 20/24] vhdx: Fix "log that needs to be replayed"
From: |
Markus Armbruster |
Subject: |
[Qemu-devel] [PATCH v3 20/24] vhdx: Fix "log that needs to be replayed" error message |
Date: |
Fri, 18 Dec 2015 16:35:23 +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>
Reviewed-by: Eric Blake <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
- [Qemu-devel] [PATCH v3 14/24] migration: Use error_reportf_err() instead of monitor_printf(), (continued)
- [Qemu-devel] [PATCH v3 14/24] migration: Use error_reportf_err() instead of monitor_printf(), Markus Armbruster, 2015/12/18
- [Qemu-devel] [PATCH v3 22/24] hw/s390x: Rename local variables Error *l_err to just err, Markus Armbruster, 2015/12/18
- [Qemu-devel] [PATCH v3 05/24] error: Improve documentation, Markus Armbruster, 2015/12/18
- [Qemu-devel] [PATCH v3 24/24] error: Consistently name Error * objects err, and not errp, Markus Armbruster, 2015/12/18
- [Qemu-devel] [PATCH v3 11/24] error: Use error_reportf_err() where it makes obvious sense, Markus Armbruster, 2015/12/18
- [Qemu-devel] [PATCH v3 21/24] error: Clean up errors with embedded newlines (again), Markus Armbruster, 2015/12/18
- [Qemu-devel] [PATCH v3 20/24] vhdx: Fix "log that needs to be replayed" error message,
Markus Armbruster <=
- [Qemu-devel] [PATCH v3 23/24] s390/sclp: Simplify control flow in sclp_realize(), Markus Armbruster, 2015/12/18