Commit af91062e authored by Markus Armbruster's avatar Markus Armbruster Committed by Kevin Wolf
Browse files

block: Factor out qobject_input_visitor_new_flat_confused()

parent 92adf9db
Loading
Loading
Loading
Loading
+2 −5
Original line number Diff line number Diff line
@@ -263,7 +263,6 @@ static SocketAddress *nbd_config(BDRVNBDState *s, QDict *options,
{
    SocketAddress *saddr = NULL;
    QDict *addr = NULL;
    QObject *crumpled_addr = NULL;
    Visitor *iv = NULL;
    Error *local_err = NULL;

@@ -273,12 +272,11 @@ static SocketAddress *nbd_config(BDRVNBDState *s, QDict *options,
        goto done;
    }

    crumpled_addr = qdict_crumple_for_keyval_qiv(addr, errp);
    if (!crumpled_addr) {
    iv = qobject_input_visitor_new_flat_confused(addr, errp);
    if (!iv) {
        goto done;
    }

    iv = qobject_input_visitor_new_keyval(crumpled_addr);
    visit_type_SocketAddress(iv, NULL, &saddr, &local_err);
    if (local_err) {
        error_propagate(errp, local_err);
@@ -287,7 +285,6 @@ static SocketAddress *nbd_config(BDRVNBDState *s, QDict *options,

done:
    qobject_unref(addr);
    qobject_unref(crumpled_addr);
    visit_free(iv);
    return saddr;
}
+2 −5
Original line number Diff line number Diff line
@@ -556,20 +556,17 @@ static BlockdevOptionsNfs *nfs_options_qdict_to_qapi(QDict *options,
                                                     Error **errp)
{
    BlockdevOptionsNfs *opts = NULL;
    QObject *crumpled = NULL;
    Visitor *v;
    const QDictEntry *e;
    Error *local_err = NULL;

    crumpled = qdict_crumple_for_keyval_qiv(options, errp);
    if (crumpled == NULL) {
    v = qobject_input_visitor_new_flat_confused(options, errp);
    if (!v) {
        return NULL;
    }

    v = qobject_input_visitor_new_keyval(crumpled);
    visit_type_BlockdevOptionsNfs(v, NULL, &opts, &local_err);
    visit_free(v);
    qobject_unref(crumpled);

    if (local_err) {
        error_propagate(errp, local_err);
+2 −5
Original line number Diff line number Diff line
@@ -617,7 +617,6 @@ static int coroutine_fn parallels_co_create_opts(const char *filename,
    Error *local_err = NULL;
    BlockDriverState *bs = NULL;
    QDict *qdict;
    QObject *qobj;
    Visitor *v;
    int ret;

@@ -653,14 +652,12 @@ static int coroutine_fn parallels_co_create_opts(const char *filename,
    qdict_put_str(qdict, "driver", "parallels");
    qdict_put_str(qdict, "file", bs->node_name);

    qobj = qdict_crumple_for_keyval_qiv(qdict, errp);
    if (!qobj) {
    v = qobject_input_visitor_new_flat_confused(qdict, errp);
    if (!v) {
        ret = -EINVAL;
        goto done;
    }

    v = qobject_input_visitor_new_keyval(qobj);
    qobject_unref(qobj);
    visit_type_BlockdevCreateOptions(v, NULL, &create_options, &local_err);
    visit_free(v);

+2 −5
Original line number Diff line number Diff line
@@ -947,7 +947,6 @@ static int coroutine_fn qcow_co_create_opts(const char *filename,
    BlockdevCreateOptions *create_options = NULL;
    BlockDriverState *bs = NULL;
    QDict *qdict;
    QObject *qobj;
    Visitor *v;
    const char *val;
    Error *local_err = NULL;
@@ -997,14 +996,12 @@ static int coroutine_fn qcow_co_create_opts(const char *filename,
    qdict_put_str(qdict, "driver", "qcow");
    qdict_put_str(qdict, "file", bs->node_name);

    qobj = qdict_crumple_for_keyval_qiv(qdict, errp);
    if (!qobj) {
    v = qobject_input_visitor_new_flat_confused(qdict, errp);
    if (!v) {
        ret = -EINVAL;
        goto fail;
    }

    v = qobject_input_visitor_new_keyval(qobj);
    qobject_unref(qobj);
    visit_type_BlockdevCreateOptions(v, NULL, &create_options, &local_err);
    visit_free(v);

+2 −5
Original line number Diff line number Diff line
@@ -3081,7 +3081,6 @@ static int coroutine_fn qcow2_co_create_opts(const char *filename, QemuOpts *opt
{
    BlockdevCreateOptions *create_options = NULL;
    QDict *qdict;
    QObject *qobj;
    Visitor *v;
    BlockDriverState *bs = NULL;
    Error *local_err = NULL;
@@ -3152,14 +3151,12 @@ static int coroutine_fn qcow2_co_create_opts(const char *filename, QemuOpts *opt
    qdict_put_str(qdict, "file", bs->node_name);

    /* Now get the QAPI type BlockdevCreateOptions */
    qobj = qdict_crumple_for_keyval_qiv(qdict, errp);
    if (!qobj) {
    v = qobject_input_visitor_new_flat_confused(qdict, errp);
    if (!v) {
        ret = -EINVAL;
        goto finish;
    }

    v = qobject_input_visitor_new_keyval(qobj);
    qobject_unref(qobj);
    visit_type_BlockdevCreateOptions(v, NULL, &create_options, &local_err);
    visit_free(v);

Loading