block: unblock backup operations in backing file
Signed-off-by: Wen Congyang <wency@cn.fujitsu.com> Signed-off-by: Changlong Xie <xiecl.fnst@cn.fujitsu.com> Signed-off-by: Wang WeiWei <wangww.fnst@cn.fujitsu.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Kashyap Chamarthy <kchamart@redhat.com> Message-id: 1469602913-20979-2-git-send-email-xiecl.fnst@cn.fujitsu.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
b5c7ceaf4b
commit
e9d6456e95
17
block.c
17
block.c
@ -1312,6 +1312,23 @@ void bdrv_set_backing_hd(BlockDriverState *bs, BlockDriverState *backing_hd)
|
||||
/* Otherwise we won't be able to commit due to check in bdrv_commit */
|
||||
bdrv_op_unblock(backing_hd, BLOCK_OP_TYPE_COMMIT_TARGET,
|
||||
bs->backing_blocker);
|
||||
/*
|
||||
* We do backup in 3 ways:
|
||||
* 1. drive backup
|
||||
* The target bs is new opened, and the source is top BDS
|
||||
* 2. blockdev backup
|
||||
* Both the source and the target are top BDSes.
|
||||
* 3. internal backup(used for block replication)
|
||||
* Both the source and the target are backing file
|
||||
*
|
||||
* In case 1 and 2, neither the source nor the target is the backing file.
|
||||
* In case 3, we will block the top BDS, so there is only one block job
|
||||
* for the top BDS and its backing chain.
|
||||
*/
|
||||
bdrv_op_unblock(backing_hd, BLOCK_OP_TYPE_BACKUP_SOURCE,
|
||||
bs->backing_blocker);
|
||||
bdrv_op_unblock(backing_hd, BLOCK_OP_TYPE_BACKUP_TARGET,
|
||||
bs->backing_blocker);
|
||||
out:
|
||||
bdrv_refresh_limits(bs, NULL);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user