From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51585) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VeLdV-00085W-4b for qemu-devel@nongnu.org; Thu, 07 Nov 2013 04:12:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VeLdP-0001qi-4s for qemu-devel@nongnu.org; Thu, 07 Nov 2013 04:12:21 -0500 Received: from mx1.redhat.com ([209.132.183.28]:31738) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VeLdO-0001qN-SA for qemu-devel@nongnu.org; Thu, 07 Nov 2013 04:12:15 -0500 Message-ID: <527B5955.6020303@redhat.com> Date: Thu, 07 Nov 2013 10:11:49 +0100 From: Max Reitz MIME-Version: 1.0 References: <1383763845-30340-1-git-send-email-mreitz@redhat.com> <527AFA03.8040402@linux.vnet.ibm.com> In-Reply-To: <527AFA03.8040402@linux.vnet.ibm.com> Content-Type: text/plain; charset=GB2312 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH v3 0/2] block/drive-mirror: Check for NULL backing_hd List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Wenchao Xia , qemu-devel@nongnu.org Cc: Kevin Wolf , Paolo Bonzini , Fam Zheng , Stefan Hajnoczi On 07.11.2013 03:25, Wenchao Xia wrote: > =D3=DA 2013/11/7 2:50, Max Reitz =D0=B4=B5=C0: >> It should be possible to execute the QMP "drive-mirror" command in >> "none" sync mode and "absolute-paths" mode even for block devices >> lacking a backing file. >> >> "absolute-paths" does in fact not require a backing file to be present= , >> as can be seen from the "top" sync mode code path. "top" basically >> states that the device should indeed have a backing file - however, th= e >> current code catches the case if it doesn't and then simply treats it = as >> "full" sync mode, creating a target image without a backing file (in >> "absolute-paths" mode). Thus, "absolute-paths" does not imply the targ= et >> file must indeed have a backing file. >> >> Therefore, the target file may be left unbacked in case of "none" sync >> mode as well, if the specified device is not backed either. Currently, >> qemu will crash trying to dereference the backing file pointer since i= t >> assumes that it will always be non-NULL in that case ("none" with >> "absolute-paths"). >> >> The first patch in this series adds a check whether the specified bloc= k >> device is backed or not (creating an unbacked target image, if require= d); >> the second patch adds a test case for mirroring unbacked block devices. >> >> v2: >> - patch 1: Reuse an already existing codepath to create an unbacked >> target image instead of introducing a new one (based on >> Fam's comment). >> - patch 2: Incorporated test case into 041 instead of creating a new >> file (according to Xia's and Paolo's comments). >> >> >> Max Reitz (2): >> block/drive-mirror: Check for NULL backing_hd >> qemu-iotests: Extend 041 for unbacked mirroring >> >> blockdev.c | 4 +++- >> tests/qemu-iotests/041 | 25 +++++++++++++++++++++++++ >> tests/qemu-iotests/041.out | 4 ++-- >> 3 files changed, 30 insertions(+), 3 deletions(-) >> > Reviewed-by: Wenchao Xia > > Should we change doc for NewImageMode in qapi-schema.json also? Probably, yes. I'll send a follow-up patch. Max