All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: Fam Zheng <famz@redhat.com>
Cc: kwolf@redhat.com, qemu-devel@nongnu.org, stefanha@redhat.com,
	mreitz@redhat.com
Subject: Re: [Qemu-devel] [PATCH 08/20] gluster: correctly propagate errors
Date: Mon, 10 Feb 2014 09:27:06 +0100	[thread overview]
Message-ID: <52F88D5A.90601@redhat.com> (raw)
In-Reply-To: <20140210080200.GJ15707@T430.nay.redhat.com>

Il 10/02/2014 09:02, Fam Zheng ha scritto:
> On Sun, 02/09 10:48, Paolo Bonzini wrote:
>> > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>> > ---
>> >  block/gluster.c | 24 +++++++++++++-----------
>> >  1 file changed, 13 insertions(+), 11 deletions(-)
>> >
>> > diff --git a/block/gluster.c b/block/gluster.c
>> > index f9dd37f..bc9c59f 100644
>> > --- a/block/gluster.c
>> > +++ b/block/gluster.c
>> > @@ -175,7 +175,8 @@ out:
>> >      return ret;
>> >  }
>> >
>> > -static struct glfs *qemu_gluster_init(GlusterConf *gconf, const char *filename)
>> > +static struct glfs *qemu_gluster_init(GlusterConf *gconf, const char *filename,
>> > +                                      Error **errp)
>> >  {
>> >      struct glfs *glfs = NULL;
>> >      int ret;
>> > @@ -183,8 +184,8 @@ static struct glfs *qemu_gluster_init(GlusterConf *gconf, const char *filename)
>> >
>> >      ret = qemu_gluster_parseuri(gconf, filename);
>> >      if (ret < 0) {
>> > -        error_report("Usage: file=gluster[+transport]://[server[:port]]/"
>> > -            "volname/image[?socket=...]");
>> > +        error_setg(errp, "Usage: file=gluster[+transport]://[server[:port]]/"
>> > +                   "volname/image[?socket=...]");
>> >          errno = -ret;
>> >          goto out;
>> >      }
>> > @@ -211,9 +212,11 @@ static struct glfs *qemu_gluster_init(GlusterConf *gconf, const char *filename)
>> >
>> >      ret = glfs_init(glfs);
>> >      if (ret) {
>> > -        error_report("Gluster connection failed for server=%s port=%d "
>> > -             "volume=%s image=%s transport=%s", gconf->server, gconf->port,
>> > -             gconf->volname, gconf->image, gconf->transport);
>> > +        error_setg_errno(errp, errno,
>> > +                         "Gluster connection failed for server=%s port=%d "
>> > +                         "volume=%s image=%s transport=%s", gconf->server,
>> > +                         gconf->port, gconf->volname, gconf->image,
>> > +                         gconf->transport);
>> >          goto out;
>> >      }
>> >      return glfs;
>> > @@ -283,15 +286,14 @@ static int qemu_gluster_open(BlockDriverState *bs,  QDict *options,
>> >      opts = qemu_opts_create(&runtime_opts, NULL, 0, &error_abort);
>> >      qemu_opts_absorb_qdict(opts, options, &local_err);
>> >      if (error_is_set(&local_err)) {
>> > -        qerror_report_err(local_err);
>> > -        error_free(local_err);
>> > +        error_propagate(errp, local_err);
>> >          ret = -EINVAL;
>> >          goto out;
>> >      }
>> >
>> >      filename = qemu_opt_get(opts, "filename");
>> >
>> > -    s->glfs = qemu_gluster_init(gconf, filename);
>> > +    s->glfs = qemu_gluster_init(gconf, filename, errp);
>> >      if (!s->glfs) {
>> >          ret = -errno;
>> >          goto out;
>> > @@ -389,9 +391,9 @@ static int qemu_gluster_create(const char *filename,
>> >      int64_t total_size = 0;
>> >      GlusterConf *gconf = g_malloc0(sizeof(GlusterConf));
>> >
>> > -    glfs = qemu_gluster_init(gconf, filename);
>> > +    glfs = qemu_gluster_init(gconf, filename, errp);
>> >      if (!glfs) {
>> > -        ret = -errno;
>> > +        ret = -EINVAL;
> Why dropping -errno here?

Because it is not applicable for the usage error messages.  Anyway 
nothing is lost because the errno is already embedded in the error if 
applicable.  If the Error* is set to non-NULL, the caller of 
drv->bdrv_open ignores the return value except to check that it is <0.

Paolo

  reply	other threads:[~2014-02-10  8:27 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-09  9:48 [Qemu-devel] [PATCH 00/20] Improve bdrv_open error messages Paolo Bonzini
2014-02-09  9:48 ` [Qemu-devel] [PATCH 01/20] nbd: produce a better error if neither host nor port is passed Paolo Bonzini
2014-02-10  7:27   ` Fam Zheng
2014-02-09  9:48 ` [Qemu-devel] [PATCH 02/20] nbd: correctly propagate errors Paolo Bonzini
2014-02-10  7:38   ` Fam Zheng
2014-02-10  8:24     ` Paolo Bonzini
2014-02-10  9:11       ` Fam Zheng
2014-02-09  9:48 ` [Qemu-devel] [PATCH 03/20] nbd: inline tcp_socket_incoming_spec into sole caller Paolo Bonzini
2014-02-10  7:40   ` Fam Zheng
2014-02-09  9:48 ` [Qemu-devel] [PATCH 04/20] nbd: move socket wrappers to qemu-nbd Paolo Bonzini
2014-02-10  7:44   ` Fam Zheng
2014-02-09  9:48 ` [Qemu-devel] [PATCH 05/20] iscsi: fix indentation Paolo Bonzini
2014-02-10  7:48   ` Fam Zheng
2014-02-09  9:48 ` [Qemu-devel] [PATCH 06/20] iscsi: correctly propagate errors in iscsi_open Paolo Bonzini
2014-02-10  7:55   ` Fam Zheng
2014-02-09  9:48 ` [Qemu-devel] [PATCH 07/20] gluster: default scheme to gluster:// and host to localhost Paolo Bonzini
2014-02-10  7:57   ` Fam Zheng
2014-02-09  9:48 ` [Qemu-devel] [PATCH 08/20] gluster: correctly propagate errors Paolo Bonzini
2014-02-10  8:02   ` Fam Zheng
2014-02-10  8:27     ` Paolo Bonzini [this message]
2014-02-10  9:13       ` Fam Zheng
2014-02-09  9:48 ` [Qemu-devel] [PATCH 09/20] cow: " Paolo Bonzini
2014-02-10  8:04   ` Fam Zheng
2014-02-10  8:28     ` Paolo Bonzini
2014-02-09  9:48 ` [Qemu-devel] [PATCH 10/20] curl: " Paolo Bonzini
2014-02-10  8:07   ` Fam Zheng
2014-02-09  9:48 ` [Qemu-devel] [PATCH 11/20] qcow: " Paolo Bonzini
2014-02-10  8:09   ` Fam Zheng
2014-02-10  8:28     ` Paolo Bonzini
2014-02-09  9:48 ` [Qemu-devel] [PATCH 12/20] qed: " Paolo Bonzini
2014-02-10  8:11   ` Fam Zheng
2014-02-09  9:48 ` [Qemu-devel] [PATCH 13/20] vhdx: " Paolo Bonzini
2014-02-10  8:15   ` Fam Zheng
2014-02-09  9:48 ` [Qemu-devel] [PATCH 14/20] vvfat: " Paolo Bonzini
2014-02-10  8:16   ` Fam Zheng
2014-02-09  9:48 ` [Qemu-devel] [PATCH 15/20] vmdk: extract vmdk_read_desc Paolo Bonzini
2014-02-10  8:28   ` Fam Zheng
2014-02-09  9:48 ` [Qemu-devel] [PATCH 16/20] vmdk: push vmdk_read_desc up to caller Paolo Bonzini
2014-02-10  8:37   ` Fam Zheng
2014-02-09  9:48 ` [Qemu-devel] [PATCH 17/20] vmdk: do not try opening a file as both image and descriptor Paolo Bonzini
2014-02-10  8:40   ` Fam Zheng
2014-02-09  9:48 ` [Qemu-devel] [PATCH 18/20] vmdk: correctly propagate errors Paolo Bonzini
2014-02-10  8:41   ` Fam Zheng
2014-02-09  9:48 ` [Qemu-devel] [PATCH 19/20] block: do not abuse EMEDIUMTYPE Paolo Bonzini
2014-02-10  8:47   ` Fam Zheng
2014-02-10  9:01     ` Paolo Bonzini
2014-02-09  9:48 ` [Qemu-devel] [PATCH 20/20] vdi: say why an image is bad Paolo Bonzini
2014-02-10  8:53   ` Fam Zheng

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=52F88D5A.90601@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=famz@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.