On 2013年11月25日 19:23, Kevin Wolf wrote:
Am 22.11.2013 um 06:24 hat Fam Zheng geschrieben:
Drive backup is a read only operation on source bs. We want to allow
this specific case to enable image-fleecing. Note that when
image-fleecing job starts, the job still add its blocker to source bs,
and any other operation on it will be blocked by that.

Signed-off-by: Fam Zheng <f...@redhat.com>
---
  block.c | 2 ++
  1 file changed, 2 insertions(+)

diff --git a/block.c b/block.c
index a5da656..d30be51 100644
--- a/block.c
+++ b/block.c
@@ -1179,6 +1179,8 @@ int bdrv_open(BlockDriverState *bs, const char *filename, 
QDict *options,
                             "device is used as backing hd of '%s'",
                             bs->device_name);
                  bdrv_op_block_all(bs->backing_hd, bs->backing_blocker);
+                bdrv_op_unblock(bs->backing_hd, BLOCK_OP_TYPE_BACKUP,
+                                bs->backing_blocker);
                  pstrcpy(bs->backing_file, sizeof(bs->backing_file),
                          bs->backing_hd->filename);
                  pstrcpy(bs->backing_format, sizeof(bs->backing_format),

We probably need separate blockers for "can be a backup source" and "can
be a backup target". Because I think this allows using it as a
read-write target as well, which was not intended.


Yes. Will do it.

Do we need to cover this in other parts of the code as well, like when
adding a new BDS during external snapshot creation?


Does it have a name? If not I think we are safe there.

Fam


Reply via email to