[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 36/41] vhdx: Fix "log that needs to be replayed" erro
From: |
Markus Armbruster |
Subject: |
[Qemu-devel] [PULL 36/41] vhdx: Fix "log that needs to be replayed" error message |
Date: |
Wed, 13 Jan 2016 16:43:34 +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>
Message-Id: <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] [PULL 01/41] error: Document how to accumulate multiple errors, (continued)
- [Qemu-devel] [PULL 01/41] error: Document how to accumulate multiple errors, Markus Armbruster, 2016/01/13
- [Qemu-devel] [PULL 03/41] hw: Inline the qdev_prop_set_drive_nofail() wrapper, Markus Armbruster, 2016/01/13
- [Qemu-devel] [PULL 09/41] error: Don't append a newline when printing the error hint, Markus Armbruster, 2016/01/13
- [Qemu-devel] [PULL 08/41] raven: Mark use of hw_error() in realize() FIXME, Markus Armbruster, 2016/01/13
- [Qemu-devel] [PULL 15/41] audio: Clean up inappropriate and unreachable use of hw_error(), Markus Armbruster, 2016/01/13
- [Qemu-devel] [PULL 24/41] test-throttle: Simplify qemu_init_main_loop() error handling, Markus Armbruster, 2016/01/13
- [Qemu-devel] [PULL 20/41] error: Use error_report_err() instead of ad hoc prints, Markus Armbruster, 2016/01/13
- [Qemu-devel] [PULL 13/41] isa: Clean up error handling around isa_bus_new(), Markus Armbruster, 2016/01/13
- [Qemu-devel] [PULL 18/41] error: Use error_report_err() where appropriate (again), Markus Armbruster, 2016/01/13
- [Qemu-devel] [PULL 21/41] error: Improve documentation, Markus Armbruster, 2016/01/13
- [Qemu-devel] [PULL 36/41] vhdx: Fix "log that needs to be replayed" error message,
Markus Armbruster <=
- [Qemu-devel] [PULL 02/41] Use error_fatal to simplify obvious fatal errors, Markus Armbruster, 2016/01/13
- [Qemu-devel] [PULL 05/41] omap: Don't use hw_error() in device init() methods, Markus Armbruster, 2016/01/13
- [Qemu-devel] [PULL 07/41] etraxfs_eth: Don't use hw_error() in init() method, Markus Armbruster, 2016/01/13
- [Qemu-devel] [PULL 11/41] sysbus: Don't use hw_error() in machine_init_done_notifiers, Markus Armbruster, 2016/01/13
- [Qemu-devel] [PULL 17/41] qemu-nbd: Replace BSDism <err.h> by error_report(), Markus Armbruster, 2016/01/13
- [Qemu-devel] [PULL 28/41] error: Use error_prepend() where it makes obvious sense, Markus Armbruster, 2016/01/13
- [Qemu-devel] [PULL 19/41] error: Use error_report_err() instead of monitor_printf(), Markus Armbruster, 2016/01/13
- [Qemu-devel] [PULL 35/41] pci-assign: Clean up "Failed to assign" error messages, Markus Armbruster, 2016/01/13
- [Qemu-devel] [PULL 06/41] arm_mptimer: Don't use hw_error() in realize() method, Markus Armbruster, 2016/01/13
- [Qemu-devel] [PULL 14/41] isa: Clean up inappropriate hw_error(), Markus Armbruster, 2016/01/13