All of lore.kernel.org
 help / color / mirror / Atom feed
From: Luiz Capitulino <lcapitulino@redhat.com>
To: Kevin Wolf <kwolf@redhat.com>
Cc: Stefan Hajnoczi <stefanha@gmail.com>,
	qemu-devel@nongnu.org, armbru@redhat.com
Subject: Re: [Qemu-devel] [PATCH 3/9] block: bdrv_reopen_prepare(): use error_setg_file_open()
Date: Mon, 10 Jun 2013 10:02:52 -0400	[thread overview]
Message-ID: <20130610100252.139078b0@redhat.com> (raw)
In-Reply-To: <20130610135410.GH3636@dhcp-200-207.str.redhat.com>

On Mon, 10 Jun 2013 15:54:10 +0200
Kevin Wolf <kwolf@redhat.com> wrote:

> Am 10.06.2013 um 15:21 hat Luiz Capitulino geschrieben:
> > On Mon, 10 Jun 2013 10:43:47 +0200
> > Stefan Hajnoczi <stefanha@gmail.com> wrote:
> > 
> > > On Fri, Jun 07, 2013 at 03:52:29PM -0400, Luiz Capitulino wrote:
> > > > Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
> > > > ---
> > > >  block.c | 3 +--
> > > >  1 file changed, 1 insertion(+), 2 deletions(-)
> > > > 
> > > > diff --git a/block.c b/block.c
> > > > index 79ad33d..c78f152 100644
> > > > --- a/block.c
> > > > +++ b/block.c
> > > > @@ -1291,8 +1291,7 @@ int bdrv_reopen_prepare(BDRVReopenState *reopen_state, BlockReopenQueue *queue,
> > > >              if (local_err != NULL) {
> > > >                  error_propagate(errp, local_err);
> > > >              } else {
> > > > -                error_set(errp, QERR_OPEN_FILE_FAILED,
> > > > -                          reopen_state->bs->filename);
> > > > +                error_setg_file_open(errp, errno, reopen_state->bs->filename);
> > > 
> > > Looking closer, my suggestion was wrong too.
> > > 
> > > I think QERR_OPEN_FILE_FAILED is simply the wrong error here.  We don't
> > > know that the error occurred when trying to open a file.
> > 
> > Right.
> > 
> > > errno does not necessarily contain the error value!
> > 
> > There are two ways to fix it (and they're not mutually exclusive):
> > 
> >  1. We could review all bdrv_reopen_prepare() methods and make sure they
> >     set errno on failure
> > 
> >  2. We set errno=0 before calling the bdrv_reopen_prepare() method and if
> >     there's an error and if errno != 0 we use it, otherwise we set a generic
> >     "failed to prepare to reopen image" error
> > 
> > Option 1 goes a bit beyond the time I'd like to spent on this series.
> > Option 2 is quite reasonable.
> > 
> > What do you think?
> 
> errno is definitely not reliable here and won't be. You must use -ret if
> you want a meaningful error message.
> 
> I think Stefan's point was more that "Could not open" might not be the
> right message for a reopen, so we'd have to use error_setg_errno()
> directly with a different message here, like "Could not prepare reopen
> for '%s'".

Ok, but Stefan also said that -ret is not reliable. And after quickly
checking the code I see he's right, as there are methods that return -1.

I think the safest thing to do is to have a generic error message for
for this now and in the future we should propagate errp or return -errno.

  reply	other threads:[~2013-06-10 14:03 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-07 19:52 [Qemu-devel] [PATCH 0/9] QMP/HMP: add error reason to open failures Luiz Capitulino
2013-06-07 19:52 ` [Qemu-devel] [PATCH 1/9] error: add error_setg_file_open() helper Luiz Capitulino
2013-06-07 19:52 ` [Qemu-devel] [PATCH 2/9] rng-random: use error_setg_file_open() Luiz Capitulino
2013-06-07 19:52 ` [Qemu-devel] [PATCH 3/9] block: bdrv_reopen_prepare(): " Luiz Capitulino
2013-06-10  8:39   ` Stefan Hajnoczi
2013-06-10  8:43   ` Stefan Hajnoczi
2013-06-10 13:21     ` Luiz Capitulino
2013-06-10 13:54       ` Kevin Wolf
2013-06-10 14:02         ` Luiz Capitulino [this message]
2013-06-10 14:06           ` Kevin Wolf
2013-06-07 19:52 ` [Qemu-devel] [PATCH 4/9] block: mirror_complete(): " Luiz Capitulino
2013-06-10  8:44   ` Stefan Hajnoczi
2013-06-07 19:52 ` [Qemu-devel] [PATCH 5/9] blockdev: " Luiz Capitulino
2013-06-10  8:45   ` Stefan Hajnoczi
2013-06-10 13:25     ` Luiz Capitulino
2013-06-07 19:52 ` [Qemu-devel] [PATCH 6/9] cpus: " Luiz Capitulino
2013-06-07 19:52 ` [Qemu-devel] [PATCH 7/9] dump: qmp_dump_guest_memory(): " Luiz Capitulino
2013-06-07 19:52 ` [Qemu-devel] [PATCH 8/9] savevm: qmp_xen_save_devices_state(): " Luiz Capitulino
2013-06-07 19:52 ` [Qemu-devel] [PATCH 9/9] qerror: drop QERR_OPEN_FILE_FAILED macro Luiz Capitulino

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=20130610100252.139078b0@redhat.com \
    --to=lcapitulino@redhat.com \
    --cc=armbru@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@gmail.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.