block: Drop drv parameter from bdrv_fill_options()

Now that this parameter is effectively unused, we can drop it and change
the function accordingly.

Signed-off-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: Alberto Garcia <berto@igalia.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
Max Reitz 2015-08-26 19:47:51 +02:00 committed by Kevin Wolf
parent ce34377124
commit 053e1578c9

59
block.c
View file

@ -996,13 +996,13 @@ static QDict *parse_json_filename(const char *filename, Error **errp)
* block driver has been specified explicitly. * block driver has been specified explicitly.
*/ */
static int bdrv_fill_options(QDict **options, const char **pfilename, static int bdrv_fill_options(QDict **options, const char **pfilename,
int *flags, BlockDriver *drv, Error **errp) int *flags, Error **errp)
{ {
const char *filename = *pfilename; const char *filename = *pfilename;
const char *drvname; const char *drvname;
bool protocol = *flags & BDRV_O_PROTOCOL; bool protocol = *flags & BDRV_O_PROTOCOL;
bool parse_filename = false; bool parse_filename = false;
BlockDriver *tmp_drv; BlockDriver *drv = NULL;
Error *local_err = NULL; Error *local_err = NULL;
/* Parse json: pseudo-protocol */ /* Parse json: pseudo-protocol */
@ -1021,15 +1021,15 @@ static int bdrv_fill_options(QDict **options, const char **pfilename,
} }
drvname = qdict_get_try_str(*options, "driver"); drvname = qdict_get_try_str(*options, "driver");
if (drvname) {
/* If the user has explicitly specified the driver, this choice should drv = bdrv_find_format(drvname);
* override the BDRV_O_PROTOCOL flag */ if (!drv) {
tmp_drv = drv; error_setg(errp, "Unknown driver '%s'", drvname);
if (!tmp_drv && drvname) { return -ENOENT;
tmp_drv = bdrv_find_format(drvname); }
} /* If the user has explicitly specified the driver, this choice should
if (tmp_drv) { * override the BDRV_O_PROTOCOL flag */
protocol = tmp_drv->bdrv_file_open; protocol = drv->bdrv_file_open;
} }
if (protocol) { if (protocol) {
@ -1053,33 +1053,18 @@ static int bdrv_fill_options(QDict **options, const char **pfilename,
/* Find the right block driver */ /* Find the right block driver */
filename = qdict_get_try_str(*options, "filename"); filename = qdict_get_try_str(*options, "filename");
if (drv) { if (!drvname && protocol) {
if (drvname) { if (filename) {
error_setg(errp, "Driver specified twice"); drv = bdrv_find_protocol(filename, parse_filename, errp);
return -EINVAL; if (!drv) {
}
drvname = drv->format_name;
qdict_put(*options, "driver", qstring_from_str(drvname));
} else {
if (!drvname && protocol) {
if (filename) {
drv = bdrv_find_protocol(filename, parse_filename, errp);
if (!drv) {
return -EINVAL;
}
drvname = drv->format_name;
qdict_put(*options, "driver", qstring_from_str(drvname));
} else {
error_setg(errp, "Must specify either driver or file");
return -EINVAL; return -EINVAL;
} }
} else if (drvname) {
drv = bdrv_find_format(drvname); drvname = drv->format_name;
if (!drv) { qdict_put(*options, "driver", qstring_from_str(drvname));
error_setg(errp, "Unknown driver '%s'", drvname); } else {
return -ENOENT; error_setg(errp, "Must specify either driver or file");
} return -EINVAL;
} }
} }
@ -1474,7 +1459,7 @@ static int bdrv_open_inherit(BlockDriverState **pbs, const char *filename,
flags = child_role->inherit_flags(parent->open_flags); flags = child_role->inherit_flags(parent->open_flags);
} }
ret = bdrv_fill_options(&options, &filename, &flags, NULL, &local_err); ret = bdrv_fill_options(&options, &filename, &flags, &local_err);
if (local_err) { if (local_err) {
goto fail; goto fail;
} }