提交 053e1578 编写于 作者: M Max Reitz 提交者: Kevin Wolf

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: NMax Reitz <mreitz@redhat.com>
Reviewed-by: NAlberto Garcia <berto@igalia.com>
Signed-off-by: NKevin Wolf <kwolf@redhat.com>
上级 ce343771
...@@ -996,13 +996,13 @@ static QDict *parse_json_filename(const char *filename, Error **errp) ...@@ -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, ...@@ -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, ...@@ -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;
}
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;
}
} else if (drvname) {
drv = bdrv_find_format(drvname);
if (!drv) { if (!drv) {
error_setg(errp, "Unknown driver '%s'", drvname); return -EINVAL;
return -ENOENT;
} }
drvname = drv->format_name;
qdict_put(*options, "driver", qstring_from_str(drvname));
} else {
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, ...@@ -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;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册