diff --git a/SOURCES/libvirt-Split-qemuDomainChrInsert-into-two-parts.patch b/SOURCES/libvirt-Split-qemuDomainChrInsert-into-two-parts.patch deleted file mode 100644 index 275ae32..0000000 --- a/SOURCES/libvirt-Split-qemuDomainChrInsert-into-two-parts.patch +++ /dev/null @@ -1,185 +0,0 @@ -From 8518fbb314727cbb3f747c20ef194df7cd1bdac3 Mon Sep 17 00:00:00 2001 -Message-Id: <8518fbb314727cbb3f747c20ef194df7cd1bdac3@dist-git> -From: =?UTF-8?q?J=C3=A1n=20Tomko?= -Date: Wed, 28 Jan 2015 12:25:11 +0100 -Subject: [PATCH] Split qemuDomainChrInsert into two parts -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -https://bugzilla.redhat.com/show_bug.cgi?id=1195155 - -Do the allocation first, then add the actual device. -The second part should never fail. This is good -for live hotplug where we don't want to remove the device -on OOM after the monitor command succeeded. - -The only change in behavior is that on failure, the -vmdef->consoles array is freed, not just the first console. - -(cherry picked from commit daf51be5f1b0f7b41c0813d43d6b66edfbe4f6d9) -Signed-off-by: Ján Tomko -Signed-off-by: Jiri Denemark ---- - src/conf/domain_conf.c | 18 +++++++++++++--- - src/conf/domain_conf.h | 7 +++++-- - src/libvirt_private.syms | 3 ++- - src/qemu/qemu_hotplug.c | 54 +++++++++++++++++++++++++++++++++++++++++------- - 4 files changed, 68 insertions(+), 14 deletions(-) - -diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c -index fed87f0..9bfffd0 100644 ---- a/src/conf/domain_conf.c -+++ b/src/conf/domain_conf.c -@@ -11529,15 +11529,27 @@ virDomainChrGetDomainPtrs(const virDomainDef *vmdef, - - - int --virDomainChrInsert(virDomainDefPtr vmdef, -- virDomainChrDefPtr chr) -+virDomainChrPreAlloc(virDomainDefPtr vmdef, -+ virDomainChrDefPtr chr) - { - virDomainChrDefPtr **arrPtr = NULL; - size_t *cntPtr = NULL; - - virDomainChrGetDomainPtrsInternal(vmdef, chr->deviceType, &arrPtr, &cntPtr); - -- return VIR_APPEND_ELEMENT(*arrPtr, *cntPtr, chr); -+ return VIR_REALLOC_N(*arrPtr, *cntPtr + 1); -+} -+ -+void -+virDomainChrInsertPreAlloced(virDomainDefPtr vmdef, -+ virDomainChrDefPtr chr) -+{ -+ virDomainChrDefPtr **arrPtr = NULL; -+ size_t *cntPtr = NULL; -+ -+ virDomainChrGetDomainPtrsInternal(vmdef, chr->deviceType, &arrPtr, &cntPtr); -+ -+ ignore_value(VIR_APPEND_ELEMENT_INPLACE(*arrPtr, *cntPtr, chr)); - } - - virDomainChrDefPtr -diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h -index b912845..1436eb8 100644 ---- a/src/conf/domain_conf.h -+++ b/src/conf/domain_conf.h -@@ -2543,8 +2543,11 @@ bool - virDomainChrEquals(virDomainChrDefPtr src, - virDomainChrDefPtr tgt); - int --virDomainChrInsert(virDomainDefPtr vmdef, -- virDomainChrDefPtr chr); -+virDomainChrPreAlloc(virDomainDefPtr vmdef, -+ virDomainChrDefPtr chr); -+void -+virDomainChrInsertPreAlloced(virDomainDefPtr vmdef, -+ virDomainChrDefPtr chr); - virDomainChrDefPtr - virDomainChrRemove(virDomainDefPtr vmdef, - virDomainChrDefPtr chr); -diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms -index 325a912..18c715a 100644 ---- a/src/libvirt_private.syms -+++ b/src/libvirt_private.syms -@@ -153,7 +153,8 @@ virDomainChrDefNew; - virDomainChrEquals; - virDomainChrFind; - virDomainChrGetDomainPtrs; --virDomainChrInsert; -+virDomainChrInsertPreAlloced; -+virDomainChrPreAlloc; - virDomainChrRemove; - virDomainChrSerialTargetTypeFromString; - virDomainChrSerialTargetTypeToString; -diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c -index 8a3eb27..00ce77f 100644 ---- a/src/qemu/qemu_hotplug.c -+++ b/src/qemu/qemu_hotplug.c -@@ -1390,9 +1390,9 @@ int qemuDomainAttachRedirdevDevice(virQEMUDriverPtr driver, - - } - --int --qemuDomainChrInsert(virDomainDefPtr vmdef, -- virDomainChrDefPtr chr) -+static int -+qemuDomainChrPreInsert(virDomainDefPtr vmdef, -+ virDomainChrDefPtr chr) - { - if (chr->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE && - chr->targetType == VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_SERIAL) { -@@ -1407,25 +1407,63 @@ qemuDomainChrInsert(virDomainDefPtr vmdef, - return -1; - } - -- if (virDomainChrInsert(vmdef, chr) < 0) -+ if (virDomainChrPreAlloc(vmdef, chr) < 0) - return -1; - - /* Due to some crazy backcompat stuff, the first serial device is an alias - * to the first console too. If this is the case, the definition must be - * duplicated as first console device. */ -- if (vmdef->nserials == 1 && vmdef->nconsoles == 0) { -- if ((!vmdef->consoles && VIR_ALLOC(vmdef->consoles) < 0) || -- VIR_ALLOC(vmdef->consoles[0]) < 0) { -- virDomainChrRemove(vmdef, chr); -+ if (vmdef->nserials == 0 && vmdef->nconsoles == 0 && -+ chr->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL) { -+ if (!vmdef->consoles && VIR_ALLOC(vmdef->consoles) < 0) -+ return -1; -+ -+ if (VIR_ALLOC(vmdef->consoles[0]) < 0) { -+ VIR_FREE(vmdef->consoles); - return -1; - } -+ vmdef->nconsoles++; -+ } -+ return 0; -+} -+ -+static void -+qemuDomainChrInsertPreAlloced(virDomainDefPtr vmdef, -+ virDomainChrDefPtr chr) -+{ -+ virDomainChrInsertPreAlloced(vmdef, chr); -+ if (vmdef->nserials == 1 && vmdef->nconsoles == 0 && -+ chr->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL) { - vmdef->nconsoles = 1; - - /* Create an console alias for the serial port */ - vmdef->consoles[0]->deviceType = VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE; - vmdef->consoles[0]->targetType = VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_SERIAL; - } -+} - -+static void -+qemuDomainChrInsertPreAllocCleanup(virDomainDefPtr vmdef, -+ virDomainChrDefPtr chr) -+{ -+ /* Remove the stub console added by qemuDomainChrPreInsert */ -+ if (vmdef->nserials == 0 && vmdef->nconsoles == 1 && -+ chr->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL) { -+ VIR_FREE(vmdef->consoles[0]); -+ VIR_FREE(vmdef->consoles); -+ vmdef->nconsoles = 0; -+ } -+} -+ -+int -+qemuDomainChrInsert(virDomainDefPtr vmdef, -+ virDomainChrDefPtr chr) -+{ -+ if (qemuDomainChrPreInsert(vmdef, chr) < 0) { -+ qemuDomainChrInsertPreAllocCleanup(vmdef, chr); -+ return -1; -+ } -+ qemuDomainChrInsertPreAlloced(vmdef, chr); - return 0; - } - --- -2.3.0 - diff --git a/SOURCES/libvirt-blockcopy-allow-block-device-destination.patch b/SOURCES/libvirt-blockcopy-allow-block-device-destination.patch deleted file mode 100644 index a6a25b7..0000000 --- a/SOURCES/libvirt-blockcopy-allow-block-device-destination.patch +++ /dev/null @@ -1,234 +0,0 @@ -From babfc1d48c3a0f83592fa501b609fd839ff1a51b Mon Sep 17 00:00:00 2001 -Message-Id: -From: Eric Blake -Date: Tue, 24 Feb 2015 11:59:52 +0100 -Subject: [PATCH] blockcopy: allow block device destination - -https://bugzilla.redhat.com/show_bug.cgi?id=1196066 - -To date, anyone performing a block copy and pivot ends up with -the destination being treated as . While this -works for data access for a block device, it has at least one -noticeable shortcoming: virDomainGetBlockInfo() reports allocation -differently for block devices visited as files (the size of the -device) than for block devices visited as -(the maximum sector used, as reported by qemu); and this difference -is significant when trying to manage qcow2 format on block devices -that can be grown as needed. - -Of course, the more powerful virDomainBlockCopy() API can already -express the ability to set the type. But a new API can't -be backported, while a new flag to an existing API can; and it is -also rather inconvenient to have to resort to the full power of -generating XML when just adding a flag to the older call will do -the trick. So this patch enhances blockcopy to let the user flag -when the resulting XML after the copy must list the device as -type='block'. - -* include/libvirt/libvirt.h.in (VIR_DOMAIN_BLOCK_REBASE_COPY_DEV): -New flag. -* src/libvirt.c (virDomainBlockRebase): Document it. -* tools/virsh-domain.c (opts_block_copy, blockJobImpl): Add ---blockdev option. -* tools/virsh.pod (blockcopy): Document it. -* src/qemu/qemu_driver.c (qemuDomainBlockRebase): Allow new flag. -(qemuDomainBlockCopy): Remember the flag, and make sure it is only -used on actual block devices. -* tests/qemuxml2argvdata/qemuxml2argv-disk-mirror.xml: Test it. - -Signed-off-by: Eric Blake -(cherry picked from commit b7e73585a8d96677695a52bafb156f26cbd48fb5) -Signed-off-by: Jiri Denemark ---- - include/libvirt/libvirt.h.in | 2 ++ - src/libvirt.c | 8 +++-- - src/qemu/qemu_driver.c | 36 ++++++++++++++-------- - .../qemuxml2argvdata/qemuxml2argv-disk-mirror.xml | 4 +-- - tools/virsh-domain.c | 6 ++++ - tools/virsh.pod | 7 +++-- - 6 files changed, 45 insertions(+), 18 deletions(-) - -diff --git a/include/libvirt/libvirt.h.in b/include/libvirt/libvirt.h.in -index 94de8a6..e086c8f 100644 ---- a/include/libvirt/libvirt.h.in -+++ b/include/libvirt/libvirt.h.in -@@ -2638,6 +2638,8 @@ typedef enum { - VIR_DOMAIN_BLOCK_REBASE_RELATIVE = 1 << 4, /* Keep backing chain - referenced using relative - names */ -+ VIR_DOMAIN_BLOCK_REBASE_COPY_DEV = 1 << 5, /* Treat destination as block -+ device instead of file */ - } virDomainBlockRebaseFlags; - - int virDomainBlockRebase(virDomainPtr dom, const char *disk, -diff --git a/src/libvirt.c b/src/libvirt.c -index 5315881..e1c02dc 100644 ---- a/src/libvirt.c -+++ b/src/libvirt.c -@@ -19891,7 +19891,10 @@ virDomainBlockPull(virDomainPtr dom, const char *disk, - * pre-create files with relative backing file names, rather than the default - * of absolute backing file names; as a security precaution, you should - * generally only use reuse_ext with the shallow flag and a non-raw -- * destination file. -+ * destination file. By default, the copy destination will be treated as -+ * type='file', but using VIR_DOMAIN_BLOCK_REBASE_COPY_DEV treats the -+ * destination as type='block' (affecting how virDomainGetBlockInfo() will -+ * report allocation after pivoting). - * - * A copy job has two parts; in the first phase, the @bandwidth parameter - * affects how fast the source is pulled into the destination, and the job -@@ -19966,7 +19969,8 @@ virDomainBlockRebase(virDomainPtr dom, const char *disk, - virCheckNonNullArgGoto(base, error); - } else if (flags & (VIR_DOMAIN_BLOCK_REBASE_SHALLOW | - VIR_DOMAIN_BLOCK_REBASE_REUSE_EXT | -- VIR_DOMAIN_BLOCK_REBASE_COPY_RAW)) { -+ VIR_DOMAIN_BLOCK_REBASE_COPY_RAW | -+ VIR_DOMAIN_BLOCK_REBASE_COPY_DEV)) { - virReportInvalidArg(flags, - _("use of flags in %s requires a copy job"), - __FUNCTION__); -diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c -index 162e039..c25c5ac 100644 ---- a/src/qemu/qemu_driver.c -+++ b/src/qemu/qemu_driver.c -@@ -15781,7 +15781,8 @@ qemuDomainBlockCopy(virDomainObjPtr vm, - - /* Preliminaries: find the disk we are editing, sanity checks */ - virCheckFlags(VIR_DOMAIN_BLOCK_REBASE_SHALLOW | -- VIR_DOMAIN_BLOCK_REBASE_REUSE_EXT, -1); -+ VIR_DOMAIN_BLOCK_REBASE_REUSE_EXT | -+ VIR_DOMAIN_BLOCK_REBASE_COPY_DEV, -1); - - priv = vm->privateData; - cfg = virQEMUDriverGetConfig(driver); -@@ -15842,25 +15843,34 @@ qemuDomainBlockCopy(virDomainObjPtr vm, - virReportSystemError(errno, _("unable to stat for disk %s: %s"), - disk->dst, dest); - goto endjob; -- } else if (flags & VIR_DOMAIN_BLOCK_REBASE_REUSE_EXT) { -+ } else if (flags & (VIR_DOMAIN_BLOCK_REBASE_REUSE_EXT | -+ VIR_DOMAIN_BLOCK_REBASE_COPY_DEV)) { - virReportSystemError(errno, - _("missing destination file for disk %s: %s"), - disk->dst, dest); - goto endjob; - } -- } else if (!S_ISBLK(st.st_mode) && st.st_size && -- !(flags & VIR_DOMAIN_BLOCK_REBASE_REUSE_EXT)) { -- virReportError(VIR_ERR_CONFIG_UNSUPPORTED, -- _("external destination file for disk %s already " -- "exists and is not a block device: %s"), -- disk->dst, dest); -- goto endjob; -+ } else if (!S_ISBLK(st.st_mode)) { -+ if (st.st_size && !(flags & VIR_DOMAIN_BLOCK_REBASE_REUSE_EXT)) { -+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, -+ _("external destination file for disk %s already " -+ "exists and is not a block device: %s"), -+ disk->dst, dest); -+ goto endjob; -+ } -+ if (flags & VIR_DOMAIN_BLOCK_REBASE_COPY_DEV) { -+ virReportError(VIR_ERR_INVALID_ARG, -+ _("blockdev flag requested for disk %s, but file " -+ "'%s' is not a block device"), disk->dst, dest); -+ goto endjob; -+ } - } - - if (VIR_ALLOC(mirror) < 0) - goto endjob; - /* XXX Allow non-file mirror destinations */ -- mirror->type = VIR_STORAGE_TYPE_FILE; -+ mirror->type = flags & VIR_DOMAIN_BLOCK_REBASE_COPY_DEV ? -+ VIR_STORAGE_TYPE_BLOCK : VIR_STORAGE_TYPE_FILE; - - if (format) { - if ((mirror->format = virStorageFileFormatTypeFromString(format)) <= 0) { -@@ -15954,7 +15964,8 @@ qemuDomainBlockRebase(virDomainPtr dom, const char *path, const char *base, - VIR_DOMAIN_BLOCK_REBASE_REUSE_EXT | - VIR_DOMAIN_BLOCK_REBASE_COPY | - VIR_DOMAIN_BLOCK_REBASE_COPY_RAW | -- VIR_DOMAIN_BLOCK_REBASE_RELATIVE, -1); -+ VIR_DOMAIN_BLOCK_REBASE_RELATIVE | -+ VIR_DOMAIN_BLOCK_REBASE_COPY_DEV, -1); - - if (!(vm = qemuDomObjFromDomain(dom))) - return -1; -@@ -15982,7 +15993,8 @@ qemuDomainBlockRebase(virDomainPtr dom, const char *path, const char *base, - } - - flags &= (VIR_DOMAIN_BLOCK_REBASE_SHALLOW | -- VIR_DOMAIN_BLOCK_REBASE_REUSE_EXT); -+ VIR_DOMAIN_BLOCK_REBASE_REUSE_EXT | -+ VIR_DOMAIN_BLOCK_REBASE_COPY_DEV); - ret = qemuDomainBlockCopy(vm, dom->conn, path, base, format, - bandwidth, flags); - vm = NULL; -diff --git a/tests/qemuxml2argvdata/qemuxml2argv-disk-mirror.xml b/tests/qemuxml2argvdata/qemuxml2argv-disk-mirror.xml -index 46f2a3e..7495a45 100644 ---- a/tests/qemuxml2argvdata/qemuxml2argv-disk-mirror.xml -+++ b/tests/qemuxml2argvdata/qemuxml2argv-disk-mirror.xml -@@ -17,8 +17,8 @@ - - - -- -- -+ -+ - - -
-diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c -index 28f5319..8f79b55 100644 ---- a/tools/virsh-domain.c -+++ b/tools/virsh-domain.c -@@ -1550,6 +1550,8 @@ blockJobImpl(vshControl *ctl, const vshCmd *cmd, - flags |= VIR_DOMAIN_BLOCK_REBASE_REUSE_EXT; - if (vshCommandOptBool(cmd, "raw")) - flags |= VIR_DOMAIN_BLOCK_REBASE_COPY_RAW; -+ if (vshCommandOptBool(cmd, "blockdev")) -+ flags |= VIR_DOMAIN_BLOCK_REBASE_COPY_DEV; - if (vshCommandOptStringReq(ctl, cmd, "dest", &base) < 0) - goto cleanup; - ret = virDomainBlockRebase(dom, path, base, bandwidth, flags); -@@ -1857,6 +1859,10 @@ static const vshCmdOptDef opts_block_copy[] = { - .type = VSH_OT_BOOL, - .help = N_("use raw destination file") - }, -+ {.name = "blockdev", -+ .type = VSH_OT_BOOL, -+ .help = N_("copy destination is block device instead of regular file") -+ }, - {.name = "wait", - .type = VSH_OT_BOOL, - .help = N_("wait for job to reach mirroring phase") -diff --git a/tools/virsh.pod b/tools/virsh.pod -index c5b176a..46ef01d 100644 ---- a/tools/virsh.pod -+++ b/tools/virsh.pod -@@ -959,7 +959,8 @@ unlimited. The hypervisor can choose whether to reject the value or - convert it to the maximum value allowed. - - =item B I I I [I] [I<--shallow>] --[I<--reuse-external>] [I<--raw>] [I<--wait> [I<--async>] [I<--verbose>]] -+[I<--reuse-external>] [I<--raw>] [I<--blockdev>] -+[I<--wait> [I<--async>] [I<--verbose>]] - [{I<--pivot> | I<--finish>}] [I<--timeout> B] - - Copy a disk backing image chain to I. By default, this command -@@ -977,7 +978,9 @@ The format of the destination is determined by the first match in the - following list: if I<--raw> is specified, it will be raw; if - I<--reuse-external> is specified, the existing destination is probed - for a format; and in all other cases, the destination format will --match the source format. -+match the source format. The destination is treated as a regular -+file unless I<--blockdev> is used to signal that it is a block -+device. - - By default, the copy job runs in the background, and consists of two - phases. Initially, the job must copy all data from the source, and --- -2.3.0 - diff --git a/SOURCES/libvirt-blockjob-shuffle-block-rebase-code.patch b/SOURCES/libvirt-blockjob-shuffle-block-rebase-code.patch deleted file mode 100644 index 0071039..0000000 --- a/SOURCES/libvirt-blockjob-shuffle-block-rebase-code.patch +++ /dev/null @@ -1,107 +0,0 @@ -From 61fbb57d74cc44594b5bcb184c350ab18b963291 Mon Sep 17 00:00:00 2001 -Message-Id: <61fbb57d74cc44594b5bcb184c350ab18b963291@dist-git> -From: Eric Blake -Date: Tue, 24 Feb 2015 11:59:51 +0100 -Subject: [PATCH] blockjob: shuffle block rebase code - -https://bugzilla.redhat.com/show_bug.cgi?id=1196066 - -The existing virDomainBlockRebase code rejected the combination of -_RELATIVE and _COPY flags, but only by accident. It makes sense -to add support for the combination someday, at least for the case -of _SHALLOW and not _REUSE_EXT; but to implement it, libvirt would -have to pre-create the file with a relative backing name, and I'm -not ready to code that in yet. - -Meanwhile, the code to forward on to the block copy code is getting -longer, and reorganizing the function to have the block pull done -early makes it easier to add even more block copy prep code. - -This patch should have no semantic difference other than the quality -of the error message on the unsupported flag combination. Pre-patch: - -error: unsupported flags (0x10) in function qemuDomainBlockCopy - -Post-patch: - -error: argument unsupported: Relative backing during copy not supported yet - -* src/qemu/qemu_driver.c (qemuDomainBlockRebase): Reorder code, -and improve error message of relative copy. - -Signed-off-by: Eric Blake -(cherry picked from commit 02d2bd7d91c200d1ea1a5b3f78c8b41720cea832) -Signed-off-by: Jiri Denemark ---- - src/qemu/qemu_driver.c | 47 ++++++++++++++++++++++++++++++++--------------- - 1 file changed, 32 insertions(+), 15 deletions(-) - -diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c -index f3b909f..162e039 100644 ---- a/src/qemu/qemu_driver.c -+++ b/src/qemu/qemu_driver.c -@@ -15947,6 +15947,8 @@ qemuDomainBlockRebase(virDomainPtr dom, const char *path, const char *base, - unsigned long bandwidth, unsigned int flags) - { - virDomainObjPtr vm; -+ const char *format = NULL; -+ int ret = -1; - - virCheckFlags(VIR_DOMAIN_BLOCK_REBASE_SHALLOW | - VIR_DOMAIN_BLOCK_REBASE_REUSE_EXT | -@@ -15957,22 +15959,37 @@ qemuDomainBlockRebase(virDomainPtr dom, const char *path, const char *base, - if (!(vm = qemuDomObjFromDomain(dom))) - return -1; - -- if (virDomainBlockRebaseEnsureACL(dom->conn, vm->def) < 0) { -+ if (virDomainBlockRebaseEnsureACL(dom->conn, vm->def) < 0) -+ goto cleanup; -+ -+ /* For normal rebase (enhanced blockpull), the common code handles -+ * everything, including vm cleanup. */ -+ if (!(flags & VIR_DOMAIN_BLOCK_REBASE_COPY)) -+ return qemuDomainBlockJobImpl(vm, dom->conn, path, base, bandwidth, -+ NULL, BLOCK_JOB_PULL, flags); -+ -+ /* If we got here, we are doing a block copy rebase. */ -+ if (flags & VIR_DOMAIN_BLOCK_REBASE_COPY_RAW) -+ format = "raw"; -+ -+ /* XXX: If we are doing a shallow copy but not reusing an external -+ * file, we should attempt to pre-create the destination with a -+ * relative backing chain instead of qemu's default of absolute */ -+ if (flags & VIR_DOMAIN_BLOCK_REBASE_RELATIVE) { -+ virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s", -+ _("Relative backing during copy not supported yet")); -+ goto cleanup; -+ } -+ -+ flags &= (VIR_DOMAIN_BLOCK_REBASE_SHALLOW | -+ VIR_DOMAIN_BLOCK_REBASE_REUSE_EXT); -+ ret = qemuDomainBlockCopy(vm, dom->conn, path, base, format, -+ bandwidth, flags); -+ vm = NULL; -+ cleanup: -+ if (vm) - virObjectUnlock(vm); -- return -1; -- } -- -- if (flags & VIR_DOMAIN_BLOCK_REBASE_COPY) { -- const char *format = NULL; -- if (flags & VIR_DOMAIN_BLOCK_REBASE_COPY_RAW) -- format = "raw"; -- flags &= ~(VIR_DOMAIN_BLOCK_REBASE_COPY | -- VIR_DOMAIN_BLOCK_REBASE_COPY_RAW); -- return qemuDomainBlockCopy(vm, dom->conn, path, base, format, bandwidth, flags); -- } -- -- return qemuDomainBlockJobImpl(vm, dom->conn, path, base, bandwidth, NULL, -- BLOCK_JOB_PULL, flags); -+ return ret; - } - - static int --- -2.3.0 - diff --git a/SOURCES/libvirt-hotplug-only-add-a-chardev-to-vmdef-after-monitor-call.patch b/SOURCES/libvirt-hotplug-only-add-a-chardev-to-vmdef-after-monitor-call.patch deleted file mode 100644 index 4d1287f..0000000 --- a/SOURCES/libvirt-hotplug-only-add-a-chardev-to-vmdef-after-monitor-call.patch +++ /dev/null @@ -1,103 +0,0 @@ -From 7854f0d28b2bd526ae27777aa6c97f0ab3443523 Mon Sep 17 00:00:00 2001 -Message-Id: <7854f0d28b2bd526ae27777aa6c97f0ab3443523@dist-git> -From: =?UTF-8?q?J=C3=A1n=20Tomko?= -Date: Wed, 28 Jan 2015 12:25:12 +0100 -Subject: [PATCH] hotplug: only add a chardev to vmdef after monitor call -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -https://bugzilla.redhat.com/show_bug.cgi?id=1195155 - -This way the device is in vmdef only if ret = 0 and the caller -(qemuDomainAttachDeviceFlags) does not free it. - -Otherwise it might get double freed by qemuProcessStop -and qemuDomainAttachDeviceFlags if the domain crashed -in monitor after we've added it to vm->def. - -(cherry picked from commit 21e0e8866e341da74e296ca3cf2d97812e847a66) -Signed-off-by: Ján Tomko -Signed-off-by: Jiri Denemark ---- - src/qemu/qemu_hotplug.c | 34 +++++++++++----------------------- - 1 file changed, 11 insertions(+), 23 deletions(-) - -diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c -index 00ce77f..89757bc 100644 ---- a/src/qemu/qemu_hotplug.c -+++ b/src/qemu/qemu_hotplug.c -@@ -1510,59 +1510,47 @@ int qemuDomainAttachChrDevice(virQEMUDriverPtr driver, - virDomainDefPtr vmdef = vm->def; - char *devstr = NULL; - char *charAlias = NULL; -- bool need_remove = false; - - if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_DEVICE)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("qemu does not support -device")); -- return ret; -+ goto cleanup; - } - - if (qemuAssignDeviceChrAlias(vmdef, chr, -1) < 0) -- return ret; -+ goto cleanup; - - if (qemuBuildChrDeviceStr(&devstr, vm->def, chr, priv->qemuCaps) < 0) -- return ret; -+ goto cleanup; - - if (virAsprintf(&charAlias, "char%s", chr->info.alias) < 0) - goto cleanup; - -- if (qemuDomainChrInsert(vmdef, chr) < 0) -+ if (qemuDomainChrPreInsert(vmdef, chr) < 0) - goto cleanup; -- need_remove = true; - - qemuDomainObjEnterMonitor(driver, vm); - if (qemuMonitorAttachCharDev(priv->mon, charAlias, &chr->source) < 0) { -- if (qemuDomainObjExitMonitor(driver, vm) < 0) { -- need_remove = false; -- ret = -1; -- goto cleanup; -- } -+ ignore_value(qemuDomainObjExitMonitor(driver, vm)); - goto audit; - } - - if (devstr && qemuMonitorAddDevice(priv->mon, devstr) < 0) { - /* detach associated chardev on error */ - qemuMonitorDetachCharDev(priv->mon, charAlias); -- if (qemuDomainObjExitMonitor(driver, vm) < 0) { -- need_remove = false; -- ret = -1; -- goto cleanup; -- } -+ ignore_value(qemuDomainObjExitMonitor(driver, vm)); - goto audit; - } -- if (qemuDomainObjExitMonitor(driver, vm) < 0) { -- need_remove = false; -- ret = -1; -- goto cleanup; -- } -+ if (qemuDomainObjExitMonitor(driver, vm) < 0) -+ goto audit; - -+ qemuDomainChrInsertPreAlloced(vm->def, chr); - ret = 0; - audit: - virDomainAuditChardev(vm, NULL, chr, "attach", ret == 0); - cleanup: -- if (ret < 0 && need_remove) -- qemuDomainChrRemove(vmdef, chr); -+ if (ret < 0 && virDomainObjIsActive(vm)) -+ qemuDomainChrInsertPreAllocCleanup(vm->def, chr); - VIR_FREE(charAlias); - VIR_FREE(devstr); - return ret; --- -2.3.0 - diff --git a/SOURCES/libvirt-qemuBuildNumaArgStr-Use-memory-backend-ram-more-wisely.patch b/SOURCES/libvirt-qemuBuildNumaArgStr-Use-memory-backend-ram-more-wisely.patch deleted file mode 100644 index bf83133..0000000 --- a/SOURCES/libvirt-qemuBuildNumaArgStr-Use-memory-backend-ram-more-wisely.patch +++ /dev/null @@ -1,248 +0,0 @@ -From c0af84c532e72d42a66059998ef7f03dcb0d6bd1 Mon Sep 17 00:00:00 2001 -Message-Id: -From: Michal Privoznik -Date: Mon, 23 Feb 2015 08:20:03 +0100 -Subject: [PATCH] qemuBuildNumaArgStr: Use memory-backend-ram more wisely - -RHEL-7.2: https://bugzilla.redhat.com/show_bug.cgi?id=1191567 -RHEL-7.1.z: https://bugzilla.redhat.com/show_bug.cgi?id=1194982 - -So, when building the '-numa' command line, the qemuBuildNumaArgStr() -function does quite a lot of checks to chose the best backend, or to -check if one is in fact needed. However, it returned that backend is -needed even for this little fella: - - - - - -This can be guaranteed via CGroups entirely, there's no need to use -memory-backend-ram to let qemu know where to get memory from. Well, as -long as there's no element, which explicitly requires the -backend. Long story short, we wouldn't have to care, as qemu works -either way. However, the problem is migration (as always). Previously, -libvirt would have started qemu with: - - -numa node,memory=X - -in this case and restricted memory placement in CGroups. Today, libvirt -creates more complicated command line: - - -object memory-backend-ram,id=ram-node0,size=X - -numa node,memdev=ram-node0 - -Again, one wouldn't find anything wrong with these two approaches. -Both work just fine. Unless you try to migrated from the older libvirt -into the newer one. These two approaches are, unfortunately, not -compatible. My suggestion is, in order to allow users to migrate, lets -use the older approach for as long as the newer one is not needed. - -Moreover, this partly cherry-picks -b92a0037103efc15639dee9562866dbaffe302fb too. Especially the tests, -which need to be fixed too. We can't mix the bare -numa and -memory-backend-ram on the command line. - -Signed-off-by: Michal Privoznik -(cherry picked from commit 7832fac84741d65e851dbdbfaf474785cbfdcf3c) -Signed-off-by: Michal Privoznik - -Conflicts: - src/qemu/qemu_command.c: The code is totally rewritten - upstream (esp. after memory hotplug). - tests/qemuxml2argvtest.c: Context, some tests were not - introduced yet. -Signed-off-by: Jiri Denemark ---- - src/qemu/qemu_command.c | 35 +++++++++++--------- - .../qemuxml2argv-cputune-numatune.args | 5 +++ - .../qemuxml2argv-cputune-numatune.xml | 37 ++++++++++++++++++++++ - .../qemuxml2argv-hugepages-pages3.args | 3 +- - .../qemuxml2argv-numatune-auto-prefer.args | 5 +++ - .../qemuxml2argv-numatune-memnode-no-memory.args | 3 +- - tests/qemuxml2argvtest.c | 6 ++++ - 7 files changed, 77 insertions(+), 17 deletions(-) - create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-cputune-numatune.args - create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-cputune-numatune.xml - create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-numatune-auto-prefer.args - -diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c -index db0c324..a9cb7a3 100644 ---- a/src/qemu/qemu_command.c -+++ b/src/qemu/qemu_command.c -@@ -6540,22 +6540,27 @@ qemuBuildNumaArgStr(virQEMUDriverConfigPtr cfg, - char *nodemask = NULL; - char *mem_path = NULL; - int ret = -1; -+ bool useNodemask = false; - -- if (virDomainNumatuneHasPerNodeBinding(def->numatune) && -- !(virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_RAM) || -- virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_FILE))) { -- virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", -- _("Per-node memory binding is not supported " -- "with this QEMU")); -- goto cleanup; -+ if (virDomainNumatuneHasPerNodeBinding(def->numatune)) { -+ if (!(virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_RAM) || -+ virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_FILE))) { -+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", -+ _("Per-node memory binding is not supported " -+ "with this QEMU")); -+ goto cleanup; -+ } -+ useNodemask = true; - } - -- if (def->mem.nhugepages && def->mem.hugepages[0].size && -- !virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_FILE)) { -- virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", -- _("huge pages per NUMA node are not " -- "supported with this QEMU")); -- goto cleanup; -+ if (def->mem.nhugepages && def->mem.hugepages[0].size) { -+ if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_FILE)) { -+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", -+ _("huge pages per NUMA node are not " -+ "supported with this QEMU")); -+ goto cleanup; -+ } -+ useNodemask = true; - } - - for (i = 0; i < def->mem.nhugepages; i++) { -@@ -6714,7 +6719,7 @@ qemuBuildNumaArgStr(virQEMUDriverConfigPtr cfg, - virBufferAsprintf(&buf, ",policy=%s", policy); - } - -- if (hugepage || nodemask) { -+ if (useNodemask) { - virCommandAddArg(cmd, "-object"); - virCommandAddArgBuffer(cmd, &buf); - } else { -@@ -6739,7 +6744,7 @@ qemuBuildNumaArgStr(virQEMUDriverConfigPtr cfg, - virBufferAdd(&buf, tmpmask, -1); - } - -- if (hugepage || nodemask) -+ if (useNodemask) - virBufferAsprintf(&buf, ",memdev=ram-node%zu", i); - else - virBufferAsprintf(&buf, ",mem=%d", cellmem); -diff --git a/tests/qemuxml2argvdata/qemuxml2argv-cputune-numatune.args b/tests/qemuxml2argvdata/qemuxml2argv-cputune-numatune.args -new file mode 100644 -index 0000000..481f72f ---- /dev/null -+++ b/tests/qemuxml2argvdata/qemuxml2argv-cputune-numatune.args -@@ -0,0 +1,5 @@ -+LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=none \ -+/usr/bin/qemu-system-x86_64 -S -M pc-q35-2.3 -m 128 \ -+-smp 2,maxcpus=6,sockets=6,cores=1,threads=1 \ -+-nographic -monitor unix:/tmp/test-monitor,server,nowait -no-acpi \ -+-boot c -net none -serial none -parallel none -diff --git a/tests/qemuxml2argvdata/qemuxml2argv-cputune-numatune.xml b/tests/qemuxml2argvdata/qemuxml2argv-cputune-numatune.xml -new file mode 100644 -index 0000000..01bbb3d ---- /dev/null -+++ b/tests/qemuxml2argvdata/qemuxml2argv-cputune-numatune.xml -@@ -0,0 +1,37 @@ -+ -+ dummy2 -+ 4d92ec27-9ebf-400b-ae91-20c71c647c19 -+ 131072 -+ 65536 -+ 6 -+ 2 -+ -+ -+ -+ -+ -+ -+ -+ -+ hvm -+ -+ -+ -+ destroy -+ restart -+ destroy -+ -+ /usr/bin/qemu-system-x86_64 -+ -+
-+ -+ -+ -+
-+ -+ -+
-+ -+ -+ -+ -diff --git a/tests/qemuxml2argvdata/qemuxml2argv-hugepages-pages3.args b/tests/qemuxml2argvdata/qemuxml2argv-hugepages-pages3.args -index f81947e..27b3f8e 100644 ---- a/tests/qemuxml2argvdata/qemuxml2argv-hugepages-pages3.args -+++ b/tests/qemuxml2argvdata/qemuxml2argv-hugepages-pages3.args -@@ -1,6 +1,7 @@ - LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=none \ - /usr/bin/qemu -S -M pc -m 1024 -smp 2 \ ---numa node,nodeid=0,cpus=0,mem=256 \ -+-object memory-backend-ram,size=256M,id=ram-node0 \ -+-numa node,nodeid=0,cpus=0,memdev=ram-node0 \ - -object memory-backend-file,prealloc=yes,\ - mem-path=/dev/hugepages1G/libvirt/qemu,size=768M,id=ram-node1 \ - -numa node,nodeid=1,cpus=1,memdev=ram-node1 \ -diff --git a/tests/qemuxml2argvdata/qemuxml2argv-numatune-auto-prefer.args b/tests/qemuxml2argvdata/qemuxml2argv-numatune-auto-prefer.args -new file mode 100644 -index 0000000..0b1b0f5 ---- /dev/null -+++ b/tests/qemuxml2argvdata/qemuxml2argv-numatune-auto-prefer.args -@@ -0,0 +1,5 @@ -+LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=none \ -+/usr/bin/kvm -S -M pc -m 64 -smp 1 \ -+-numa node,nodeid=0,cpus=0,mem=64 \ -+-nographic -monitor unix:/tmp/test-monitor,server,nowait \ -+-no-acpi -boot c -usb -net none -serial none -parallel none -diff --git a/tests/qemuxml2argvdata/qemuxml2argv-numatune-memnode-no-memory.args b/tests/qemuxml2argvdata/qemuxml2argv-numatune-memnode-no-memory.args -index 2addf97..b0e274c 100644 ---- a/tests/qemuxml2argvdata/qemuxml2argv-numatune-memnode-no-memory.args -+++ b/tests/qemuxml2argvdata/qemuxml2argv-numatune-memnode-no-memory.args -@@ -2,6 +2,7 @@ LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=none \ - /usr/bin/kvm -S -M pc -m 64 -smp 2 \ - -object memory-backend-ram,size=32M,id=ram-node0,host-nodes=3,policy=preferred \ - -numa node,nodeid=0,cpus=0,memdev=ram-node0 \ ---numa node,nodeid=1,cpus=1,mem=32 \ -+-object memory-backend-ram,size=32M,id=ram-node1 \ -+-numa node,nodeid=1,cpus=1,memdev=ram-node1 \ - -nographic -monitor unix:/tmp/test-monitor,server,nowait \ - -no-acpi -boot c -usb -net none -serial none -parallel none -diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c -index 98bb9ad..ee7397a 100644 ---- a/tests/qemuxml2argvtest.c -+++ b/tests/qemuxml2argvtest.c -@@ -1246,6 +1246,10 @@ mymain(void) - DO_TEST("blkiotune-device", QEMU_CAPS_NAME); - DO_TEST("cputune", QEMU_CAPS_NAME); - DO_TEST("cputune-zero-shares", QEMU_CAPS_NAME); -+ DO_TEST("cputune-numatune", QEMU_CAPS_SMP_TOPOLOGY, -+ QEMU_CAPS_KVM, -+ QEMU_CAPS_OBJECT_MEMORY_RAM, -+ QEMU_CAPS_OBJECT_MEMORY_FILE); - - DO_TEST("numatune-memory", NONE); - DO_TEST_PARSE_ERROR("numatune-memory-invalid-nodeset", NONE); -@@ -1256,6 +1260,8 @@ mymain(void) - DO_TEST_FAILURE("numatune-memnode-no-memory", NONE); - - DO_TEST("numatune-auto-nodeset-invalid", NONE); -+ DO_TEST("numatune-auto-prefer", QEMU_CAPS_OBJECT_MEMORY_RAM, -+ QEMU_CAPS_OBJECT_MEMORY_FILE); - DO_TEST_PARSE_ERROR("numatune-memnode-nocpu", NONE); - DO_TEST_PARSE_ERROR("numatune-memnodes-problematic", NONE); - DO_TEST("numad", NONE); --- -2.3.0 - diff --git a/SOURCES/libvirt-qemuxml2argvtest-Fake-response-from-numad.patch b/SOURCES/libvirt-qemuxml2argvtest-Fake-response-from-numad.patch deleted file mode 100644 index 400a421..0000000 --- a/SOURCES/libvirt-qemuxml2argvtest-Fake-response-from-numad.patch +++ /dev/null @@ -1,66 +0,0 @@ -From 4841f815fcefb0a2e8715808bb4038c89e3b3889 Mon Sep 17 00:00:00 2001 -Message-Id: <4841f815fcefb0a2e8715808bb4038c89e3b3889@dist-git> -From: Michal Privoznik -Date: Mon, 23 Feb 2015 08:20:02 +0100 -Subject: [PATCH] qemuxml2argvtest: Fake response from numad - -RHEL-7.2: https://bugzilla.redhat.com/show_bug.cgi?id=1191567 -RHEL-7.1.z: https://bugzilla.redhat.com/show_bug.cgi?id=1194982 - -Well, we can pretend that we've asked numad for its suggestion and let -qemu command line be built with that respect. Again, this alone has no -big value, but see later commits which build on the top of this. - -Signed-off-by: Michal Privoznik -(cherry picked from commit 38064806966c04d7cf7525cd78aa6f82bd09e6d0) -Signed-off-by: Michal Privoznik - -Conflicts: - tests/qemuxml2argvtest.c: Context, as f7afeddc is not - backported yet. -Signed-off-by: Jiri Denemark ---- - tests/qemuxml2argvtest.c | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) - -diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c -index 595b658..98bb9ad 100644 ---- a/tests/qemuxml2argvtest.c -+++ b/tests/qemuxml2argvtest.c -@@ -279,12 +279,16 @@ static int testCompareXMLToArgvFiles(const char *xml, - char *log = NULL; - virCommandPtr cmd = NULL; - size_t i; -+ virBitmapPtr nodeset = NULL; - - if (!(conn = virGetConnect())) - goto out; - conn->secretDriver = &fakeSecretDriver; - conn->storageDriver = &fakeStorageDriver; - -+ if (virBitmapParse("0-3", '\0', &nodeset, 4) < 0) -+ goto out; -+ - if (!(vmdef = virDomainDefParseFile(xml, driver.caps, driver.xmlopt, - QEMU_EXPECTED_VIRT_TYPES, - VIR_DOMAIN_XML_INACTIVE))) { -@@ -363,7 +367,7 @@ static int testCompareXMLToArgvFiles(const char *xml, - VIR_NETDEV_VPORT_PROFILE_OP_NO_OP, - &testCallbacks, false, - (flags & FLAG_FIPS), -- NULL))) { -+ nodeset))) { - if (!virtTestOOMActive() && - (flags & FLAG_EXPECT_FAILURE)) { - ret = 0; -@@ -416,6 +420,7 @@ static int testCompareXMLToArgvFiles(const char *xml, - virCommandFree(cmd); - virDomainDefFree(vmdef); - virObjectUnref(conn); -+ virBitmapFree(nodeset); - return ret; - } - --- -2.3.0 - diff --git a/SOURCES/libvirt-util-storage-Fix-parsing-of-nbd-URI-without-path.patch b/SOURCES/libvirt-util-storage-Fix-parsing-of-nbd-URI-without-path.patch deleted file mode 100644 index 790adba..0000000 --- a/SOURCES/libvirt-util-storage-Fix-parsing-of-nbd-URI-without-path.patch +++ /dev/null @@ -1,68 +0,0 @@ -From c0e6c7fa7cd8fb4bb4ee26552c7ab35352c47ed0 Mon Sep 17 00:00:00 2001 -Message-Id: -From: Peter Krempa -Date: Tue, 24 Feb 2015 10:32:21 +0100 -Subject: [PATCH] util: storage: Fix parsing of nbd:// URI without path - -https://bugzilla.redhat.com/show_bug.cgi?id=1195156 - -If a storage file would be backed with a NBD device without path -(nbd://localhost) libvirt would crash when parsing the backing path for -the disk as the URI structure's path element is NULL in such case but -the NBD parser would access it shamelessly. - -(cherry picked from commit fdb80ed4f6563928b9942a0d1450e0c725aa6c06) - - Conflicts: tests/virstoragetest.c - test case numbering refactor was - not backported and thus I - manually numbered this test as - 12.5 - -Signed-off-by: Jiri Denemark ---- - src/util/virstoragefile.c | 3 ++- - tests/virstoragetest.c | 14 ++++++++++++++ - 2 files changed, 16 insertions(+), 1 deletion(-) - -diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c -index 580ad20..3ab20a4 100644 ---- a/src/util/virstoragefile.c -+++ b/src/util/virstoragefile.c -@@ -2150,7 +2150,8 @@ virStorageSourceParseBackingURI(virStorageSourcePtr src, - /* XXX We currently don't support auth, so don't bother parsing it */ - - /* possibly skip the leading slash */ -- if (VIR_STRDUP(src->path, -+ if (uri->path && -+ VIR_STRDUP(src->path, - *uri->path == '/' ? uri->path + 1 : uri->path) < 0) - goto cleanup; - -diff --git a/tests/virstoragetest.c b/tests/virstoragetest.c -index 2601edc..fc37489 100644 ---- a/tests/virstoragetest.c -+++ b/tests/virstoragetest.c -@@ -870,6 +870,20 @@ mymain(void) - (&qcow2, &nbd2), EXP_PASS, - (&qcow2, &nbd2), ALLOW_PROBE | EXP_PASS); - -+ /* Rewrite qcow2 to use an nbd: protocol without path as backend */ -+ virCommandFree(cmd); -+ cmd = virCommandNewArgList(qemuimg, "rebase", "-u", "-f", "qcow2", -+ "-F", "raw", "-b", "nbd://example.org", -+ "qcow2", NULL); -+ if (virCommandRun(cmd, NULL) < 0) -+ ret = -1; -+ qcow2.expBackingStoreRaw = "nbd://example.org"; -+ -+ nbd2.path = NULL; -+ TEST_CHAIN(12.5, absqcow2, VIR_STORAGE_FILE_QCOW2, -+ (&qcow2, &nbd2), EXP_PASS, -+ (&qcow2, &nbd2), ALLOW_PROBE | EXP_PASS); -+ - /* qed file */ - testFileData qed = { - .expBackingStoreRaw = absraw, --- -2.3.0 - diff --git a/SPECS/libvirt.spec b/SPECS/libvirt.spec index afd8c68..48dc0e5 100644 --- a/SPECS/libvirt.spec +++ b/SPECS/libvirt.spec @@ -367,7 +367,7 @@ Summary: Library providing a simple virtualization API Name: libvirt Version: 1.2.8 -Release: 16%{?dist}.1%{?extra_release} +Release: 16%{?dist}%{?extra_release} License: LGPLv2+ Group: Development/Libraries BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root @@ -711,13 +711,6 @@ Patch330: libvirt-Fix-vmdef-usage-after-domain-crash-in-monitor-on-device-attach Patch331: libvirt-qemu-Add-missing-goto-error-in-qemuRestoreCgroupState.patch Patch332: libvirt-qemu-don-t-setup-cpuset.mems-if-memory-mode-in-numatune-is-not-strict.patch Patch333: libvirt-lxc-don-t-setup-cpuset.mems-if-memory-mode-in-numatune-is-not-strict.patch -Patch334: libvirt-qemuxml2argvtest-Fake-response-from-numad.patch -Patch335: libvirt-qemuBuildNumaArgStr-Use-memory-backend-ram-more-wisely.patch -Patch336: libvirt-util-storage-Fix-parsing-of-nbd-URI-without-path.patch -Patch337: libvirt-Split-qemuDomainChrInsert-into-two-parts.patch -Patch338: libvirt-hotplug-only-add-a-chardev-to-vmdef-after-monitor-call.patch -Patch339: libvirt-blockjob-shuffle-block-rebase-code.patch -Patch340: libvirt-blockcopy-allow-block-device-destination.patch %if %{with_libvirtd} @@ -2586,15 +2579,6 @@ exit 0 %doc examples/systemtap %changelog -* Wed Feb 25 2015 Jiri Denemark - 1.2.8-16.el7_1.1 -- qemuxml2argvtest: Fake response from numad (rhbz#1194982) -- qemuBuildNumaArgStr: Use memory-backend-ram more wisely (rhbz#1194982) -- util: storage: Fix parsing of nbd:// URI without path (rhbz#1195156) -- Split qemuDomainChrInsert into two parts (rhbz#1195155) -- hotplug: only add a chardev to vmdef after monitor call (rhbz#1195155) -- blockjob: shuffle block rebase code (rhbz#1196066) -- blockcopy: allow block device destination (rhbz#1196066) - * Wed Jan 28 2015 Jiri Denemark - 1.2.8-16 - qemu: don't setup cpuset.mems if memory mode in numatune is not 'strict' (rhbz#1186094) - lxc: don't setup cpuset.mems if memory mode in numatune is not 'strict' (rhbz#1186094)