qemu/block
Daniel P. Berrangé b18a24a9f8 block/file: switch to use qemu_open/qemu_create for improved errors
Currently at startup if using cache=none on a filesystem lacking
O_DIRECT such as tmpfs, at startup QEMU prints

qemu-system-x86_64: -drive file=/tmp/foo.img,cache=none: file system may not support O_DIRECT
qemu-system-x86_64: -drive file=/tmp/foo.img,cache=none: Could not open '/tmp/foo.img': Invalid argument

while at QMP level the hint is missing, so QEMU reports just

  "error": {
      "class": "GenericError",
      "desc": "Could not open '/tmp/foo.img': Invalid argument"
  }

which is close to useless for the end user trying to figure out what
they did wrong.

With this change at startup QEMU prints

qemu-system-x86_64: -drive file=/tmp/foo.img,cache=none: Unable to open '/tmp/foo.img': filesystem does not support O_DIRECT

while at the QMP level QEMU reports a massively more informative

  "error": {
     "class": "GenericError",
     "desc": "Unable to open '/tmp/foo.img': filesystem does not support O_DIRECT"
  }

Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2020-09-16 10:33:48 +01:00
..
monitor commit: Deal with filters 2020-09-07 12:31:31 +02:00
accounting.c
aio_task.c
amend.c block/amend: Check whether the node exists 2020-07-27 12:37:25 +02:00
backup-top.c block: Inline bdrv_co_block_status_from_*() 2020-09-07 12:31:31 +02:00
backup-top.h
backup.c backup: Deal with filters 2020-09-07 12:31:31 +02:00
blkdebug.c block: Inline bdrv_co_block_status_from_*() 2020-09-07 12:31:31 +02:00
blklogwrites.c block: Inline bdrv_co_block_status_from_*() 2020-09-07 12:31:31 +02:00
blkreplay.c
blkverify.c
block-backend.c commit: Deal with filters 2020-09-07 12:31:31 +02:00
block-copy.c block-copy: Use CAF to find sync=top base 2020-09-07 12:31:31 +02:00
bochs.c
cloop.c
commit.c block: Inline bdrv_co_block_status_from_*() 2020-09-07 12:31:31 +02:00
copy-on-read.c block: Inline bdrv_co_block_status_from_*() 2020-09-07 12:31:31 +02:00
create.c
crypto.c block/crypto: disallow write sharing by default 2020-07-21 10:49:02 +02:00
crypto.h
curl.c
dirty-bitmap.c
dmg-bz2.c
dmg-lzfse.c
dmg.c
dmg.h
file-posix.c block/file: switch to use qemu_open/qemu_create for improved errors 2020-09-16 10:33:48 +01:00
file-win32.c block/file: switch to use qemu_open/qemu_create for improved errors 2020-09-16 10:33:48 +01:00
filter-compress.c block: Inline bdrv_co_block_status_from_*() 2020-09-07 12:31:31 +02:00
gluster.c
io_uring.c
io.c block: Inline bdrv_co_block_status_from_*() 2020-09-07 12:31:31 +02:00
iscsi-opts.c
iscsi.c iscsi: return -EIO when sense fields are meaningless 2020-07-10 18:02:23 -04:00
linux-aio.c
meson.build block: always link with zlib 2020-09-01 01:51:51 -04:00
mirror.c block: Inline bdrv_co_block_status_from_*() 2020-09-07 12:31:31 +02:00
nbd.c block/nbd: use non-blocking connect: fix vm hang on connect() 2020-09-02 16:47:23 -05:00
nfs.c qapi: Smooth another visitor error checking pattern 2020-07-10 15:18:08 +02:00
null.c block/null: Implement bdrv_get_allocated_file_size 2020-09-07 12:31:31 +02:00
nvme.c block/nvme: Pair doorbell registers 2020-09-10 11:11:13 +02:00
parallels.c error: Avoid error_propagate() after migrate_add_blocker() 2020-07-10 15:18:08 +02:00
parallels.h
qapi-sysemu.c
qapi.c block: Leave BDS.backing_{file,format} constant 2020-09-07 12:31:31 +02:00
qcow2-bitmap.c qcow2: Use macros for the L1, refcount and bitmap table entry sizes 2020-09-15 11:05:12 +02:00
qcow2-cache.c
qcow2-cluster.c qcow2: Convert qcow2_alloc_cluster_offset() into qcow2_alloc_host_offset() 2020-09-15 11:31:10 +02:00
qcow2-refcount.c qcow2: Make qcow2_free_any_clusters() free only one cluster 2020-09-15 11:05:13 +02:00
qcow2-snapshot.c qcow2: Use macros for the L1, refcount and bitmap table entry sizes 2020-09-15 11:05:12 +02:00
qcow2-threads.c
qcow2.c qcow2: Convert qcow2_alloc_cluster_offset() into qcow2_alloc_host_offset() 2020-09-15 11:31:10 +02:00
qcow2.h qcow2: Convert qcow2_alloc_cluster_offset() into qcow2_alloc_host_offset() 2020-09-15 11:31:10 +02:00
qcow.c block/qcow: remove runtime opts 2020-09-15 11:05:13 +02:00
qed-check.c
qed-cluster.c
qed-l2-cache.c
qed-table.c
qed.c qapi: Smooth another visitor error checking pattern 2020-07-10 15:18:08 +02:00
qed.h
quorum.c block/quorum.c: stable children names 2020-09-15 11:05:12 +02:00
raw-format.c
rbd.c block/rbd: add 'namespace' to qemu_rbd_strong_runtime_opts[] 2020-09-15 11:31:10 +02:00
replication.c
sheepdog.c sheepdog: Add trivial backing_fmt support 2020-07-14 15:18:59 +02:00
snapshot.c block/snapshot: Fix fallback 2020-09-07 12:31:31 +02:00
ssh.c qapi: Smooth another visitor error checking pattern 2020-07-10 15:18:08 +02:00
stream.c stream: Deal with filters 2020-09-07 12:31:31 +02:00
throttle-groups.c throttle-groups: Move ThrottleGroup typedef to header 2020-08-27 14:04:54 -04:00
throttle.c block: Inline bdrv_co_block_status_from_*() 2020-09-07 12:31:31 +02:00
trace-events trace-events: Fix attribution of trace points to source 2020-09-09 17:17:58 +01:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
vdi.c error: Avoid error_propagate() after migrate_add_blocker() 2020-07-10 15:18:08 +02:00
vhdx-endian.c
vhdx-log.c
vhdx.c block/vhdx: Support vhdx image only with 512 bytes logical sector size 2020-09-15 11:05:13 +02:00
vhdx.h
vmdk.c vmdk: Drop vmdk_co_flush() 2020-09-07 12:31:31 +02:00
vpc.c error: Avoid error_propagate() after migrate_add_blocker() 2020-07-10 15:18:08 +02:00
vvfat.c util: rename qemu_open() to qemu_open_old() 2020-09-16 10:33:48 +01:00
win32-aio.c
write-threshold.c