block/file: switch to use qemu_open/qemu_create for improved errors
commitb18a24a9f889bcf722754046130507d744a1b0b9
authorDaniel P. Berrangé <berrange@redhat.com>
Wed, 1 Jul 2020 14:22:43 +0000 (1 15:22 +0100)
committerDaniel P. Berrangé <berrange@redhat.com>
Wed, 16 Sep 2020 09:33:48 +0000 (16 10:33 +0100)
treec5cb6820e0b32f436f0034b819060b8ef9ddc7de
parent661b3e81a336570dfbf4c224595921d490ac792f
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>
block/file-posix.c
block/file-win32.c