On 07.11.2013 03:25, Wenchao Xia wrote: > δΊ 2013/11/7 2:50, Max Reitz ει: >> 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, the >> 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 target >> 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 it >> 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 block >> device is backed or not (creating an unbacked target image, if required); >> 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 <xiaw...@linux.vnet.ibm.com> > > Should we change doc for NewImageMode in qapi-schema.json also?
Probably, yes. I'll send a follow-up patch. Max