On 2015-02-11 at 22:07, Wen Congyang wrote:
Block replication needs this feature.
Signed-off-by: Wen Congyang <we...@cn.fujitsu.com>
Signed-off-by: zhanghailiang <zhang.zhanghaili...@huawei.com>
Signed-off-by: Gonglei <arei.gong...@huawei.com>
---
block.c | 2 ++
include/block/block_int.h | 2 ++
2 files changed, 4 insertions(+)
diff --git a/block.c b/block.c
index a7a8932..067c44b 100644
--- a/block.c
+++ b/block.c
@@ -1181,6 +1181,7 @@ void bdrv_set_backing_hd(BlockDriverState *bs,
BlockDriverState *backing_hd)
if (bs->backing_hd) {
assert(bs->backing_blocker);
bdrv_op_unblock_all(bs->backing_hd, bs->backing_blocker);
+ bs->backing_hd->origin_file = NULL;
Seems more like "backed_file" to me. Can you explain to me where "origin
file" comes from?
Since apparently one BDS can be used as a backing file by only at most
one other BDS, the patch seems fine to me (other than the naming issue).
Max
} else if (backing_hd) {
error_setg(&bs->backing_blocker,
"device is used as backing hd of '%s'",
@@ -1193,6 +1194,7 @@ void bdrv_set_backing_hd(BlockDriverState *bs,
BlockDriverState *backing_hd)
bs->backing_blocker = NULL;
goto out;
}
+ backing_hd->origin_file = bs;
bs->open_flags &= ~BDRV_O_NO_BACKING;
pstrcpy(bs->backing_file, sizeof(bs->backing_file), backing_hd->filename);
pstrcpy(bs->backing_format, sizeof(bs->backing_format),
diff --git a/include/block/block_int.h b/include/block/block_int.h
index 603f704..9be13a8 100644
--- a/include/block/block_int.h
+++ b/include/block/block_int.h
@@ -360,6 +360,8 @@ struct BlockDriverState {
char exact_filename[PATH_MAX];
BlockDriverState *backing_hd;
+ /* used by backing image */
+ BlockDriverState *origin_file;
BlockDriverState *file;
NotifierList close_notifiers;