qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v11 18/28] qerror: more error_setg() usage


From: Markus Armbruster
Subject: Re: [Qemu-devel] [PATCH v11 18/28] qerror: more error_setg() usage
Date: Wed, 11 Nov 2015 15:21:46 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)

Eric Blake <address@hidden> writes:

> A few uses of error_set(ERROR_CLASS_GENERIC_ERROR) have snuck in
> since c6bd8c706.  Nuke them.

Doesn't really belong to this series, but that's okay.

> Signed-off-by: Eric Blake <address@hidden>
>
> ---
> v11: new patch
> ---
>  block.c                       |  3 +--
>  docs/writing-qmp-commands.txt | 20 +++++++++-----------
>  hw/i386/pc.c                  |  2 +-
>  hw/net/rocker/rocker.c        |  6 ++----
>  hw/net/rocker/rocker_of_dpa.c | 12 ++++--------
>  qom/object.c                  |  4 ++--
>  6 files changed, 19 insertions(+), 28 deletions(-)
>
> diff --git a/block.c b/block.c
> index e9f40dc..53a978a 100644
> --- a/block.c
> +++ b/block.c
> @@ -1795,8 +1795,7 @@ int bdrv_reopen_prepare(BDRVReopenState *reopen_state, 
> BlockReopenQueue *queue,
>
>      ret = bdrv_flush(reopen_state->bs);
>      if (ret) {
> -        error_set(errp, ERROR_CLASS_GENERIC_ERROR, "Error (%s) flushing 
> drive",
> -                  strerror(-ret));
> +        error_setg_errno(errp, -ret, "Error flushing drive");
>          goto error;
>      }
>
> diff --git a/docs/writing-qmp-commands.txt b/docs/writing-qmp-commands.txt
> index 8647cac..59aa77a 100644
> --- a/docs/writing-qmp-commands.txt
> +++ b/docs/writing-qmp-commands.txt
> @@ -210,7 +210,7 @@ if you don't see these strings, then something went wrong.
>  === Errors ===
>
>  QMP commands should use the error interface exported by the error.h header
> -file. Basically, errors are set by calling the error_set() function.
> +file. Basically, most errors are set by calling the error_setg() function.
>
>  Let's say we don't accept the string "message" to contain the word "love". If
>  it does contain it, we want the "hello-world" command to return an error:
> @@ -219,8 +219,7 @@ void qmp_hello_world(bool has_message, const char 
> *message, Error **errp)
>  {
>      if (has_message) {
>          if (strstr(message, "love")) {
> -            error_set(errp, ERROR_CLASS_GENERIC_ERROR,
> -                      "the word 'love' is not allowed");
> +            error_setg(errp, "the word 'love' is not allowed");
>              return;
>          }
>          printf("%s\n", message);
> @@ -229,10 +228,8 @@ void qmp_hello_world(bool has_message, const char 
> *message, Error **errp)
>      }
>  }
>
> -The first argument to the error_set() function is the Error pointer to 
> pointer,
> -which is passed to all QMP functions. The second argument is a ErrorClass
> -value, which should be ERROR_CLASS_GENERIC_ERROR most of the time (more
> -details about error classes are given below). The third argument is a human
> +The first argument to the error_setg() function is the Error pointer
> +to pointer, which is passed to all QMP functions. The next argument is a 
> human
>  description of the error, this is a free-form printf-like string.
>
>  Let's test the example above. Build qemu, run it as defined in the "Testing"
> @@ -249,8 +246,9 @@ The QMP server's response should be:
>      }
>  }
>
> -As a general rule, all QMP errors should use ERROR_CLASS_GENERIC_ERROR. There
> -are two exceptions to this rule:
> +As a general rule, all QMP errors should use ERROR_CLASS_GENERIC_ERROR
> +(done by default when using error_setg()). There are two exceptions to
> +this rule:
>
>   1. A non-generic ErrorClass value exists* for the failure you want to report
>      (eg. DeviceNotFound)
> @@ -259,8 +257,8 @@ are two exceptions to this rule:
>      want to report, hence you have to add a new ErrorClass value so that they
>      can check for it
>
> -If the failure you want to report doesn't fall in one of the two cases above,
> -just report ERROR_CLASS_GENERIC_ERROR.
> +If the failure you want to report falls into one of the two cases above,
> +use error_set() with a second argument of an ErrorClass value.
>
>   * All existing ErrorClass values are defined in the qapi-schema.json file
>

Thanks a lot for this doc update!

> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
> index 0cb8afd..dfb57a8 100644
> --- a/hw/i386/pc.c
> +++ b/hw/i386/pc.c
> @@ -1795,7 +1795,7 @@ static void pc_machine_set_max_ram_below_4g(Object 
> *obj, Visitor *v,
>          return;
>      }
>      if (value > (1ULL << 32)) {
> -        error_set(&error, ERROR_CLASS_GENERIC_ERROR,
> +        error_setg(&error,
>                    "Machine option 'max-ram-below-4g=%"PRIu64
>                    "' expects size less than or equal to 4G", value);

Indentation is now off.  Can tidy up in my tree.

>          error_propagate(errp, error);
[Rest snipped, it looks good]



reply via email to

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