From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45489) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b8ifG-00040z-8s for qemu-devel@nongnu.org; Fri, 03 Jun 2016 02:33:03 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1b8ifE-0008HJ-D1 for qemu-devel@nongnu.org; Fri, 03 Jun 2016 02:33:01 -0400 Date: Fri, 3 Jun 2016 14:32:50 +0800 From: Fam Zheng Message-ID: <20160603063250.GJ29298@ad.usersys.redhat.com> References: <1463470536-8981-1-git-send-email-famz@redhat.com> <1463470536-8981-19-git-send-email-famz@redhat.com> <9bb99d99-adeb-7d4c-8367-8f093338141c@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <9bb99d99-adeb-7d4c-8367-8f093338141c@redhat.com> Subject: Re: [Qemu-devel] [PATCH v5 18/27] mirror: Disable image locking on target backing chain List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Max Reitz Cc: qemu-devel@nongnu.org, Kevin Wolf , Jeff Cody , Markus Armbruster , Eric Blake , John Snow , qemu-block@nongnu.org, berrange@redhat.com, pbonzini@redhat.com, den@openvz.org, stefanha@redhat.com On Tue, 05/24 20:20, Max Reitz wrote: > 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? BDRV_O_NO_BACKING is cleared in mirror_complete where the backing image is opened, we cannot use lock there as the backing is already open rw as source. Fam > > Max > > > Later we can update completion code to lock it after the replaced node > > has dropped its lock. > > > > Signed-off-by: Fam Zheng > > --- > > 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) { > > > >