qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Jeff Cody <jcody@redhat.com>
To: Takashi Menjo <menjo.takashi@lab.ntt.co.jp>
Cc: Hitoshi Mitake <mitake.hitoshi@lab.ntt.co.jp>,
	sheepdog@lists.wpkg.org, qemu-devel@nongnu.org,
	Vasiliy Tolstov <v.tolstov@selfip.ru>
Subject: Re: [Qemu-devel] [PATCH] block/sheepdog: add error handling to sd_snapshot_delete()
Date: Fri, 18 Mar 2016 12:17:01 -0400	[thread overview]
Message-ID: <20160318161640.GN26318@localhost.localdomain> (raw)
In-Reply-To: <1458291278-5460-1-git-send-email-menjo.takashi@lab.ntt.co.jp>

On Fri, Mar 18, 2016 at 05:54:38PM +0900, Takashi Menjo wrote:
> Errors have been ignored in some code paths in sd_snapshot_delete().
> This patch adds error handling.
> 
> Signed-off-by: Takashi Menjo <menjo.takashi@lab.ntt.co.jp>

Thank you for the patch!

> ---
>  block/sheepdog.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/block/sheepdog.c b/block/sheepdog.c
> index a3aeae4..6492405 100644
> --- a/block/sheepdog.c
> +++ b/block/sheepdog.c
> @@ -2565,6 +2565,7 @@ static int sd_snapshot_delete(BlockDriverState *bs,
>      SheepdogVdiRsp *rsp = (SheepdogVdiRsp *)&hdr;
>  
>      if (!remove_objects(s)) {
> +        error_report("failed to discard snapshot inode");

We want to set errp, so that the error is picked up correctly.  It is
assumed in QEMU that if there is an Error object passed, that it is
sufficient to check it for error (as opposed to checking the return
value).

You can use error_setg() here to do this, e.g.:

       error_setg(errp, "failed to discard snapshot inode");

>          return -1;
>      }
>  
> @@ -2588,6 +2589,7 @@ static int sd_snapshot_delete(BlockDriverState *bs,
>      ret = find_vdi_name(s, s->name, snap_id, snap_tag, &vid, true,
>                          &local_err);
>      if (ret) {
> +        error_report_err(local_err);

To propagate the local_err value to errp, use error_propagate:

    error_propagate(errp, local_err);

>          return ret;
>      }


There is another hunk that is missing an error_propagate in
sd_snapshot_delete:

2594     fd = connect_to_sdog(s, &local_err);
2595     if (fd < 0) {
2596         error_report_err(local_err);
2597         return -1;
2598     }
2599

>  
> @@ -2601,6 +2603,7 @@ static int sd_snapshot_delete(BlockDriverState *bs,
>                   buf, &wlen, &rlen);
>      closesocket(fd);
>      if (ret) {
> +        error_setg_errno(errp, -ret, "failed to delete %s", s->name);
>          return ret;
>      }

We also need to set errp in the switch statement on rsp->result:

2607     switch (rsp->result) {

[...]

2612     default:
2613         error_report("%s, %s", sd_strerror(rsp->result), s->name);
2614         return -1;
2615     }

  reply	other threads:[~2016-03-18 16:17 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-18  8:54 [Qemu-devel] [PATCH] block/sheepdog: add error handling to sd_snapshot_delete() Takashi Menjo
2016-03-18 16:17 ` Jeff Cody [this message]
2016-03-22  3:59   ` MENJO, Takashi

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=20160318161640.GN26318@localhost.localdomain \
    --to=jcody@redhat.com \
    --cc=menjo.takashi@lab.ntt.co.jp \
    --cc=mitake.hitoshi@lab.ntt.co.jp \
    --cc=qemu-devel@nongnu.org \
    --cc=sheepdog@lists.wpkg.org \
    --cc=v.tolstov@selfip.ru \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).