From e0ef76a77b6d5ecbe8d651c37c9ed49a140149091e06eb467223d0844578b74f Mon Sep 17 00:00:00 2001 From: James Fehlig Date: Fri, 8 Aug 2014 15:04:43 +0000 Subject: [PATCH] Accepting request 243931 from home:cyliu:branches:Virtualization - bnc#820399 - virsh blockcopy should refuse identical device blockcopy-check-dst-identical-device.patch OBS-URL: https://build.opensuse.org/request/show/243931 OBS-URL: https://build.opensuse.org/package/show/Virtualization/libvirt?expand=0&rev=396 --- blockcopy-check-dst-identical-device.patch | 31 ++++++++++++++++++++++ libvirt.changes | 6 +++++ libvirt.spec | 2 ++ 3 files changed, 39 insertions(+) create mode 100644 blockcopy-check-dst-identical-device.patch diff --git a/blockcopy-check-dst-identical-device.patch b/blockcopy-check-dst-identical-device.patch new file mode 100644 index 0000000..cd70b8e --- /dev/null +++ b/blockcopy-check-dst-identical-device.patch @@ -0,0 +1,31 @@ +From 475b272c126d53f3985860422dc96b01b470423e Mon Sep 17 00:00:00 2001 +From: Chunyan Liu +Date: Tue, 29 Jul 2014 17:31:28 +0800 +Subject: [PATCH] blockcopy: check dst = identical device + +Check whether dst is the same device as source, if yes, report +error and exit. + +Signed-off-by: Chunyan Liu +--- + src/qemu/qemu_driver.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +Index: libvirt-1.2.5/src/qemu/qemu_driver.c +=================================================================== +--- libvirt-1.2.5.orig/src/qemu/qemu_driver.c ++++ libvirt-1.2.5/src/qemu/qemu_driver.c +@@ -15263,6 +15263,13 @@ qemuDomainBlockCopy(virDomainObjPtr vm, + } + + /* Prepare the destination file. */ ++ if (STREQ_NULLABLE(realpath(disk->src->path, NULL), realpath(dest, NULL))) { ++ virReportError(VIR_ERR_INVALID_ARG, ++ _("destination '%s' is the same as disk '%s' source"), ++ dest, path); ++ goto endjob; ++ } ++ + if (stat(dest, &st) < 0) { + if (errno != ENOENT) { + virReportSystemError(errno, _("unable to stat for disk %s: %s"), diff --git a/libvirt.changes b/libvirt.changes index 5885e4e..187b44e 100644 --- a/libvirt.changes +++ b/libvirt.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Mon Aug 8 03:23:10 UTC 2014 - cyliu@suse.com + +- bnc#820399 - virsh blockcopy should refuse identical device + blockcopy-check-dst-identical-device.patch + ------------------------------------------------------------------- Mon Aug 4 09:32:57 MDT 2014 - jfehlig@suse.com diff --git a/libvirt.spec b/libvirt.spec index d7abf3f..28b8ded 100644 --- a/libvirt.spec +++ b/libvirt.spec @@ -431,6 +431,7 @@ Source99: baselibs.conf # Need to go upstream Patch100: xen-name-for-devid.patch Patch101: xen-pv-cdrom.patch +Patch102: blockcopy-check-dst-identical-device.patch # Our patches Patch200: libvirtd-defaults.patch Patch201: libvirtd-init-script.patch @@ -944,6 +945,7 @@ namespaces. %setup -q %patch100 -p1 %patch101 -p1 +%patch102 -p1 %patch200 -p1 %patch201 -p1 %patch202 -p1