From 0a4f0909cd40b5ff0d8461ca8af7a6735bba825c Mon Sep 17 00:00:00 2001 Message-Id: <0a4f0909cd40b5ff0d8461ca8af7a6735bba825c.1350493760.git.minovotn@redhat.com> In-Reply-To: References: From: Jeffrey Cody Date: Wed, 17 Oct 2012 05:59:19 +0200 Subject: [PATCH 06/35] block: update in-memory backing file and format RH-Author: Jeffrey Cody Message-id: Patchwork-id: 43266 O-Subject: [RHEL6.4 qemu-kvm PATCH v4 06/35] block: update in-memory backing file and format Bugzilla: 767233 RH-Acked-by: Paolo Bonzini RH-Acked-by: Eric Blake RH-Acked-by: Kevin Wolf From: Paolo Bonzini These are needed to print "info block" output correctly. QCOW2 does this because it needs it to write the header, but QED does not, and common code is the right place to do it. Reviewed-by: Kevin Wolf Signed-off-by: Paolo Bonzini Signed-off-by: Kevin Wolf (cherry picked from commit 469ef350e1a8b5715e620dbf6f6115628e5b566e) Signed-off-by: Jeff Cody --- block.c | 11 +++++++++-- block/stream.c | 11 ----------- 2 files changed, 9 insertions(+), 13 deletions(-) Signed-off-by: Michal Novotny --- block.c | 11 +++++++++-- block/stream.c | 11 ----------- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/block.c b/block.c index b3fc068..7dd4e6b 100644 --- a/block.c +++ b/block.c @@ -1309,6 +1309,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) { @@ -1316,10 +1317,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, diff --git a/block/stream.c b/block/stream.c index 76a21c4..713ed93 100644 --- a/block/stream.c +++ b/block/stream.c @@ -96,17 +96,6 @@ static void close_unused_images(BlockDriverState *top, BlockDriverState *base, bdrv_delete(unused); } top->backing_hd = base; - - pstrcpy(top->backing_file, sizeof(top->backing_file), ""); - pstrcpy(top->backing_format, sizeof(top->backing_format), ""); - if (base_id) { - pstrcpy(top->backing_file, sizeof(top->backing_file), base_id); - if (base->drv) { - pstrcpy(top->backing_format, sizeof(top->backing_format), - base->drv->format_name); - } - } - } /* -- 1.7.11.7