@@ -220,15 +220,22 @@ char *bdrv_get_full_backing_filename_from_filename(const char *backed,
}
}
-char *bdrv_get_full_backing_filename(BlockDriverState *bs, Error **errp)
+static char *bdrv_make_absolute_filename(BlockDriverState *relative_to,
+ const char *filename, Error **errp)
{
- char *backed = bs->exact_filename[0] ? bs->exact_filename : bs->filename;
+ char *bs_filename = relative_to->exact_filename[0]
+ ? relative_to->exact_filename
+ : relative_to->filename;
- return bdrv_get_full_backing_filename_from_filename(backed,
- bs->backing_file,
+ return bdrv_get_full_backing_filename_from_filename(bs_filename, filename,
errp);
}
+char *bdrv_get_full_backing_filename(BlockDriverState *bs, Error **errp)
+{
+ return bdrv_make_absolute_filename(bs, bs->backing_file, errp);
+}
+
void bdrv_register(BlockDriver *bdrv)
{
QLIST_INSERT_HEAD(&bdrv_drivers, bdrv, list);
This is a general function for making a filename that is relative to a certain BDS absolute. It calls bdrv_get_full_backing_filename_from_filename() for now, but that will be changed in a follow-up patch. Signed-off-by: Max Reitz <mreitz@redhat.com> --- block.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-)