As a very special case, in sync=none mode, the source, as the backing image of the target, will be RO opened again, which is not accepted by image locking because the first open could be exclusive.
Signed-off-by: Fam Zheng <f...@redhat.com> --- blockdev.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/blockdev.c b/blockdev.c index 0784c4a..250e3d2 100644 --- a/blockdev.c +++ b/blockdev.c @@ -3252,6 +3252,11 @@ static void do_drive_backup(const char *device, const char *target, } } if (sync == MIRROR_SYNC_MODE_NONE) { + /* XXX: bs will be open second time as the backing file of target, + * disable image locking. Once block layer allows sharing backing BDS, + * Change below to BDRV_O_NO_BACKING and assign it after bdrv_open(). + * */ + flags |= BDRV_O_NO_LOCK; source = bs; } -- 2.8.2