From nobody Fri May 17 03:12:45 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1598030607; cv=none; d=zohomail.com; s=zohoarc; b=YDJ9LkQINFt+2tWIy5RcqITJdGyTIAHMEZf7cCl9nEFkhGihE6qzKS+gu547q38759hEJxmcTtKL/k0bchge2ThTC016QFHsfr2mlbDMceYv+t3IXTixa/NnYLvN6NzqVszJ5YjiZPj5fbhdu3deyPhaUyDMKZaIAcEc1eZ9Mdw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598030607; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=20FvgiLYoFc4if+XtpxQySZnWCqNxkbt04SDTnu+8+w=; b=g+OTTdiDNeiHgaFrHlW5fHboSndLXGZulun72MJbWC2mt+/ZOmk3GXZhXOQx6IC5RBEFPZbC10QLgqcsLvkhCf2Q1U7Euif9KwMEc92HIWQ0GGB93F+0tqLQnvAAc63wl8l4ZHag5qgZOUbYz9fsM2lu3+dEoGdLuiF8WepJvts= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598030607038349.66226873826577; Fri, 21 Aug 2020 10:23:27 -0700 (PDT) Received: from localhost ([::1]:56430 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k9AlB-0003pH-Nj for importer@patchew.org; Fri, 21 Aug 2020 13:23:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:54350) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k9AjB-0000TT-HZ for qemu-devel@nongnu.org; Fri, 21 Aug 2020 13:21:21 -0400 Received: from us-smtp-delivery-1.mimecast.com ([207.211.31.120]:43626 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1k9Aj7-0008Oi-Ly for qemu-devel@nongnu.org; Fri, 21 Aug 2020 13:21:21 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-277-ym9KfCHROfCmzSuoB3rbBw-1; Fri, 21 Aug 2020 13:21:12 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id A651B8030BD; Fri, 21 Aug 2020 17:21:11 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.36.110.21]) by smtp.corp.redhat.com (Postfix) with ESMTP id 1606F6E715; Fri, 21 Aug 2020 17:21:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1598030476; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=20FvgiLYoFc4if+XtpxQySZnWCqNxkbt04SDTnu+8+w=; b=H0snwM+8LbN4srXMrrEoVjQT7quEGC+B/7g+nM8zNzuihLd14PBK0DO4ssXvAfIjUxH9xm EiW2HzlEmt3VtHagXK69F/Otv+OV59vX6xl3SFRXAdhFBXRApxFY5gmkrqav124JGwZ7GE JKN3LZiRBGYwsrlkKP8TCDEtiyuXA1E= X-MC-Unique: ym9KfCHROfCmzSuoB3rbBw-1 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH v4 1/6] util: rename qemu_open() to qemu_open_old() Date: Fri, 21 Aug 2020 18:21:00 +0100 Message-Id: <20200821172105.608752-2-berrange@redhat.com> In-Reply-To: <20200821172105.608752-1-berrange@redhat.com> References: <20200821172105.608752-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=berrange@redhat.com X-Mimecast-Spam-Score: 0.002 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=207.211.31.120; envelope-from=berrange@redhat.com; helo=us-smtp-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/21 04:55:47 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -40 X-Spam_score: -4.1 X-Spam_bar: ---- X-Spam_report: (-4.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , qemu-block@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Markus Armbruster , Max Reitz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) We want to introduce a new version of qemu_open() that uses an Error object for reporting problems and make this it the preferred interface. Rename the existing method to release the namespace for the new impl. Reviewed-by: Eric Blake Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Daniel P. Berrang=C3=A9 --- accel/kvm/kvm-all.c | 2 +- backends/rng-random.c | 2 +- backends/tpm/tpm_passthrough.c | 8 ++++---- block/file-posix.c | 14 +++++++------- block/file-win32.c | 5 +++-- block/vvfat.c | 5 +++-- chardev/char-fd.c | 2 +- chardev/char-pipe.c | 6 +++--- chardev/char.c | 2 +- dump/dump.c | 2 +- hw/s390x/s390-skeys.c | 2 +- hw/usb/host-libusb.c | 2 +- hw/vfio/common.c | 4 ++-- include/qemu/osdep.h | 2 +- io/channel-file.c | 2 +- net/vhost-vdpa.c | 2 +- os-posix.c | 2 +- qga/channel-posix.c | 4 ++-- qga/commands-posix.c | 6 +++--- target/arm/kvm.c | 2 +- ui/console.c | 2 +- util/osdep.c | 2 +- util/oslib-posix.c | 2 +- 23 files changed, 42 insertions(+), 40 deletions(-) diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index 63ef6af9a1..ad8b315b35 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -2013,7 +2013,7 @@ static int kvm_init(MachineState *ms) #endif QLIST_INIT(&s->kvm_parked_vcpus); s->vmfd =3D -1; - s->fd =3D qemu_open("/dev/kvm", O_RDWR); + s->fd =3D qemu_open_old("/dev/kvm", O_RDWR); if (s->fd =3D=3D -1) { fprintf(stderr, "Could not access KVM kernel module: %m\n"); ret =3D -errno; diff --git a/backends/rng-random.c b/backends/rng-random.c index 32998d8ee7..245b12ab24 100644 --- a/backends/rng-random.c +++ b/backends/rng-random.c @@ -75,7 +75,7 @@ static void rng_random_opened(RngBackend *b, Error **errp) error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "filename", "a valid filename"); } else { - s->fd =3D qemu_open(s->filename, O_RDONLY | O_NONBLOCK); + s->fd =3D qemu_open_old(s->filename, O_RDONLY | O_NONBLOCK); if (s->fd =3D=3D -1) { error_setg_file_open(errp, errno, s->filename); } diff --git a/backends/tpm/tpm_passthrough.c b/backends/tpm/tpm_passthrough.c index 7403807ec4..81e2d8f531 100644 --- a/backends/tpm/tpm_passthrough.c +++ b/backends/tpm/tpm_passthrough.c @@ -217,7 +217,7 @@ static int tpm_passthrough_open_sysfs_cancel(TPMPassthr= uState *tpm_pt) char path[PATH_MAX]; =20 if (tpm_pt->options->cancel_path) { - fd =3D qemu_open(tpm_pt->options->cancel_path, O_WRONLY); + fd =3D qemu_open_old(tpm_pt->options->cancel_path, O_WRONLY); if (fd < 0) { error_report("tpm_passthrough: Could not open TPM cancel path:= %s", strerror(errno)); @@ -235,11 +235,11 @@ static int tpm_passthrough_open_sysfs_cancel(TPMPasst= hruState *tpm_pt) dev++; if (snprintf(path, sizeof(path), "/sys/class/tpm/%s/device/cancel", dev) < sizeof(path)) { - fd =3D qemu_open(path, O_WRONLY); + fd =3D qemu_open_old(path, O_WRONLY); if (fd < 0) { if (snprintf(path, sizeof(path), "/sys/class/misc/%s/device/ca= ncel", dev) < sizeof(path)) { - fd =3D qemu_open(path, O_WRONLY); + fd =3D qemu_open_old(path, O_WRONLY); } } } @@ -271,7 +271,7 @@ tpm_passthrough_handle_device_opts(TPMPassthruState *tp= m_pt, QemuOpts *opts) } =20 tpm_pt->tpm_dev =3D value ? value : TPM_PASSTHROUGH_DEFAULT_DEVICE; - tpm_pt->tpm_fd =3D qemu_open(tpm_pt->tpm_dev, O_RDWR); + tpm_pt->tpm_fd =3D qemu_open_old(tpm_pt->tpm_dev, O_RDWR); if (tpm_pt->tpm_fd < 0) { error_report("Cannot access TPM device using '%s': %s", tpm_pt->tpm_dev, strerror(errno)); diff --git a/block/file-posix.c b/block/file-posix.c index 9a00d4190a..bac2566f10 100644 --- a/block/file-posix.c +++ b/block/file-posix.c @@ -630,7 +630,7 @@ static int raw_open_common(BlockDriverState *bs, QDict = *options, raw_parse_flags(bdrv_flags, &s->open_flags, false); =20 s->fd =3D -1; - fd =3D qemu_open(filename, s->open_flags, 0644); + fd =3D qemu_open_old(filename, s->open_flags, 0644); ret =3D fd < 0 ? -errno : 0; =20 if (ret < 0) { @@ -1032,13 +1032,13 @@ static int raw_reconfigure_getfd(BlockDriverState *= bs, int flags, } } =20 - /* If we cannot use fcntl, or fcntl failed, fall back to qemu_open() */ + /* If we cannot use fcntl, or fcntl failed, fall back to qemu_open_old= () */ if (fd =3D=3D -1) { const char *normalized_filename =3D bs->filename; ret =3D raw_normalize_devicepath(&normalized_filename, errp); if (ret >=3D 0) { assert(!(*open_flags & O_CREAT)); - fd =3D qemu_open(normalized_filename, *open_flags); + fd =3D qemu_open_old(normalized_filename, *open_flags); if (fd =3D=3D -1) { error_setg_errno(errp, errno, "Could not reopen file"); return -1; @@ -2411,7 +2411,7 @@ raw_co_create(BlockdevCreateOptions *options, Error *= *errp) } =20 /* Create file */ - fd =3D qemu_open(file_opts->filename, O_RDWR | O_CREAT | O_BINARY, 064= 4); + fd =3D qemu_open_old(file_opts->filename, O_RDWR | O_CREAT | O_BINARY,= 0644); if (fd < 0) { result =3D -errno; error_setg_errno(errp, -result, "Could not create file"); @@ -3335,7 +3335,7 @@ static bool setup_cdrom(char *bsd_path, Error **errp) for (index =3D 0; index < num_of_test_partitions; index++) { snprintf(test_partition, sizeof(test_partition), "%ss%d", bsd_path, index); - fd =3D qemu_open(test_partition, O_RDONLY | O_BINARY | O_LARGEFILE= ); + fd =3D qemu_open_old(test_partition, O_RDONLY | O_BINARY | O_LARGE= FILE); if (fd >=3D 0) { partition_found =3D true; qemu_close(fd); @@ -3653,7 +3653,7 @@ static int cdrom_probe_device(const char *filename) int prio =3D 0; struct stat st; =20 - fd =3D qemu_open(filename, O_RDONLY | O_NONBLOCK); + fd =3D qemu_open_old(filename, O_RDONLY | O_NONBLOCK); if (fd < 0) { goto out; } @@ -3787,7 +3787,7 @@ static int cdrom_reopen(BlockDriverState *bs) */ if (s->fd >=3D 0) qemu_close(s->fd); - fd =3D qemu_open(bs->filename, s->open_flags, 0644); + fd =3D qemu_open_old(bs->filename, s->open_flags, 0644); if (fd < 0) { s->fd =3D -1; return -EIO; diff --git a/block/file-win32.c b/block/file-win32.c index ab69bd811a..8c1845830e 100644 --- a/block/file-win32.c +++ b/block/file-win32.c @@ -576,8 +576,9 @@ static int raw_co_create(BlockdevCreateOptions *options= , Error **errp) return -EINVAL; } =20 - fd =3D qemu_open(file_opts->filename, O_WRONLY | O_CREAT | O_TRUNC | O= _BINARY, - 0644); + fd =3D qemu_open_old(file_opts->filename, + O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, + 0644); if (fd < 0) { error_setg_errno(errp, errno, "Could not create file"); return -EIO; diff --git a/block/vvfat.c b/block/vvfat.c index 36b53c8757..5abb90e7c7 100644 --- a/block/vvfat.c +++ b/block/vvfat.c @@ -1352,7 +1352,8 @@ static int open_file(BDRVVVFATState* s,mapping_t* map= ping) if(!s->current_mapping || strcmp(s->current_mapping->path,mapping->path)) { /* open file */ - int fd =3D qemu_open(mapping->path, O_RDONLY | O_BINARY | O_LARGEF= ILE); + int fd =3D qemu_open_old(mapping->path, + O_RDONLY | O_BINARY | O_LARGEFILE); if(fd<0) return -1; vvfat_close_current_file(s); @@ -2513,7 +2514,7 @@ static int commit_one_file(BDRVVVFATState* s, for (i =3D s->cluster_size; i < offset; i +=3D s->cluster_size) c =3D modified_fat_get(s, c); =20 - fd =3D qemu_open(mapping->path, O_RDWR | O_CREAT | O_BINARY, 0666); + fd =3D qemu_open_old(mapping->path, O_RDWR | O_CREAT | O_BINARY, 0666); if (fd < 0) { fprintf(stderr, "Could not open %s... (%s, %d)\n", mapping->path, strerror(errno), errno); diff --git a/chardev/char-fd.c b/chardev/char-fd.c index c2d8101106..1cd62f2779 100644 --- a/chardev/char-fd.c +++ b/chardev/char-fd.c @@ -119,7 +119,7 @@ int qmp_chardev_open_file_source(char *src, int flags, = Error **errp) { int fd =3D -1; =20 - TFR(fd =3D qemu_open(src, flags, 0666)); + TFR(fd =3D qemu_open_old(src, flags, 0666)); if (fd =3D=3D -1) { error_setg_file_open(errp, errno, src); } diff --git a/chardev/char-pipe.c b/chardev/char-pipe.c index fd12c9e63b..7eca5d9a56 100644 --- a/chardev/char-pipe.c +++ b/chardev/char-pipe.c @@ -132,8 +132,8 @@ static void qemu_chr_open_pipe(Chardev *chr, =20 filename_in =3D g_strdup_printf("%s.in", filename); filename_out =3D g_strdup_printf("%s.out", filename); - TFR(fd_in =3D qemu_open(filename_in, O_RDWR | O_BINARY)); - TFR(fd_out =3D qemu_open(filename_out, O_RDWR | O_BINARY)); + TFR(fd_in =3D qemu_open_old(filename_in, O_RDWR | O_BINARY)); + TFR(fd_out =3D qemu_open_old(filename_out, O_RDWR | O_BINARY)); g_free(filename_in); g_free(filename_out); if (fd_in < 0 || fd_out < 0) { @@ -143,7 +143,7 @@ static void qemu_chr_open_pipe(Chardev *chr, if (fd_out >=3D 0) { close(fd_out); } - TFR(fd_in =3D fd_out =3D qemu_open(filename, O_RDWR | O_BINARY)); + TFR(fd_in =3D fd_out =3D qemu_open_old(filename, O_RDWR | O_BINARY= )); if (fd_in < 0) { error_setg_file_open(errp, errno, filename); return; diff --git a/chardev/char.c b/chardev/char.c index 77e7ec814f..6b85099c03 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -235,7 +235,7 @@ static void qemu_char_open(Chardev *chr, ChardevBackend= *backend, } else { flags |=3D O_TRUNC; } - chr->logfd =3D qemu_open(common->logfile, flags, 0666); + chr->logfd =3D qemu_open_old(common->logfile, flags, 0666); if (chr->logfd < 0) { error_setg_errno(errp, errno, "Unable to open logfile %s", diff --git a/dump/dump.c b/dump/dump.c index 383bc7876b..13fda440a4 100644 --- a/dump/dump.c +++ b/dump/dump.c @@ -1994,7 +1994,7 @@ void qmp_dump_guest_memory(bool paging, const char *f= ile, #endif =20 if (strstart(file, "file:", &p)) { - fd =3D qemu_open(p, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, S_IRU= SR); + fd =3D qemu_open_old(p, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, S= _IRUSR); if (fd < 0) { error_setg_file_open(errp, errno, p); return; diff --git a/hw/s390x/s390-skeys.c b/hw/s390x/s390-skeys.c index db2f49cb27..5cc559fe4c 100644 --- a/hw/s390x/s390-skeys.c +++ b/hw/s390x/s390-skeys.c @@ -125,7 +125,7 @@ void qmp_dump_skeys(const char *filename, Error **errp) return; } =20 - fd =3D qemu_open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0600); + fd =3D qemu_open_old(filename, O_WRONLY | O_CREAT | O_TRUNC, 0600); if (fd < 0) { error_setg_file_open(errp, errno, filename); return; diff --git a/hw/usb/host-libusb.c b/hw/usb/host-libusb.c index c474551d84..14dd4de684 100644 --- a/hw/usb/host-libusb.c +++ b/hw/usb/host-libusb.c @@ -1111,7 +1111,7 @@ static void usb_host_realize(USBDevice *udev, Error *= *errp) if (s->hostdevice) { int fd; s->needs_autoscan =3D false; - fd =3D qemu_open(s->hostdevice, O_RDWR); + fd =3D qemu_open_old(s->hostdevice, O_RDWR); if (fd < 0) { error_setg_errno(errp, errno, "failed to open %s", s->hostdevi= ce); return; diff --git a/hw/vfio/common.c b/hw/vfio/common.c index 33357140b8..13471ae294 100644 --- a/hw/vfio/common.c +++ b/hw/vfio/common.c @@ -1254,7 +1254,7 @@ static int vfio_connect_container(VFIOGroup *group, A= ddressSpace *as, } } =20 - fd =3D qemu_open("/dev/vfio/vfio", O_RDWR); + fd =3D qemu_open_old("/dev/vfio/vfio", O_RDWR); if (fd < 0) { error_setg_errno(errp, errno, "failed to open /dev/vfio/vfio"); ret =3D -errno; @@ -1479,7 +1479,7 @@ VFIOGroup *vfio_get_group(int groupid, AddressSpace *= as, Error **errp) group =3D g_malloc0(sizeof(*group)); =20 snprintf(path, sizeof(path), "/dev/vfio/%d", groupid); - group->fd =3D qemu_open(path, O_RDWR); + group->fd =3D qemu_open_old(path, O_RDWR); if (group->fd < 0) { error_setg_errno(errp, errno, "failed to open %s", path); goto free_group_exit; diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h index 20872e793e..18333e9006 100644 --- a/include/qemu/osdep.h +++ b/include/qemu/osdep.h @@ -497,7 +497,7 @@ int qemu_madvise(void *addr, size_t len, int advice); int qemu_mprotect_rwx(void *addr, size_t size); int qemu_mprotect_none(void *addr, size_t size); =20 -int qemu_open(const char *name, int flags, ...); +int qemu_open_old(const char *name, int flags, ...); int qemu_close(int fd); int qemu_unlink(const char *name); #ifndef _WIN32 diff --git a/io/channel-file.c b/io/channel-file.c index dac21f6012..2ed3b75e8b 100644 --- a/io/channel-file.c +++ b/io/channel-file.c @@ -51,7 +51,7 @@ qio_channel_file_new_path(const char *path, =20 ioc =3D QIO_CHANNEL_FILE(object_new(TYPE_QIO_CHANNEL_FILE)); =20 - ioc->fd =3D qemu_open(path, flags, mode); + ioc->fd =3D qemu_open_old(path, flags, mode); if (ioc->fd < 0) { object_unref(OBJECT(ioc)); error_setg_errno(errp, errno, diff --git a/net/vhost-vdpa.c b/net/vhost-vdpa.c index bc0e0d2d35..e2b3ba85bf 100644 --- a/net/vhost-vdpa.c +++ b/net/vhost-vdpa.c @@ -184,7 +184,7 @@ static int net_vhost_vdpa_init(NetClientState *peer, co= nst char *device, snprintf(nc->info_str, sizeof(nc->info_str), TYPE_VHOST_VDPA); nc->queue_index =3D 0; s =3D DO_UPCAST(VhostVDPAState, nc, nc); - vdpa_device_fd =3D qemu_open(vhostdev, O_RDWR); + vdpa_device_fd =3D qemu_open_old(vhostdev, O_RDWR); if (vdpa_device_fd =3D=3D -1) { return -errno; } diff --git a/os-posix.c b/os-posix.c index 3572db3f44..1b927c7c04 100644 --- a/os-posix.c +++ b/os-posix.c @@ -297,7 +297,7 @@ void os_setup_post(void) error_report("not able to chdir to /: %s", strerror(errno)); exit(1); } - TFR(fd =3D qemu_open("/dev/null", O_RDWR)); + TFR(fd =3D qemu_open_old("/dev/null", O_RDWR)); if (fd =3D=3D -1) { exit(1); } diff --git a/qga/channel-posix.c b/qga/channel-posix.c index 8fc205ad21..0373975360 100644 --- a/qga/channel-posix.c +++ b/qga/channel-posix.c @@ -127,7 +127,7 @@ static gboolean ga_channel_open(GAChannel *c, const gch= ar *path, switch (c->method) { case GA_CHANNEL_VIRTIO_SERIAL: { assert(fd < 0); - fd =3D qemu_open(path, O_RDWR | O_NONBLOCK + fd =3D qemu_open_old(path, O_RDWR | O_NONBLOCK #ifndef CONFIG_SOLARIS | O_ASYNC #endif @@ -157,7 +157,7 @@ static gboolean ga_channel_open(GAChannel *c, const gch= ar *path, struct termios tio; =20 assert(fd < 0); - fd =3D qemu_open(path, O_RDWR | O_NOCTTY | O_NONBLOCK); + fd =3D qemu_open_old(path, O_RDWR | O_NOCTTY | O_NONBLOCK); if (fd =3D=3D -1) { g_critical("error opening channel: %s", strerror(errno)); return false; diff --git a/qga/commands-posix.c b/qga/commands-posix.c index 1a62a3a70d..ffe0d24bf3 100644 --- a/qga/commands-posix.c +++ b/qga/commands-posix.c @@ -1304,7 +1304,7 @@ int64_t qmp_guest_fsfreeze_freeze_list(bool has_mount= points, } } =20 - fd =3D qemu_open(mount->dirname, O_RDONLY); + fd =3D qemu_open_old(mount->dirname, O_RDONLY); if (fd =3D=3D -1) { error_setg_errno(errp, errno, "failed to open %s", mount->dirn= ame); goto error; @@ -1371,7 +1371,7 @@ int64_t qmp_guest_fsfreeze_thaw(Error **errp) =20 QTAILQ_FOREACH(mount, &mounts, next) { logged =3D false; - fd =3D qemu_open(mount->dirname, O_RDONLY); + fd =3D qemu_open_old(mount->dirname, O_RDONLY); if (fd =3D=3D -1) { continue; } @@ -1461,7 +1461,7 @@ qmp_guest_fstrim(bool has_minimum, int64_t minimum, E= rror **errp) list->next =3D response->paths; response->paths =3D list; =20 - fd =3D qemu_open(mount->dirname, O_RDONLY); + fd =3D qemu_open_old(mount->dirname, O_RDONLY); if (fd =3D=3D -1) { result->error =3D g_strdup_printf("failed to open: %s", strerror(errno)); diff --git a/target/arm/kvm.c b/target/arm/kvm.c index 8bb7318378..f944bfa0dc 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -71,7 +71,7 @@ bool kvm_arm_create_scratch_host_vcpu(const uint32_t *cpu= s_to_try, { int ret =3D 0, kvmfd =3D -1, vmfd =3D -1, cpufd =3D -1; =20 - kvmfd =3D qemu_open("/dev/kvm", O_RDWR); + kvmfd =3D qemu_open_old("/dev/kvm", O_RDWR); if (kvmfd < 0) { goto err; } diff --git a/ui/console.c b/ui/console.c index 0579be792f..02eca16bd7 100644 --- a/ui/console.c +++ b/ui/console.c @@ -372,7 +372,7 @@ void qmp_screendump(const char *filename, bool has_devi= ce, const char *device, return; } =20 - fd =3D qemu_open(filename, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, 06= 66); + fd =3D qemu_open_old(filename, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY= , 0666); if (fd =3D=3D -1) { error_setg(errp, "failed to open file '%s': %s", filename, strerror(errno)); diff --git a/util/osdep.c b/util/osdep.c index 4829c07ff6..9df1b6adec 100644 --- a/util/osdep.c +++ b/util/osdep.c @@ -282,7 +282,7 @@ int qemu_lock_fd_test(int fd, int64_t start, int64_t le= n, bool exclusive) /* * Opens a file with FD_CLOEXEC set */ -int qemu_open(const char *name, int flags, ...) +int qemu_open_old(const char *name, int flags, ...) { int ret; int mode =3D 0; diff --git a/util/oslib-posix.c b/util/oslib-posix.c index ad8001a4ad..f5f676f079 100644 --- a/util/oslib-posix.c +++ b/util/oslib-posix.c @@ -125,7 +125,7 @@ bool qemu_write_pidfile(const char *path, Error **errp) .l_len =3D 0, }; =20 - fd =3D qemu_open(path, O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR); + fd =3D qemu_open_old(path, O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR); if (fd =3D=3D -1) { error_setg_errno(errp, errno, "Cannot open pid file"); return false; --=20 2.26.2 From nobody Fri May 17 03:12:45 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1598030538; cv=none; d=zohomail.com; s=zohoarc; b=nWm6dxc+Ez+TCPLfyB9TvOZS1ePQ0+9Phx9Z0eID1d0IwTToZAHYijJTferwnYuepVc6v2ekVQKtC/CjimD60PrDnrtAyWUQjVa6U/cFr0NS7LWJ030A3Tfn7BhhvWouVSRMRzbVb5xAJIDOcw7tVzVJ6elpyLlYLUnkdZmRCdE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598030538; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=4L5xY7hnZTbpnE4UWtkZJDAbXGSq8u3Zb3Rzq8nKXhU=; b=KVDDksymtHtw9SYCK7LBR9Xg9WBfcwIIsLlE0D1WREyc5KLraJkL7r6CTXY20uLfLGxmdy7HI6Rb29u1YQTdcMk2aXkzPunNeh10BwsFVAW984+6JzVI/GgkuQVnlLltA4dZArs2VFP9tULtiAvVdxtQ8EbyW5j9uehKll6sgB0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598030538523449.7682266888047; Fri, 21 Aug 2020 10:22:18 -0700 (PDT) Received: from localhost ([::1]:51784 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k9Ak4-0001vY-F6 for importer@patchew.org; Fri, 21 Aug 2020 13:22:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:54312) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k9AjA-0000Sf-0s for qemu-devel@nongnu.org; Fri, 21 Aug 2020 13:21:20 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:32834) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1k9Aj7-0008Of-HQ for qemu-devel@nongnu.org; Fri, 21 Aug 2020 13:21:19 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-473-tmEXOINWOsSHHg4TN0E0Ew-1; Fri, 21 Aug 2020 13:21:14 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 04D1651B7; Fri, 21 Aug 2020 17:21:14 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.36.110.21]) by smtp.corp.redhat.com (Postfix) with ESMTP id F384160CD0; Fri, 21 Aug 2020 17:21:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1598030476; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=4L5xY7hnZTbpnE4UWtkZJDAbXGSq8u3Zb3Rzq8nKXhU=; b=IJYu9cU4yXt5gxgmEx7Wbx2WRkW3p7xP9C2+cchA4OGH34IutBVaEAJd9UDVrHCtt6mtWz GvL+wPQBF7pO/Qz68Y//NhmcO9GEE/9Sa4EyoWZE6SFGCylO7CsZZwyGw4mwe1uydmVhZZ kJIQPzAjAaNrK2sEAVszEfmNZWTd+20= X-MC-Unique: tmEXOINWOsSHHg4TN0E0Ew-1 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH v4 2/6] util: refactor qemu_open_old to split off variadic args handling Date: Fri, 21 Aug 2020 18:21:01 +0100 Message-Id: <20200821172105.608752-3-berrange@redhat.com> In-Reply-To: <20200821172105.608752-1-berrange@redhat.com> References: <20200821172105.608752-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=berrange@redhat.com X-Mimecast-Spam-Score: 0.001 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/21 04:26:32 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -40 X-Spam_score: -4.1 X-Spam_bar: ---- X-Spam_report: (-4.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=-1, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , qemu-block@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Markus Armbruster , Max Reitz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) This simple refactoring prepares for future patches. The variadic args handling is split from the main bulk of the open logic. The duplicated calls to open() are removed in favour of updating the "flags" variable to have O_CLOEXEC. Signed-off-by: Daniel P. Berrang=C3=A9 --- util/osdep.c | 40 +++++++++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/util/osdep.c b/util/osdep.c index 9df1b6adec..9ff92551e7 100644 --- a/util/osdep.c +++ b/util/osdep.c @@ -22,6 +22,7 @@ * THE SOFTWARE. */ #include "qemu/osdep.h" +#include "qapi/error.h" =20 /* Needed early for CONFIG_BSD etc. */ =20 @@ -282,10 +283,10 @@ int qemu_lock_fd_test(int fd, int64_t start, int64_t = len, bool exclusive) /* * Opens a file with FD_CLOEXEC set */ -int qemu_open_old(const char *name, int flags, ...) +static int +qemu_open_internal(const char *name, int flags, mode_t mode) { int ret; - int mode =3D 0; =20 #ifndef _WIN32 const char *fdset_id_str; @@ -323,22 +324,35 @@ int qemu_open_old(const char *name, int flags, ...) } #endif =20 - if (flags & O_CREAT) { - va_list ap; - - va_start(ap, flags); - mode =3D va_arg(ap, int); - va_end(ap); - } - #ifdef O_CLOEXEC - ret =3D open(name, flags | O_CLOEXEC, mode); -#else + flags |=3D O_CLOEXEC; +#endif /* O_CLOEXEC */ + ret =3D open(name, flags, mode); + +#ifndef O_CLOEXEC if (ret >=3D 0) { qemu_set_cloexec(ret); } -#endif +#endif /* ! O_CLOEXEC */ + + return ret; +} + + +int qemu_open_old(const char *name, int flags, ...) +{ + va_list ap; + mode_t mode =3D 0; + int ret; + + va_start(ap, flags); + if (flags & O_CREAT) { + mode =3D va_arg(ap, int); + } + va_end(ap); + + ret =3D qemu_open_internal(name, flags, mode); =20 #ifdef O_DIRECT if (ret =3D=3D -1 && errno =3D=3D EINVAL && (flags & O_DIRECT)) { --=20 2.26.2 From nobody Fri May 17 03:12:45 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1598030605; cv=none; d=zohomail.com; s=zohoarc; b=NllO0skfJhLUDTKjiJr0cg2d7f/ehITWUGF57p8Z0eYpHDPv87utv0U0ezriusCzZ8qWhYJf2vByyk9jOb/uYgnc5IMW4mpy9yEFz79aWxa+NHaMah/HDLOQWN8tAM0nd9hcGBOC/VzWBCFxazvJr+ihdgSd2yh9WT2TpGscFME= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598030605; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=6A4RKJTXZTxGB/kuD2qnGKrmwRYHKnweh7ANeOeMpTk=; b=ejoaadiXMXAiHTKcHy7E5N4rl291eIAWxxQXUWmjkKLTmnpc8t5Waf9ebURPDQ3cgdulzMKy2y/rsOUz82gnq+oQ0485fJJxHaJyNRuN1qJeleW6VjcCN9Z+Zlf0NaZ2d/JNRZEA2qtVJNJjQRx2nohosyt8+YYfqaeZJ/hqfY0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598030605792934.8166867339227; Fri, 21 Aug 2020 10:23:25 -0700 (PDT) Received: from localhost ([::1]:56372 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k9AlA-0003nn-KL for importer@patchew.org; Fri, 21 Aug 2020 13:23:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:54416) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k9AjF-0000fz-Gb for qemu-devel@nongnu.org; Fri, 21 Aug 2020 13:21:25 -0400 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:39910) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1k9AjC-0008Pb-RZ for qemu-devel@nongnu.org; Fri, 21 Aug 2020 13:21:25 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-490-q7prIdohMSm7YlhREj8jtA-1; Fri, 21 Aug 2020 13:21:17 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 6A47B873155; Fri, 21 Aug 2020 17:21:16 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.36.110.21]) by smtp.corp.redhat.com (Postfix) with ESMTP id 5169260CD0; Fri, 21 Aug 2020 17:21:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1598030481; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=6A4RKJTXZTxGB/kuD2qnGKrmwRYHKnweh7ANeOeMpTk=; b=WL2Xba6zRUuosCbNGpgZS5RuBmL8jI8AP1QJNWH2uSBCeZLTlhRZPAeboMbjHfJyCrYyL/ e84MHz2XEAjiZPRs+DR1hB5cWl3B7wnp49/RR1eh+L7Q8+i75TkfHNpREIJhc0sp2h30mX uO/mQI5aRDwNFOXDD1r8GsGbax3EJ28= X-MC-Unique: q7prIdohMSm7YlhREj8jtA-1 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH v4 3/6] util: add Error object for qemu_open_internal error reporting Date: Fri, 21 Aug 2020 18:21:02 +0100 Message-Id: <20200821172105.608752-4-berrange@redhat.com> In-Reply-To: <20200821172105.608752-1-berrange@redhat.com> References: <20200821172105.608752-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=berrange@redhat.com X-Mimecast-Spam-Score: 0.002 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=63.128.21.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/21 02:43:55 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -40 X-Spam_score: -4.1 X-Spam_bar: ---- X-Spam_report: (-4.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=-1, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , qemu-block@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Markus Armbruster , Max Reitz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Instead of relying on the limited information from errno, we can now also provide detailed error messages. Signed-off-by: Daniel P. Berrang=C3=A9 --- util/osdep.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/util/osdep.c b/util/osdep.c index 9ff92551e7..9c7118d3cb 100644 --- a/util/osdep.c +++ b/util/osdep.c @@ -284,7 +284,7 @@ int qemu_lock_fd_test(int fd, int64_t start, int64_t le= n, bool exclusive) * Opens a file with FD_CLOEXEC set */ static int -qemu_open_internal(const char *name, int flags, mode_t mode) +qemu_open_internal(const char *name, int flags, mode_t mode, Error **errp) { int ret; =20 @@ -298,24 +298,31 @@ qemu_open_internal(const char *name, int flags, mode_= t mode) =20 fdset_id =3D qemu_parse_fdset(fdset_id_str); if (fdset_id =3D=3D -1) { + error_setg(errp, "Could not parse fdset %s", name); errno =3D EINVAL; return -1; } =20 fd =3D monitor_fdset_get_fd(fdset_id, flags); if (fd < 0) { + error_setg_errno(errp, -fd, "Could not acquire FD for %s flags= %x", + name, flags); errno =3D -fd; return -1; } =20 dupfd =3D qemu_dup_flags(fd, flags); if (dupfd =3D=3D -1) { + error_setg_errno(errp, errno, "Could not dup FD for %s flags %= x", + name, flags); return -1; } =20 ret =3D monitor_fdset_dup_fd_add(fdset_id, dupfd); if (ret =3D=3D -1) { close(dupfd); + error_setg(errp, "Could not save FD for %s flags %x", + name, flags); errno =3D EINVAL; return -1; } @@ -336,6 +343,16 @@ qemu_open_internal(const char *name, int flags, mode_t= mode) } #endif /* ! O_CLOEXEC */ =20 + if (ret =3D=3D -1) { + const char *action =3D "open"; + if (flags & O_CREAT) { + action =3D "create"; + } + error_setg_errno(errp, errno, "Could not %s '%s' flags 0x%x", + action, name, flags); + } + + return ret; } =20 @@ -352,7 +369,7 @@ int qemu_open_old(const char *name, int flags, ...) } va_end(ap); =20 - ret =3D qemu_open_internal(name, flags, mode); + ret =3D qemu_open_internal(name, flags, mode, NULL); =20 #ifdef O_DIRECT if (ret =3D=3D -1 && errno =3D=3D EINVAL && (flags & O_DIRECT)) { --=20 2.26.2 From nobody Fri May 17 03:12:45 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1598030762; cv=none; d=zohomail.com; s=zohoarc; b=WWNsQUvd8oKeA2/oCvCCm7iH0yyJpY6Ysf9ZMhld5TVAQvqApEIyjgeq9gTniwZ6aVPZ2vo4U/R75ncdLM1Scpfid2u5eMNfCP9fgOKpWxPxFW+6EJI1DEpFCSDUP3J5jf8onvksYcMddlcH+gvOEfjSkflggIqB4RyAp7fyEwg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598030762; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=25DfPV+B9U+ja5hn8kQuVsOtB+UX5eUec8epW7TjHTI=; b=QBLpvZJbO3yNFL+HPxnJDZJAm2Yau6P66w528dlsh1iT429QUBa5vzt8l7jm99TypOvBg9ggo9E/QiLcc6oDxt+O8jn+4If+Y8jVa01AG4eJJ+9Bi3LKvDdBI95qESa4lJgE1ptfqRUT821klMYedBNpMyZbkqwYbAxOtPGUN7M= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598030762239713.9719810593394; Fri, 21 Aug 2020 10:26:02 -0700 (PDT) Received: from localhost ([::1]:35936 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k9Anh-0007Ht-1n for importer@patchew.org; Fri, 21 Aug 2020 13:26:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:54474) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k9AjK-0000tb-55 for qemu-devel@nongnu.org; Fri, 21 Aug 2020 13:21:30 -0400 Received: from us-smtp-delivery-1.mimecast.com ([207.211.31.120]:21313 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1k9AjI-0008Qn-Ep for qemu-devel@nongnu.org; Fri, 21 Aug 2020 13:21:29 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-89--1zsK2SbPf6pGxiabSSNGA-1; Fri, 21 Aug 2020 13:21:20 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 20E9051B7; Fri, 21 Aug 2020 17:21:19 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.36.110.21]) by smtp.corp.redhat.com (Postfix) with ESMTP id B890C60CD0; Fri, 21 Aug 2020 17:21:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1598030487; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=25DfPV+B9U+ja5hn8kQuVsOtB+UX5eUec8epW7TjHTI=; b=My8ES9Jfy7iA0nG3tyYSgIC7RFwWcwcN1W/iQAxeaf54RbJnFcKez7aUQSto9m+wh7w4hs bgxmY+cAuGZnGfmvndb/lAPTgM6NgnB+yPQXjuBfIL+1rXXmjbws594Yq1y7BEf3QiUgbh QgX3ySN0h8dfZu2sTWraLvU0fA1xFZ8= X-MC-Unique: -1zsK2SbPf6pGxiabSSNGA-1 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH v4 4/6] util: introduce qemu_open and qemu_create with error reporting Date: Fri, 21 Aug 2020 18:21:03 +0100 Message-Id: <20200821172105.608752-5-berrange@redhat.com> In-Reply-To: <20200821172105.608752-1-berrange@redhat.com> References: <20200821172105.608752-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=berrange@redhat.com X-Mimecast-Spam-Score: 0.001 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=207.211.31.120; envelope-from=berrange@redhat.com; helo=us-smtp-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/21 04:55:47 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -40 X-Spam_score: -4.1 X-Spam_bar: ---- X-Spam_report: (-4.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , qemu-block@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Markus Armbruster , Max Reitz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) qemu_open_old() works like open(): set errno and return -1 on failure. It has even more failure modes, though. Reporting the error clearly to users is basically impossible for many of them. Our standard cure for "errno is too coarse" is the Error object. Introduce two new helper methods: int qemu_open(const char *name, int flags, Error **errp); int qemu_create(const char *name, int flags, mode_t mode, Error **errp); Note that with this design we no longer require or even accept the O_CREAT flag. Avoiding overloading the two distinct operations means we can avoid variable arguments which would prevent 'errp' from being the last argument. It also gives us a guarantee that the 'mode' is given when creating files, avoiding a latent security bug. Signed-off-by: Daniel P. Berrang=C3=A9 Reviewed-by: Markus Armbruster --- include/qemu/osdep.h | 6 ++++++ util/osdep.c | 21 +++++++++++++++++---- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h index 18333e9006..13a821845b 100644 --- a/include/qemu/osdep.h +++ b/include/qemu/osdep.h @@ -497,7 +497,13 @@ int qemu_madvise(void *addr, size_t len, int advice); int qemu_mprotect_rwx(void *addr, size_t size); int qemu_mprotect_none(void *addr, size_t size); =20 +/* + * Don't introduce new usage of this function, prefer the following + * qemu_open/qemu_create that take an "Error **errp" + */ int qemu_open_old(const char *name, int flags, ...); +int qemu_open(const char *name, int flags, Error **errp); +int qemu_create(const char *name, int flags, mode_t mode, Error **errp); int qemu_close(int fd); int qemu_unlink(const char *name); #ifndef _WIN32 diff --git a/util/osdep.c b/util/osdep.c index 9c7118d3cb..a4956fbf6b 100644 --- a/util/osdep.c +++ b/util/osdep.c @@ -344,10 +344,7 @@ qemu_open_internal(const char *name, int flags, mode_t= mode, Error **errp) #endif /* ! O_CLOEXEC */ =20 if (ret =3D=3D -1) { - const char *action =3D "open"; - if (flags & O_CREAT) { - action =3D "create"; - } + const char *action =3D flags & O_CREAT ? "create" : "open"; error_setg_errno(errp, errno, "Could not %s '%s' flags 0x%x", action, name, flags); } @@ -357,6 +354,22 @@ qemu_open_internal(const char *name, int flags, mode_t= mode, Error **errp) } =20 =20 +int qemu_open(const char *name, int flags, Error **errp) +{ + assert(!(flags & O_CREAT)); + + return qemu_open_internal(name, flags, 0, errp); +} + + +int qemu_create(const char *name, int flags, mode_t mode, Error **errp) +{ + assert(!(flags & O_CREAT)); + + return qemu_open_internal(name, flags | O_CREAT, mode, errp); +} + + int qemu_open_old(const char *name, int flags, ...) { va_list ap; --=20 2.26.2 From nobody Fri May 17 03:12:45 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1598030686; cv=none; d=zohomail.com; s=zohoarc; b=aNS8eju7nX0V9WHGNLKVOaNvfTi59z2OoxN/9KXNpyXQqcOQRb3027CzHs4DgznYOhrAtfC3c1a4eQnTZivwPZCUAIQDk3NLVTaotP4ClQ1/AiEvfZezIUrfvubQTLqHKf03tpAVNTKG6Q+Royyj7r2/g6Ubis8RuLXEr2TZw6s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598030686; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=/QuZfkY3yvVKyRzZi+LIvn6MXCpAkfpRrgdaJOhA/vE=; b=E31hUFXmAbKtmoLQQZd5XllLaRTRL5weO/UZ5NNn5zfiO6PSbbRGaPoeEZj3OmtDtVaeitihi3hBEpqc2nU3DQBvTOlwEkDZjIg6zpiaqr0StMj0axvXAwKjheZV8qAUVjPqxTQUfS0YLx+rksYOGf1x1ctdnhjmBaVLh5aoSdA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598030686312380.2147041351245; Fri, 21 Aug 2020 10:24:46 -0700 (PDT) Received: from localhost ([::1]:60902 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k9AmS-0005gL-Tk for importer@patchew.org; Fri, 21 Aug 2020 13:24:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:54446) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k9AjI-0000oA-3J for qemu-devel@nongnu.org; Fri, 21 Aug 2020 13:21:28 -0400 Received: from us-smtp-1.mimecast.com ([207.211.31.81]:52494 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1k9AjG-0008QR-F8 for qemu-devel@nongnu.org; Fri, 21 Aug 2020 13:21:27 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-245-j13wBqvsMrWuk0WCPZ2G-w-1; Fri, 21 Aug 2020 13:21:22 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 8036C1074655; Fri, 21 Aug 2020 17:21:21 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.36.110.21]) by smtp.corp.redhat.com (Postfix) with ESMTP id 8371560CD0; Fri, 21 Aug 2020 17:21:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1598030485; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=/QuZfkY3yvVKyRzZi+LIvn6MXCpAkfpRrgdaJOhA/vE=; b=BgvGLgtb/febPY+2YUeOXA/IN6vxpHQAeju/cmDWLgkYtsciHsDlSHdcB8cNqpOp9Pysec zrt3byj8o2nof6O5De/+nAOLLZ4JI6jf4US1ahIuF41TlIOGAwG0lmv2dpxUyG99czIoDn nFrq+Xe/ytuE0UPrRgFFO3XA1RpTM4A= X-MC-Unique: j13wBqvsMrWuk0WCPZ2G-w-1 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH v4 5/6] util: give a specific error message when O_DIRECT doesn't work Date: Fri, 21 Aug 2020 18:21:04 +0100 Message-Id: <20200821172105.608752-6-berrange@redhat.com> In-Reply-To: <20200821172105.608752-1-berrange@redhat.com> References: <20200821172105.608752-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=berrange@redhat.com X-Mimecast-Spam-Score: 0.001 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=207.211.31.81; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/21 05:15:56 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -40 X-Spam_score: -4.1 X-Spam_bar: ---- X-Spam_report: (-4.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , qemu-block@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Markus Armbruster , Max Reitz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) A common error scenario is to tell QEMU to use O_DIRECT in combination with a filesystem that doesn't support it. To aid users to diagnosing their mistake we want to provide a clear error message when this happens. Reviewed-by: Eric Blake Signed-off-by: Daniel P. Berrang=C3=A9 Reviewed-by: Markus Armbruster --- util/osdep.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/util/osdep.c b/util/osdep.c index a4956fbf6b..6c24985f7a 100644 --- a/util/osdep.c +++ b/util/osdep.c @@ -345,6 +345,19 @@ qemu_open_internal(const char *name, int flags, mode_t= mode, Error **errp) =20 if (ret =3D=3D -1) { const char *action =3D flags & O_CREAT ? "create" : "open"; +#ifdef O_DIRECT + if (errno =3D=3D EINVAL && (flags & O_DIRECT)) { + ret =3D open(name, flags & ~O_DIRECT, mode); + if (ret !=3D -1) { + close(ret); + error_setg(errp, "Could not %s '%s' flags 0x%x: " + "filesystem does not support O_DIRECT", + action, name, flags); + errno =3D EINVAL; /* close() clobbered earlier errno */ + return -1; + } + } +#endif /* O_DIRECT */ error_setg_errno(errp, errno, "Could not %s '%s' flags 0x%x", action, name, flags); } --=20 2.26.2 From nobody Fri May 17 03:12:45 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1598030824; cv=none; d=zohomail.com; s=zohoarc; b=R5Yor47K8Tr0Y7VjlvqWFbJAkyQaI8FWD4SUepxHBEv3WCGBx2/A1ke3CWh0aYtnQt7Deqt9VSXG9DAjmHUFgphbMvzMAm1GuNp4uE2EfGTUOlK4G+nC3HblOQxw/+ge6Y0rJVMS9QPjJwz7ea2ZkItHV+oiFokCn/67FYvePtA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598030824; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=EzZ16f/7r+EFjW0GrbgNn/04vYD6FnRftoTLrfPmc20=; b=LbskIU15CuL3vOTmaK0cmYrnGnQTKtiqPlG7+4m53eOc6iwXSKu21EP/HKmey6RxX7NKqJ3caQa/RrkEWPI8b35uHe+D57PyNNxWKxuxO65Ff0VVbmZx6OATUVblG3ja1Oy+Xyp6JchzaznhdX1aijt2hraJqJTkR6uPQht9G8M= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1598030824511188.8263097272976; Fri, 21 Aug 2020 10:27:04 -0700 (PDT) Received: from localhost ([::1]:38062 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k9Aoh-000074-4h for importer@patchew.org; Fri, 21 Aug 2020 13:27:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:54522) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k9AjN-00011q-2N for qemu-devel@nongnu.org; Fri, 21 Aug 2020 13:21:33 -0400 Received: from us-smtp-delivery-1.mimecast.com ([205.139.110.120]:59510 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1k9AjK-0008RC-Ad for qemu-devel@nongnu.org; Fri, 21 Aug 2020 13:21:32 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-318-7-ypoomHNLeLWzXNNY0zUw-1; Fri, 21 Aug 2020 13:21:27 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id C81D5801AB0; Fri, 21 Aug 2020 17:21:26 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.36.110.21]) by smtp.corp.redhat.com (Postfix) with ESMTP id DAE2160CD0; Fri, 21 Aug 2020 17:21:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1598030489; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=EzZ16f/7r+EFjW0GrbgNn/04vYD6FnRftoTLrfPmc20=; b=df2FS4gromjcVmAOgct+V8c4GJnOMaXg00aNHTtjSApN5p0FXKwWt3dVvDX8ZAfWfCH2oM Kbe3hRjIyU8Jc3WHJBNE6rZbRkr2gMjDO1JHcADglaQQyWrr+/1kqvk02Jc/m/3qbA6yNG Ton+qTSSassoP73TB+83Dgsm2TK0kLM= X-MC-Unique: 7-ypoomHNLeLWzXNNY0zUw-1 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH v4 6/6] block/fileb: switch to use qemu_open/qemu_create for improved errors Date: Fri, 21 Aug 2020 18:21:05 +0100 Message-Id: <20200821172105.608752-7-berrange@redhat.com> In-Reply-To: <20200821172105.608752-1-berrange@redhat.com> References: <20200821172105.608752-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=berrange@redhat.com X-Mimecast-Spam-Score: 0.002 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=205.139.110.120; envelope-from=berrange@redhat.com; helo=us-smtp-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/20 23:41:39 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -40 X-Spam_score: -4.1 X-Spam_bar: ---- X-Spam_report: (-4.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , qemu-block@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Markus Armbruster , Max Reitz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Currently at startup if using cache=3Dnone on a filesystem lacking O_DIRECT such as tmpfs, at startup QEMU prints qemu-system-x86_64: -drive file=3D/tmp/foo.img,cache=3Dnone: file system ma= y not support O_DIRECT qemu-system-x86_64: -drive file=3D/tmp/foo.img,cache=3Dnone: 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=3D/tmp/foo.img,cache=3Dnone: Unable to open= '/tmp/foo.img' flags 0x4000: 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' flags 0x4002: filesystem does n= ot support O_DIRECT" } Reviewed-by: Eric Blake Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Daniel P. Berrang=C3=A9 Reviewed-by: Markus Armbruster --- block/file-posix.c | 18 +++++++----------- block/file-win32.c | 6 ++---- tests/qemu-iotests/051.out | 4 ++-- tests/qemu-iotests/051.pc.out | 4 ++-- tests/qemu-iotests/061.out | 2 +- tests/qemu-iotests/069.out | 2 +- tests/qemu-iotests/082.out | 4 ++-- tests/qemu-iotests/111.out | 2 +- tests/qemu-iotests/226.out | 6 +++--- tests/qemu-iotests/232.out | 12 ++++++------ tests/qemu-iotests/244.out | 6 +++--- 11 files changed, 30 insertions(+), 36 deletions(-) diff --git a/block/file-posix.c b/block/file-posix.c index bac2566f10..c63926d592 100644 --- a/block/file-posix.c +++ b/block/file-posix.c @@ -630,11 +630,10 @@ static int raw_open_common(BlockDriverState *bs, QDic= t *options, raw_parse_flags(bdrv_flags, &s->open_flags, false); =20 s->fd =3D -1; - fd =3D qemu_open_old(filename, s->open_flags, 0644); + fd =3D qemu_open(filename, s->open_flags, errp); ret =3D fd < 0 ? -errno : 0; =20 if (ret < 0) { - error_setg_file_open(errp, -ret, filename); if (ret =3D=3D -EROFS) { ret =3D -EACCES; } @@ -1032,15 +1031,13 @@ static int raw_reconfigure_getfd(BlockDriverState *= bs, int flags, } } =20 - /* If we cannot use fcntl, or fcntl failed, fall back to qemu_open_old= () */ + /* If we cannot use fcntl, or fcntl failed, fall back to qemu_open() */ if (fd =3D=3D -1) { const char *normalized_filename =3D bs->filename; ret =3D raw_normalize_devicepath(&normalized_filename, errp); if (ret >=3D 0) { - assert(!(*open_flags & O_CREAT)); - fd =3D qemu_open_old(normalized_filename, *open_flags); + fd =3D qemu_open(normalized_filename, *open_flags, errp); if (fd =3D=3D -1) { - error_setg_errno(errp, errno, "Could not reopen file"); return -1; } } @@ -2411,10 +2408,9 @@ raw_co_create(BlockdevCreateOptions *options, Error = **errp) } =20 /* Create file */ - fd =3D qemu_open_old(file_opts->filename, O_RDWR | O_CREAT | O_BINARY,= 0644); + fd =3D qemu_create(file_opts->filename, O_RDWR | O_BINARY, 0644, errp); if (fd < 0) { result =3D -errno; - error_setg_errno(errp, -result, "Could not create file"); goto out; } =20 @@ -3335,7 +3331,7 @@ static bool setup_cdrom(char *bsd_path, Error **errp) for (index =3D 0; index < num_of_test_partitions; index++) { snprintf(test_partition, sizeof(test_partition), "%ss%d", bsd_path, index); - fd =3D qemu_open_old(test_partition, O_RDONLY | O_BINARY | O_LARGE= FILE); + fd =3D qemu_open(test_partition, O_RDONLY | O_BINARY | O_LARGEFILE= , NULL); if (fd >=3D 0) { partition_found =3D true; qemu_close(fd); @@ -3653,7 +3649,7 @@ static int cdrom_probe_device(const char *filename) int prio =3D 0; struct stat st; =20 - fd =3D qemu_open_old(filename, O_RDONLY | O_NONBLOCK); + fd =3D qemu_open(filename, O_RDONLY | O_NONBLOCK, NULL); if (fd < 0) { goto out; } @@ -3787,7 +3783,7 @@ static int cdrom_reopen(BlockDriverState *bs) */ if (s->fd >=3D 0) qemu_close(s->fd); - fd =3D qemu_open_old(bs->filename, s->open_flags, 0644); + fd =3D qemu_open(bs->filename, s->open_flags, NULL); if (fd < 0) { s->fd =3D -1; return -EIO; diff --git a/block/file-win32.c b/block/file-win32.c index 8c1845830e..1a31f8a5ba 100644 --- a/block/file-win32.c +++ b/block/file-win32.c @@ -576,11 +576,9 @@ static int raw_co_create(BlockdevCreateOptions *option= s, Error **errp) return -EINVAL; } =20 - fd =3D qemu_open_old(file_opts->filename, - O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, - 0644); + fd =3D 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); diff --git a/tests/qemu-iotests/051.out b/tests/qemu-iotests/051.out index de4771bcb3..242dcfe08d 100644 --- a/tests/qemu-iotests/051.out +++ b/tests/qemu-iotests/051.out @@ -363,7 +363,7 @@ Testing: -drive file=3Dfoo:bar QEMU_PROG: -drive file=3Dfoo:bar: Unknown protocol 'foo' =20 Testing: -drive file.filename=3Dfoo:bar -QEMU_PROG: -drive file.filename=3Dfoo:bar: Could not open 'foo:bar': No su= ch file or directory +QEMU_PROG: -drive file.filename=3Dfoo:bar: Could not open 'foo:bar' flags = 0x08000: No such file or directory =20 Testing: -hda file:TEST_DIR/t.qcow2 QEMU X.Y.Z monitor - type 'help' for more information @@ -374,7 +374,7 @@ QEMU X.Y.Z monitor - type 'help' for more information (qemu) quit =20 Testing: -drive file.filename=3Dfile:TEST_DIR/t.qcow2 -QEMU_PROG: -drive file.filename=3Dfile:TEST_DIR/t.qcow2: Could not open 'f= ile:TEST_DIR/t.qcow2': No such file or directory +QEMU_PROG: -drive file.filename=3Dfile:TEST_DIR/t.qcow2: Could not open 'f= ile:TEST_DIR/t.qcow2' flags 0x80000: No such file or directory =20 =20 =3D=3D=3D Snapshot mode =3D=3D=3D diff --git a/tests/qemu-iotests/051.pc.out b/tests/qemu-iotests/051.pc.out index f707471fb0..4c41b46986 100644 --- a/tests/qemu-iotests/051.pc.out +++ b/tests/qemu-iotests/051.pc.out @@ -463,7 +463,7 @@ Testing: -drive file=3Dfoo:bar QEMU_PROG: -drive file=3Dfoo:bar: Unknown protocol 'foo' =20 Testing: -drive file.filename=3Dfoo:bar -QEMU_PROG: -drive file.filename=3Dfoo:bar: Could not open 'foo:bar': No su= ch file or directory +QEMU_PROG: -drive file.filename=3Dfoo:bar: Could not open 'foo:bar' flags = 0x80000: No such file or directory =20 Testing: -hda file:TEST_DIR/t.qcow2 QEMU X.Y.Z monitor - type 'help' for more information @@ -474,7 +474,7 @@ QEMU X.Y.Z monitor - type 'help' for more information (qemu) quit =20 Testing: -drive file.filename=3Dfile:TEST_DIR/t.qcow2 -QEMU_PROG: -drive file.filename=3Dfile:TEST_DIR/t.qcow2: Could not open 'f= ile:TEST_DIR/t.qcow2': No such file or directory +QEMU_PROG: -drive file.filename=3Dfile:TEST_DIR/t.qcow2: Could not open 'f= ile:TEST_DIR/t.qcow2' flags 0x80000: No such file or directory =20 =20 =3D=3D=3D Snapshot mode =3D=3D=3D diff --git a/tests/qemu-iotests/061.out b/tests/qemu-iotests/061.out index b2d2dfed04..a533b0d416 100644 --- a/tests/qemu-iotests/061.out +++ b/tests/qemu-iotests/061.out @@ -538,7 +538,7 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D671= 08864 qemu-img: data-file can only be set for images that use an external data f= ile =20 Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D67108864 data_file=3DT= EST_DIR/t.IMGFMT.data -qemu-img: Could not open 'TEST_DIR/t.IMGFMT': Could not open 'foo': No suc= h file or directory +qemu-img: Could not open 'TEST_DIR/t.IMGFMT': Could not open 'foo' flags 0= x80000: No such file or directory image: TEST_DIR/t.IMGFMT file format: IMGFMT virtual size: 64 MiB (67108864 bytes) diff --git a/tests/qemu-iotests/069.out b/tests/qemu-iotests/069.out index 126b4d2d51..ffb95c965f 100644 --- a/tests/qemu-iotests/069.out +++ b/tests/qemu-iotests/069.out @@ -4,5 +4,5 @@ QA output created by 069 =20 Formatting 'TEST_DIR/t.IMGFMT.base', fmt=3DIMGFMT size=3D131072 Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D131072 backing_file=3D= TEST_DIR/t.IMGFMT.base backing_fmt=3DIMGFMT -qemu-io: can't open device TEST_DIR/t.IMGFMT: Could not open backing file:= Could not open 'TEST_DIR/t.IMGFMT.base': No such file or directory +qemu-io: can't open device TEST_DIR/t.IMGFMT: Could not open backing file:= Could not open 'TEST_DIR/t.IMGFMT.base' flags 0x80000: No such file or dir= ectory *** done diff --git a/tests/qemu-iotests/082.out b/tests/qemu-iotests/082.out index 1728aff1e0..5a718ac1b5 100644 --- a/tests/qemu-iotests/082.out +++ b/tests/qemu-iotests/082.out @@ -544,10 +544,10 @@ Supported options: size=3D - Virtual disk size =20 Testing: convert -O qcow2 -o backing_fmt=3Dqcow2,backing_file=3DTEST_DIR/t= .qcow2,,help TEST_DIR/t.qcow2 TEST_DIR/t.qcow2.base -qemu-img: Could not open 'TEST_DIR/t.qcow2.base': Could not open backing f= ile: Could not open 'TEST_DIR/t.qcow2,help': No such file or directory +qemu-img: Could not open 'TEST_DIR/t.qcow2.base': Could not open backing f= ile: Could not open 'TEST_DIR/t.qcow2,help' flags 0x80000: No such file or = directory =20 Testing: convert -O qcow2 -o backing_fmt=3Dqcow2,backing_file=3DTEST_DIR/t= .qcow2,,? TEST_DIR/t.qcow2 TEST_DIR/t.qcow2.base -qemu-img: Could not open 'TEST_DIR/t.qcow2.base': Could not open backing f= ile: Could not open 'TEST_DIR/t.qcow2,?': No such file or directory +qemu-img: Could not open 'TEST_DIR/t.qcow2.base': Could not open backing f= ile: Could not open 'TEST_DIR/t.qcow2,?' flags 0x80000: No such file or dir= ectory =20 Testing: convert -O qcow2 -o backing_file=3DTEST_DIR/t.qcow2, -o help TEST= _DIR/t.qcow2 TEST_DIR/t.qcow2.base qemu-img: Invalid option list: backing_file=3DTEST_DIR/t.qcow2, diff --git a/tests/qemu-iotests/111.out b/tests/qemu-iotests/111.out index ba034e5c58..90255ea653 100644 --- a/tests/qemu-iotests/111.out +++ b/tests/qemu-iotests/111.out @@ -1,4 +1,4 @@ QA output created by 111 -qemu-img: TEST_DIR/t.IMGFMT: Could not open 'TEST_DIR/t.IMGFMT.inexistent'= : No such file or directory +qemu-img: TEST_DIR/t.IMGFMT: Could not open 'TEST_DIR/t.IMGFMT.inexistent'= flags 0x80000: No such file or directory Could not open backing image. *** done diff --git a/tests/qemu-iotests/226.out b/tests/qemu-iotests/226.out index 42be973ff2..353fc4c799 100644 --- a/tests/qemu-iotests/226.out +++ b/tests/qemu-iotests/226.out @@ -6,7 +6,7 @@ QA output created by 226 qemu-io: can't open: A regular file was expected by the 'file' driver, but= something else was given qemu-io: warning: Opening a character device as a file using the 'file' dr= iver is deprecated =3D=3D Testing RW =3D=3D -qemu-io: can't open: Could not open 'TEST_DIR/t.IMGFMT': Is a directory +qemu-io: can't open: Could not open 'TEST_DIR/t.IMGFMT' flags 0x80002: Is = a directory qemu-io: warning: Opening a character device as a file using the 'file' dr= iver is deprecated =20 =3D=3D=3D Testing with driver:host_device =3D=3D=3D @@ -14,13 +14,13 @@ qemu-io: warning: Opening a character device as a file = using the 'file' driver i =3D=3D Testing RO =3D=3D qemu-io: can't open: 'host_device' driver expects either a character or bl= ock device =3D=3D Testing RW =3D=3D -qemu-io: can't open: Could not open 'TEST_DIR/t.IMGFMT': Is a directory +qemu-io: can't open: Could not open 'TEST_DIR/t.IMGFMT' flags 0x80002: Is = a directory =20 =3D=3D=3D Testing with driver:host_cdrom =3D=3D=3D =20 =3D=3D Testing RO =3D=3D qemu-io: can't open: 'host_cdrom' driver expects either a character or blo= ck device =3D=3D Testing RW =3D=3D -qemu-io: can't open: Could not open 'TEST_DIR/t.IMGFMT': Is a directory +qemu-io: can't open: Could not open 'TEST_DIR/t.IMGFMT' flags 0x80802: Is = a directory =20 *** done diff --git a/tests/qemu-iotests/232.out b/tests/qemu-iotests/232.out index 3bd1a920af..bfa3f20172 100644 --- a/tests/qemu-iotests/232.out +++ b/tests/qemu-iotests/232.out @@ -21,11 +21,11 @@ NODE_NAME: TEST_DIR/t.IMGFMT (file, read-only) NODE_NAME: TEST_DIR/t.IMGFMT (file, read-only) NODE_NAME: TEST_DIR/t.IMGFMT (file, read-only) =20 -QEMU_PROG: -drive driver=3Dfile,file=3DTEST_DIR/t.IMGFMT,if=3Dnone,read-on= ly=3Doff,auto-read-only=3Doff: Could not open 'TEST_DIR/t.IMGFMT': Permissi= on denied +QEMU_PROG: -drive driver=3Dfile,file=3DTEST_DIR/t.IMGFMT,if=3Dnone,read-on= ly=3Doff,auto-read-only=3Doff: Could not open 'TEST_DIR/t.IMGFMT' flags 0x8= 0002: Permission denied NODE_NAME: TEST_DIR/t.IMGFMT (file) NODE_NAME: TEST_DIR/t.IMGFMT (file) =20 -QEMU_PROG: -drive driver=3Dfile,file=3DTEST_DIR/t.IMGFMT,if=3Dnone,auto-re= ad-only=3Doff: Could not open 'TEST_DIR/t.IMGFMT': Permission denied +QEMU_PROG: -drive driver=3Dfile,file=3DTEST_DIR/t.IMGFMT,if=3Dnone,auto-re= ad-only=3Doff: Could not open 'TEST_DIR/t.IMGFMT' flags 0x80002: Permission= denied NODE_NAME: TEST_DIR/t.IMGFMT (file) NODE_NAME: TEST_DIR/t.IMGFMT (file) =20 @@ -49,11 +49,11 @@ node0: TEST_DIR/t.IMGFMT (file, read-only) node0: TEST_DIR/t.IMGFMT (file, read-only) node0: TEST_DIR/t.IMGFMT (file, read-only) =20 -QEMU_PROG: -blockdev driver=3Dfile,filename=3DTEST_DIR/t.IMGFMT,node-name= =3Dnode0,read-only=3Doff,auto-read-only=3Doff: Could not open 'TEST_DIR/t.I= MGFMT': Permission denied +QEMU_PROG: -blockdev driver=3Dfile,filename=3DTEST_DIR/t.IMGFMT,node-name= =3Dnode0,read-only=3Doff,auto-read-only=3Doff: Could not open 'TEST_DIR/t.I= MGFMT' flags 0x80002: Permission denied node0: TEST_DIR/t.IMGFMT (file) -QEMU_PROG: -blockdev driver=3Dfile,filename=3DTEST_DIR/t.IMGFMT,node-name= =3Dnode0,read-only=3Doff: Could not open 'TEST_DIR/t.IMGFMT': Permission de= nied +QEMU_PROG: -blockdev driver=3Dfile,filename=3DTEST_DIR/t.IMGFMT,node-name= =3Dnode0,read-only=3Doff: Could not open 'TEST_DIR/t.IMGFMT' flags 0x80002:= Permission denied =20 -QEMU_PROG: -blockdev driver=3Dfile,filename=3DTEST_DIR/t.IMGFMT,node-name= =3Dnode0,auto-read-only=3Doff: Could not open 'TEST_DIR/t.IMGFMT': Permissi= on denied +QEMU_PROG: -blockdev driver=3Dfile,filename=3DTEST_DIR/t.IMGFMT,node-name= =3Dnode0,auto-read-only=3Doff: Could not open 'TEST_DIR/t.IMGFMT' flags 0x8= 0002: Permission denied node0: TEST_DIR/t.IMGFMT (file) -QEMU_PROG: -blockdev driver=3Dfile,filename=3DTEST_DIR/t.IMGFMT,node-name= =3Dnode0: Could not open 'TEST_DIR/t.IMGFMT': Permission denied +QEMU_PROG: -blockdev driver=3Dfile,filename=3DTEST_DIR/t.IMGFMT,node-name= =3Dnode0: Could not open 'TEST_DIR/t.IMGFMT' flags 0x80002: Permission deni= ed *** done diff --git a/tests/qemu-iotests/244.out b/tests/qemu-iotests/244.out index dbab7359a9..34daec97f2 100644 --- a/tests/qemu-iotests/244.out +++ b/tests/qemu-iotests/244.out @@ -9,7 +9,7 @@ read 65536/65536 bytes at offset 0 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) read 65536/65536 bytes at offset 0 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) -qemu-io: can't open device TEST_DIR/t.qcow2: Could not open 'inexistent': = No such file or directory +qemu-io: can't open device TEST_DIR/t.qcow2: Could not open 'inexistent' f= lags 0x80002: No such file or directory no file open, try 'help open' =20 Data file required, but without data file name in the image: @@ -17,14 +17,14 @@ qemu-io: can't open device TEST_DIR/t.qcow2: 'data-file= ' is required for this im no file open, try 'help open' read 65536/65536 bytes at offset 0 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) -qemu-io: can't open device TEST_DIR/t.qcow2: Could not open 'inexistent': = No such file or directory +qemu-io: can't open device TEST_DIR/t.qcow2: Could not open 'inexistent' f= lags 0x80002: No such file or directory no file open, try 'help open' =20 Setting data-file for an image with internal data: Formatting 'TEST_DIR/t.IMGFMT', fmt=3DIMGFMT size=3D67108864 qemu-io: can't open device TEST_DIR/t.qcow2: 'data-file' can only be set f= or images with an external data file no file open, try 'help open' -qemu-io: can't open device TEST_DIR/t.qcow2: Could not open 'inexistent': = No such file or directory +qemu-io: can't open device TEST_DIR/t.qcow2: Could not open 'inexistent' f= lags 0x80002: No such file or directory no file open, try 'help open' =20 =3D=3D=3D Conflicting features =3D=3D=3D --=20 2.26.2