qemu-e2k/block
Markus Armbruster bf89e87427 vhdx: Fix "log that needs to be replayed" error message
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 <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-Id: <1450452927-8346-21-git-send-email-armbru@redhat.com>
2016-01-13 15:16:18 +01:00
..
Makefile.objs block: convert quorum blockdrv to use crypto APIs 2015-07-08 13:11:01 +02:00
accounting.c block: Update copyright of the accounting code 2015-11-12 16:22:47 +01:00
archipelago.c block: remove superfluous '\n' around error_report/error_setg 2015-03-10 08:15:33 +03:00
backup.c block: Don't wait serialising for non-COR read requests 2015-12-03 11:08:07 +08:00
blkdebug.c blkdebug: Enable reopen 2015-12-18 14:34:43 +01:00
blkverify.c block: Pass driver-specific options to .bdrv_refresh_filename() 2015-12-18 14:34:42 +01:00
block-backend.c block-backend: add blk_get_max_iov() 2015-12-22 16:01:07 +08:00
bochs.c block: Convert bs->file to BdrvChild 2015-10-16 15:34:29 +02:00
cloop.c block: Convert bs->file to BdrvChild 2015-10-16 15:34:29 +02:00
commit.c commit: reopen overlay_bs before base 2015-11-11 16:25:47 +01:00
curl.c aio: Add "is_external" flag for event handlers 2015-10-23 18:18:23 +02:00
dmg.c block: Convert bs->file to BdrvChild 2015-10-16 15:34:29 +02:00
gluster.c gluster: allocate GlusterAIOCBs on the stack 2015-11-11 10:45:39 -05:00
io.c block: replace IOV_MAX with BlockLimits.max_iov 2015-12-22 16:01:07 +08:00
iscsi.c iscsi: fix readcapacity error message 2016-01-11 11:39:28 +03:00
linux-aio.c aio: Add "is_external" flag for event handlers 2015-10-23 18:18:23 +02:00
mirror.c block/mirror: replace IOV_MAX with blk_get_max_iov() 2015-12-22 16:01:07 +08:00
nbd-client.c aio: Add "is_external" flag for event handlers 2015-10-23 18:18:23 +02:00
nbd-client.h nbd: Set block size to BDRV_SECTOR_SIZE 2015-03-18 12:07:01 +01:00
nbd.c block: Pass driver-specific options to .bdrv_refresh_filename() 2015-12-18 14:34:42 +01:00
nfs.c aio: Add "is_external" flag for event handlers 2015-10-23 18:18:23 +02:00
null.c block/null: Support reopen 2015-04-28 15:36:09 +02:00
parallels.c qapi: Don't let implicit enum MAX member collide 2015-12-17 08:21:28 +01:00
qapi.c block/qapi: Clear err for further error 2016-01-07 21:30:17 +01:00
qcow.c block: Convert bs->backing_hd to BdrvChild 2015-10-16 15:34:29 +02:00
qcow2-cache.c block: Convert bs->file to BdrvChild 2015-10-16 15:34:29 +02:00
qcow2-cluster.c block: Add opaque value to the amend CB 2015-12-18 14:34:43 +01:00
qcow2-refcount.c qcow2: Point to amend function in check 2015-12-18 14:34:43 +01:00
qcow2-snapshot.c block: Convert bs->file to BdrvChild 2015-10-16 15:34:29 +02:00
qcow2.c error: Use error_prepend() where it makes obvious sense 2016-01-13 15:16:17 +01:00
qcow2.h qcow2: Add function for refcount order amendment 2015-12-18 14:34:43 +01:00
qed-check.c block: Use g_new() & friends to avoid multiplying sizes 2014-08-20 11:51:28 +02:00
qed-cluster.c
qed-gencb.c block: Rename BlockDriverCompletionFunc to BlockCompletionFunc 2014-10-20 13:41:27 +02:00
qed-l2-cache.c
qed-table.c block: Convert bs->file to BdrvChild 2015-10-16 15:34:29 +02:00
qed.c error: Use error_prepend() where it makes obvious sense 2016-01-13 15:16:17 +01:00
qed.h qed: Really remove unused field QEDAIOCB.finished 2015-02-06 17:24:21 +01:00
quorum.c block: Pass driver-specific options to .bdrv_refresh_filename() 2015-12-18 14:34:42 +01:00
raw-aio.h linux-aio: drop return code from laio_io_unplug and ioq_submit 2014-12-12 16:57:55 +00:00
raw-posix.c raw-posix: Make aio=native option binding 2015-12-18 14:34:43 +01:00
raw-win32.c block: switch from g_slice allocator to malloc 2015-10-12 11:17:45 +01:00
raw_bsd.c block: Drop BlockDriver.bdrv_ioctl 2015-11-12 16:22:43 +01:00
rbd.c rbd: fix ceph settings precedence 2015-07-14 17:15:23 +02:00
sheepdog.c error: Use error_reportf_err() where it makes obvious sense 2016-01-13 15:16:17 +01:00
snapshot.c block: use drained section around bdrv_snapshot_delete 2015-12-18 14:34:44 +01:00
ssh.c aio: Add "is_external" flag for event handlers 2015-10-23 18:18:23 +02:00
stream.c block: Move I/O status and error actions into BB 2015-10-23 18:18:23 +02:00
throttle-groups.c throttle: Check for pending requests in throttle_group_unregister_bs() 2015-11-11 16:25:47 +01:00
vdi.c coroutine: move into libqemuutil.a library 2015-10-20 14:59:04 +01:00
vhdx-endian.c
vhdx-log.c vhdx: Fix "log that needs to be replayed" error message 2016-01-13 15:16:18 +01:00
vhdx.c block: Convert bs->file to BdrvChild 2015-10-16 15:34:29 +02:00
vhdx.h block: vhdx - update PAYLOAD_BLOCK_UNMAPPED value to match 1.00 spec 2014-12-12 15:42:22 +00:00
vmdk.c vmdk: Clean up "Invalid extent lines" error message 2016-01-13 15:16:18 +01:00
vpc.c block: Convert bs->file to BdrvChild 2015-10-16 15:34:29 +02:00
vvfat.c block: Remove bdrv_swap() 2015-10-16 15:34:30 +02:00
win32-aio.c aio: Add "is_external" flag for event handlers 2015-10-23 18:18:23 +02:00
write-threshold.c coroutine: move into libqemuutil.a library 2015-10-20 14:59:04 +01:00