These are needed to print "info block" output correctly. QCOW2 does this already because it needs it to write the header, but QED does not, and common code is a better place to do it.
Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> --- block.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/block.c b/block.c index e293882..afff23f 100644 --- a/block.c +++ b/block.c @@ -1402,6 +1402,7 @@ int bdrv_change_backing_file(BlockDriverState *bs, const char *backing_file, const char *backing_fmt) { BlockDriver *drv = bs->drv; + int ret; /* Backing file format doesn't make sense without a backing file */ if (backing_fmt && !backing_file) { @@ -1409,10 +1410,16 @@ int bdrv_change_backing_file(BlockDriverState *bs, } if (drv->bdrv_change_backing_file != NULL) { - return drv->bdrv_change_backing_file(bs, backing_file, backing_fmt); + ret = drv->bdrv_change_backing_file(bs, backing_file, backing_fmt); } else { - return -ENOTSUP; + ret = -ENOTSUP; + } + + if (ret == 0) { + pstrcpy(bs->backing_file, sizeof(bs->backing_file), backing_file ?: ""); + pstrcpy(bs->backing_format, sizeof(bs->backing_format), backing_fmt ?: ""); } + return ret; } static int bdrv_check_byte_request(BlockDriverState *bs, int64_t offset, -- 1.7.9.3