qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Kevin Wolf <kwolf@redhat.com>
To: Pavel Hrdina <phrdina@redhat.com>
Cc: lcapitulino@redhat.com, qemu-devel@nongnu.org, armbru@redhat.com
Subject: Re: [Qemu-devel] [PATCH 02/11] block: update error reporting for bdrv_snapshot_delete() and related functions
Date: Thu, 18 Apr 2013 15:41:04 +0200	[thread overview]
Message-ID: <20130418134104.GI2723@dhcp-200-207.str.redhat.com> (raw)
In-Reply-To: <516FF2D8.2080003@redhat.com>

Am 18.04.2013 um 15:19 hat Pavel Hrdina geschrieben:
> On 18.4.2013 14:55, Kevin Wolf wrote:
> >Am 16.04.2013 um 18:05 hat Pavel Hrdina geschrieben:
> >>--- a/block/rbd.c
> >>+++ b/block/rbd.c
> >>@@ -871,14 +871,19 @@ static int qemu_rbd_snap_create(BlockDriverState *bs,
> >>      return 0;
> >>  }
> >>
> >>-static int qemu_rbd_snap_remove(BlockDriverState *bs,
> >>-                                const char *snapshot_name)
> >>+static void qemu_rbd_snap_remove(BlockDriverState *bs,
> >>+                                 const char *snapshot_name,
> >>+                                 Error **errp)
> >>  {
> >>      BDRVRBDState *s = bs->opaque;
> >>      int r;
> >>
> >>      r = rbd_snap_remove(s->image, snapshot_name);
> >>-    return r;
> >>+    if (r < 0) {
> >>+        error_setg_errno(errp, -r, "rbd: failed to remove snapshot '%s' on "
> >>+                         "device '%s'", snapshot_name,
> >>+                         bdrv_get_device_name(bs));
> >
> >Remove the device name. You didn't have it in the qcow2 errors either.
> 
> Or maybe I should also add the device name in the qcow2 errors,
> because as Eric write to you these function are used also for
> vm-snapshot-delete and devlm and knowing which device failed is
> important.

I don't think it's the right approach to let the lowest layer add all
information that is potentially useful in some contexts. It should only
consider what information is essential for its direct caller.

You are right that in delvm multiple devices can be affected. This is
why delvm should amend the error message with any information that is
required for the error message to be helpful in the context of delvm.
This is essentially what I suggested here:

> >>@@ -2225,18 +2225,17 @@ static int del_existing_snapshots(Monitor *mon, const char *name)
> >>  {
> >>      BlockDriverState *bs;
> >>      QEMUSnapshotInfo sn1, *snapshot = &sn1;
> >>-    int ret;
> >>+    Error *local_err = NULL;
> >>
> >>      bs = NULL;
> >>      while ((bs = bdrv_next(bs))) {
> >>          if (bdrv_can_snapshot(bs) &&
> >>              bdrv_snapshot_find(bs, snapshot, name) >= 0)
> >>          {
> >>-            ret = bdrv_snapshot_delete(bs, name);
> >>-            if (ret < 0) {
> >>-                monitor_printf(mon,
> >>-                               "Error while deleting snapshot on '%s'\n",
> >>-                               bdrv_get_device_name(bs));
> >>+            bdrv_snapshot_delete(bs, name, &local_err);
> >>+            if (error_is_set(&local_err)) {
> >>+                monitor_printf(mon, "%s\n", error_get_pretty(local_err));
> >
> >Here the additional monitor_printf() actually had meaningful additional
> >information. Deleting an old snapshot is an implicitly taken action and
> >not explicitly requested, so an error message should indicate that it
> >happened during the deletion. Maybe something like:
> 
> Function del_existing_snapshots will be anyway dropped later in
> patch series so this has no actual value. But I should probably make
> something similar to this for HMP command savevm.
> 
> Thanks
> 
> >
> >qerror_report(ERROR_CLASS_GENERIC_ERROR,
> >               "Error while deleting old snapshot on device '%s': %s",
> >               bdrv_get_device_name(bs), error_get_pretty(local_err));

See how I added the device name and the context of the error ("while
deleteing the old snapshot") only in the place where it's actually
necessary for the caller to understand the error?

By the way, I'm also unsure if the "qcow2:" or "rbd:" prefix is actually
helpful.

Kevin

  reply	other threads:[~2013-04-18 13:41 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-04-16 16:05 [Qemu-devel] [PATCH 00/11] covert savevm, loadvm and delvm into qapi Pavel Hrdina
2013-04-16 16:05 ` [Qemu-devel] [PATCH 01/11] qemu-img: introduce qemu_img_handle_error() Pavel Hrdina
2013-04-16 16:46   ` Eric Blake
2013-04-18 11:44   ` Kevin Wolf
2013-04-18 11:52     ` Pavel Hrdina
2013-04-18 12:59       ` Kevin Wolf
2013-04-18 13:09         ` Pavel Hrdina
2013-04-18 15:23           ` Luiz Capitulino
2013-04-16 16:05 ` [Qemu-devel] [PATCH 02/11] block: update error reporting for bdrv_snapshot_delete() and related functions Pavel Hrdina
2013-04-16 17:14   ` Eric Blake
2013-04-18 12:55   ` Kevin Wolf
2013-04-18 13:09     ` Eric Blake
2013-04-18 13:51       ` Kevin Wolf
2013-04-18 13:19     ` Pavel Hrdina
2013-04-18 13:41       ` Kevin Wolf [this message]
2013-04-16 16:05 ` [Qemu-devel] [PATCH 03/11] savevm: update bdrv_snapshot_find() to find snapshot by id or name Pavel Hrdina
2013-04-16 17:34   ` Eric Blake
2013-04-18 13:17   ` Kevin Wolf
2013-04-16 16:05 ` [Qemu-devel] [PATCH 04/11] qapi: Convert delvm Pavel Hrdina
2013-04-16 19:39   ` Eric Blake
2013-04-18 13:28   ` Kevin Wolf
2013-04-16 16:05 ` [Qemu-devel] [PATCH 05/11] block: update error reporting for bdrv_snapshot_goto() and related functions Pavel Hrdina
2013-04-16 20:48   ` Eric Blake
2013-04-23 14:08   ` Kevin Wolf
2013-04-16 16:05 ` [Qemu-devel] [PATCH 06/11] savevm: update error reporting for qemu_loadvm_state() Pavel Hrdina
2013-04-16 21:42   ` Eric Blake
2013-04-16 16:05 ` [Qemu-devel] [PATCH 07/11] qapi: Convert loadvm Pavel Hrdina
2013-04-16 23:43   ` Eric Blake
2013-04-18 10:34     ` Pavel Hrdina
2013-04-16 16:05 ` [Qemu-devel] [PATCH 08/11] block: update error reporting for bdrv_snapshot_create() and related functions Pavel Hrdina
2013-04-16 23:54   ` Eric Blake
2013-04-16 16:05 ` [Qemu-devel] [PATCH 09/11] savevm: update error reporting off qemu_savevm_state() " Pavel Hrdina
2013-04-17  0:02   ` Eric Blake
2013-04-16 16:05 ` [Qemu-devel] [PATCH 10/11] qapi: Convert savevm Pavel Hrdina
2013-04-16 16:05 ` [Qemu-devel] [PATCH 11/11] savevm: remove backward compatibility from bdrv_snapshot_find() Pavel Hrdina
2013-04-17  2:53   ` Wenchao Xia
2013-04-17  7:52     ` Pavel Hrdina
2013-04-17 10:19       ` Wenchao Xia
2013-04-17 10:51         ` Pavel Hrdina
2013-04-17 18:14           ` Eric Blake
2013-04-17 18:22             ` Eric Blake
2013-04-18  4:31             ` Wenchao Xia
2013-04-18  7:20               ` Wenchao Xia
2013-04-18 10:22               ` Pavel Hrdina
2013-04-19  0:28                 ` Wenchao Xia
2013-04-24  3:51                   ` Wenchao Xia
2013-04-24  9:37                     ` Pavel Hrdina
2013-04-16 16:33 ` [Qemu-devel] [PATCH 00/11] covert savevm, loadvm and delvm into qapi Eric Blake

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=20130418134104.GI2723@dhcp-200-207.str.redhat.com \
    --to=kwolf@redhat.com \
    --cc=armbru@redhat.com \
    --cc=lcapitulino@redhat.com \
    --cc=phrdina@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /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).