Commit 455b0fde authored by Eric Blake's avatar Eric Blake Committed by Markus Armbruster
Browse files

error: More error_setg() usage



A few uses of error_set(ERROR_CLASS_GENERIC_ERROR) were missed in
c6bd8c70, or have snuck in since.  Nuke them.

Signed-off-by: default avatarEric Blake <eblake@redhat.com>
Message-Id: <1447224690-9743-19-git-send-email-eblake@redhat.com>
Acked-by: default avatarAndreas Färber <afaerber@suse.de>
[Indentation tidied up, commit message tweaked]
Signed-off-by: default avatarMarkus Armbruster <armbru@redhat.com>
parent 3c07587d
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -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;
    }

+9 −11
Original line number Diff line number Diff line
@@ -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

+3 −3
Original line number Diff line number Diff line
@@ -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);
        error_propagate(errp, error);
+2 −4
Original line number Diff line number Diff line
@@ -101,8 +101,7 @@ RockerSwitch *qmp_query_rocker(const char *name, Error **errp)

    r = rocker_find(name);
    if (!r) {
        error_set(errp, ERROR_CLASS_GENERIC_ERROR,
                  "rocker %s not found", name);
        error_setg(errp, "rocker %s not found", name);
        return NULL;
    }

@@ -122,8 +121,7 @@ RockerPortList *qmp_query_rocker_ports(const char *name, Error **errp)

    r = rocker_find(name);
    if (!r) {
        error_set(errp, ERROR_CLASS_GENERIC_ERROR,
                  "rocker %s not found", name);
        error_setg(errp, "rocker %s not found", name);
        return NULL;
    }

+4 −8
Original line number Diff line number Diff line
@@ -2462,15 +2462,13 @@ RockerOfDpaFlowList *qmp_query_rocker_of_dpa_flows(const char *name,

    r = rocker_find(name);
    if (!r) {
        error_set(errp, ERROR_CLASS_GENERIC_ERROR,
                  "rocker %s not found", name);
        error_setg(errp, "rocker %s not found", name);
        return NULL;
    }

    w = rocker_get_world(r, ROCKER_WORLD_TYPE_OF_DPA);
    if (!w) {
        error_set(errp, ERROR_CLASS_GENERIC_ERROR,
                  "rocker %s doesn't have OF-DPA world", name);
        error_setg(errp, "rocker %s doesn't have OF-DPA world", name);
        return NULL;
    }

@@ -2597,15 +2595,13 @@ RockerOfDpaGroupList *qmp_query_rocker_of_dpa_groups(const char *name,

    r = rocker_find(name);
    if (!r) {
        error_set(errp, ERROR_CLASS_GENERIC_ERROR,
                  "rocker %s not found", name);
        error_setg(errp, "rocker %s not found", name);
        return NULL;
    }

    w = rocker_get_world(r, ROCKER_WORLD_TYPE_OF_DPA);
    if (!w) {
        error_set(errp, ERROR_CLASS_GENERIC_ERROR,
                  "rocker %s doesn't have OF-DPA world", name);
        error_setg(errp, "rocker %s doesn't have OF-DPA world", name);
        return NULL;
    }

Loading