qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 04/13] qemu-img: Suppress unhelpful extra errors


From: John Snow
Subject: Re: [Qemu-devel] [PATCH 04/13] qemu-img: Suppress unhelpful extra errors in convert, resize
Date: Mon, 16 Feb 2015 15:19:23 -0500
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.4.0



On 02/16/2015 09:44 AM, Markus Armbruster wrote:
add_old_style_options() for img_convert() and img_resize() use
qemu_opt_set(), which reports errors with qerror_report_err().  Its
error messages aren't helpful here, the caller reports one that
actually makes sense.  Reproducer:

     $ qemu-img convert -B raw in.img out.img
     qemu-img: Invalid parameter 'backing_file'
     qemu-img: Backing file not supported for file format 'raw'

Switch to qemu_opt_set_err() to get rid of the unwanted messages.

Signed-off-by: Markus Armbruster <address@hidden>
---
  qemu-img.c | 16 ++++++++++++----
  1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/qemu-img.c b/qemu-img.c
index 7eea84a..7a806bc 100644
--- a/qemu-img.c
+++ b/qemu-img.c
@@ -338,17 +338,23 @@ static int add_old_style_options(const char *fmt, 
QemuOpts *opts,
                                   const char *base_filename,
                                   const char *base_fmt)
  {
+    Error *err = NULL;
+
      if (base_filename) {
-        if (qemu_opt_set(opts, BLOCK_OPT_BACKING_FILE, base_filename)) {
+        qemu_opt_set_err(opts, BLOCK_OPT_BACKING_FILE, base_filename, &err);
+        if (err) {
              error_report("Backing file not supported for file format '%s'",
                           fmt);
+            error_free(err);
              return -1;
          }
      }
      if (base_fmt) {
-        if (qemu_opt_set(opts, BLOCK_OPT_BACKING_FMT, base_fmt)) {
+        qemu_opt_set_err(opts, BLOCK_OPT_BACKING_FMT, base_fmt, &err);
+        if (err) {
              error_report("Backing file format not supported for file "
                           "format '%s'", fmt);
+            error_free(err);
              return -1;
          }
      }
@@ -2758,6 +2764,7 @@ out:

  static int img_resize(int argc, char **argv)
  {
+    Error *err = NULL;
      int c, ret, relative;
      const char *filename, *fmt, *size;
      int64_t n, total_size;
@@ -2830,8 +2837,9 @@ static int img_resize(int argc, char **argv)

      /* Parse size */
      param = qemu_opts_create(&resize_options, NULL, 0, &error_abort);
-    if (qemu_opt_set(param, BLOCK_OPT_SIZE, size)) {
-        /* Error message already printed when size parsing fails */
+    qemu_opt_set_err(param, BLOCK_OPT_SIZE, size, &err);
+    if (err) {
+        error_report_err(err);

Creates a new warning/failure for me, if basing off of origin/master or kevin/block:

  CC    qemu-img.o
/home/bos/jhuston/src/qemu/qemu-img.c: In function ‘img_resize’:
/home/bos/jhuston/src/qemu/qemu-img.c:2844:9: error: implicit declaration of function ‘error_report_err’ [-Werror=implicit-function-declaration]
         error_report_err(err);
         ^
/home/bos/jhuston/src/qemu/qemu-img.c:2844:9: error: nested extern declaration of ‘error_report_err’ [-Werror=nested-externs]
cc1: all warnings being treated as errors
make: *** [qemu-img.o] Error 1
make: *** Waiting for unfinished jobs....


          ret = -1;
          qemu_opts_del(param);
          goto out;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]