blkdebug: Always call read_config()

Move the check whether there actually is a config file into the
read_config() function.

Signed-off-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
Max Reitz 2013-12-20 19:28:06 +01:00 committed by Kevin Wolf
parent adf5c449e5
commit 85a040e548

View file

@ -273,21 +273,23 @@ static void remove_rule(BlkdebugRule *rule)
static int read_config(BDRVBlkdebugState *s, const char *filename, Error **errp) static int read_config(BDRVBlkdebugState *s, const char *filename, Error **errp)
{ {
FILE *f; FILE *f = NULL;
int ret; int ret;
struct add_rule_data d; struct add_rule_data d;
f = fopen(filename, "r"); if (filename) {
if (f == NULL) { f = fopen(filename, "r");
error_setg_errno(errp, errno, "Could not read blkdebug config file"); if (f == NULL) {
return -errno; error_setg_errno(errp, errno, "Could not read blkdebug config file");
} return -errno;
}
ret = qemu_config_parse(f, config_groups, filename); ret = qemu_config_parse(f, config_groups, filename);
if (ret < 0) { if (ret < 0) {
error_setg(errp, "Could not parse blkdebug config file"); error_setg(errp, "Could not parse blkdebug config file");
ret = -EINVAL; ret = -EINVAL;
goto fail; goto fail;
}
} }
d.s = s; d.s = s;
@ -301,7 +303,9 @@ static int read_config(BDRVBlkdebugState *s, const char *filename, Error **errp)
fail: fail:
qemu_opts_reset(&inject_error_opts); qemu_opts_reset(&inject_error_opts);
qemu_opts_reset(&set_state_opts); qemu_opts_reset(&set_state_opts);
fclose(f); if (f) {
fclose(f);
}
return ret; return ret;
} }
@ -374,11 +378,9 @@ static int blkdebug_open(BlockDriverState *bs, QDict *options, int flags,
/* Read rules from config file */ /* Read rules from config file */
config = qemu_opt_get(opts, "config"); config = qemu_opt_get(opts, "config");
if (config) { ret = read_config(s, config, errp);
ret = read_config(s, config, errp); if (ret) {
if (ret) { goto fail;
goto fail;
}
} }
/* Set initial state */ /* Set initial state */