diff options
author | Daniel P. Berrangé <berrange@redhat.com> | 2020-07-01 15:22:43 +0100 |
---|---|---|
committer | Daniel P. Berrangé <berrange@redhat.com> | 2020-09-16 10:33:48 +0100 |
commit | b18a24a9f889bcf722754046130507d744a1b0b9 (patch) | |
tree | c5cb6820e0b32f436f0034b819060b8ef9ddc7de /block/file-win32.c | |
parent | 661b3e81a336570dfbf4c224595921d490ac792f (diff) |
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>
Diffstat (limited to 'block/file-win32.c')
-rw-r--r-- | block/file-win32.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/block/file-win32.c b/block/file-win32.c index b28603c7d5..2642088bd6 100644 --- a/block/file-win32.c +++ b/block/file-win32.c @@ -596,11 +596,9 @@ static int raw_co_create(BlockdevCreateOptions *options, Error **errp) return -EINVAL; } - fd = qemu_open_old(file_opts->filename, - O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, - 0644); + fd = qemu_create(file_opts->filename, O_WRONLY | O_TRUNC | O_BINARY, + 0644, errp); if (fd < 0) { - error_setg_errno(errp, errno, "Could not create file"); return -EIO; } set_sparse(fd); |