block: Inline bdrv_file_open()

It doesn't do much any more, we can move the code to bdrv_open() now.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Benoit Canet <benoit@irqsave.net>
Reviewed-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
Kevin Wolf 2014-06-04 12:03:59 +02:00
parent f4788adcb4
commit b348f3311c

51
block.c
View File

@ -1125,44 +1125,6 @@ static int bdrv_fill_options(QDict **options, const char **pfilename, int flags,
return 0; return 0;
} }
/*
* Opens a file using a protocol (file, host_device, nbd, ...)
*
* options is an indirect pointer to a QDict of options to pass to the block
* drivers, or pointer to NULL for an empty set of options. If this function
* takes ownership of the QDict reference, it will set *options to NULL;
* otherwise, it will contain unused/unrecognized options after this function
* returns. Then, the caller is responsible for freeing it. If it intends to
* reuse the QDict, QINCREF() should be called beforehand.
*/
static int bdrv_file_open(BlockDriverState *bs, BlockDriver *drv,
QDict **options, int flags, Error **errp)
{
const char *filename;
Error *local_err = NULL;
int ret;
filename = qdict_get_try_str(*options, "filename");
/* Open the file */
if (!drv->bdrv_file_open) {
ret = bdrv_open(&bs, filename, NULL, *options, flags, drv, &local_err);
*options = NULL;
} else {
ret = bdrv_open_common(bs, NULL, *options, flags, drv, &local_err);
}
if (ret < 0) {
error_propagate(errp, local_err);
goto fail;
}
bs->growable = 1;
return 0;
fail:
return ret;
}
void bdrv_set_backing_hd(BlockDriverState *bs, BlockDriverState *backing_hd) void bdrv_set_backing_hd(BlockDriverState *bs, BlockDriverState *backing_hd)
{ {
@ -1490,9 +1452,18 @@ int bdrv_open(BlockDriverState **pbs, const char *filename,
/* Open the image */ /* Open the image */
if (flags & BDRV_O_PROTOCOL) { if (flags & BDRV_O_PROTOCOL) {
ret = bdrv_file_open(bs, drv, &options, flags & ~BDRV_O_PROTOCOL, if (!drv->bdrv_file_open) {
&local_err); const char *filename;
filename = qdict_get_try_str(options, "filename");
ret = bdrv_open(&bs, filename, NULL, options,
flags & ~BDRV_O_PROTOCOL, drv, &local_err);
options = NULL;
} else {
ret = bdrv_open_common(bs, NULL, options,
flags & ~BDRV_O_PROTOCOL, drv, &local_err);
}
if (!ret) { if (!ret) {
bs->growable = 1;
goto done; goto done;
} else if (bs->drv) { } else if (bs->drv) {
goto close_and_fail; goto close_and_fail;