On 17.05.2016 09:35, Fam Zheng wrote: > In sync=none the backing image of s->target is s->common.bs, which could > be exclusively locked, the image locking wouldn't work here.
Why is the backing image s->common.bs when the bdrv_open() call explicitly specifies BDRV_O_NO_BACKING? Max > Later we can update completion code to lock it after the replaced node > has dropped its lock. > > Signed-off-by: Fam Zheng <f...@redhat.com> > --- > blockdev.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/blockdev.c b/blockdev.c > index 250e3d2..3de54f0 100644 > --- a/blockdev.c > +++ b/blockdev.c > @@ -3626,6 +3626,12 @@ void qmp_drive_mirror(const char *device, const char > *target, > * file. > */ > target_bs = NULL; > + if (sync == MIRROR_SYNC_MODE_NONE) { > + flags |= BDRV_O_NO_LOCK; > + } > + /* TODO: in mirror complete, after target_bs is switched to and the > + * original BDS's lock is dropped, we should enable the lock on > target_bs. > + * */ > ret = bdrv_open(&target_bs, target, NULL, options, > flags | BDRV_O_NO_BACKING, &local_err); > if (ret < 0) { >
signature.asc
Description: OpenPGP digital signature