Commit 89f2b21e authored by Max Reitz's avatar Max Reitz Committed by Kevin Wolf
Browse files

blkdebug: Use command-line in read_config()



Use qemu_config_parse_qdict() to parse the command-line options in
addition to the config file.

Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
Reviewed-by: default avatarKevin Wolf <kwolf@redhat.com>
Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
parent 85a040e5
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -271,11 +271,13 @@ static void remove_rule(BlkdebugRule *rule)
    g_free(rule);
}

static int read_config(BDRVBlkdebugState *s, const char *filename, Error **errp)
static int read_config(BDRVBlkdebugState *s, const char *filename,
                       QDict *options, Error **errp)
{
    FILE *f = NULL;
    int ret;
    struct add_rule_data d;
    Error *local_err = NULL;

    if (filename) {
        f = fopen(filename, "r");
@@ -292,6 +294,13 @@ static int read_config(BDRVBlkdebugState *s, const char *filename, Error **errp)
        }
    }

    qemu_config_parse_qdict(options, config_groups, &local_err);
    if (error_is_set(&local_err)) {
        error_propagate(errp, local_err);
        ret = -EINVAL;
        goto fail;
    }

    d.s = s;
    d.action = ACTION_INJECT_ERROR;
    qemu_opts_foreach(&inject_error_opts, add_rule, &d, 0);
@@ -376,9 +385,9 @@ static int blkdebug_open(BlockDriverState *bs, QDict *options, int flags,
        goto fail;
    }

    /* Read rules from config file */
    /* Read rules from config file or command line options */
    config = qemu_opt_get(opts, "config");
    ret = read_config(s, config, errp);
    ret = read_config(s, config, options, errp);
    if (ret) {
        goto fail;
    }