[libvirt/f20] Fix attaching ISO from cifs filesystem (bz #1012085) Fix crash with libxl driver and vcpu affinity (

Cole Robinson crobinso at fedoraproject.org
Sun Nov 17 23:22:24 UTC 2013


commit d00ec4ee6a7bd74196994b160fb450dbd0a5156b
Author: Cole Robinson <crobinso at redhat.com>
Date:   Sun Nov 17 18:22:50 2013 -0500

    Fix attaching ISO from cifs filesystem (bz #1012085)
    Fix crash with libxl driver and vcpu affinity (bz #1013045)
    Fix managed save 'unexpected migration status' failure (bz #1015636)
    Fix qemu deprecation warning in logs with tick options (bz #978719)

 ...-recognize-SMB-CIFS-filesystems-as-shared.patch |   81 +++++++
 ...ubious-cpumask-handling-in-libxlDomainSet.patch |   51 +++++
 0004-Fix-migration-with-QEMU-1.6.patch             |   65 ++++++
 ...n-t-use-deprecated-no-kvm-pit-reinjection.patch |  223 ++++++++++++++++++++
 libvirt.spec                                       |   26 +++-
 5 files changed, 445 insertions(+), 1 deletions(-)
---
diff --git a/0002-util-recognize-SMB-CIFS-filesystems-as-shared.patch b/0002-util-recognize-SMB-CIFS-filesystems-as-shared.patch
new file mode 100644
index 0000000..a70450d
--- /dev/null
+++ b/0002-util-recognize-SMB-CIFS-filesystems-as-shared.patch
@@ -0,0 +1,81 @@
+From 894b3a9e2fb467373f5311f4d6716cdae870a031 Mon Sep 17 00:00:00 2001
+Message-Id: <894b3a9e2fb467373f5311f4d6716cdae870a031.1384729580.git.crobinso at redhat.com>
+From: Laine Stump <laine at laine.org>
+Date: Thu, 26 Sep 2013 05:40:17 -0400
+Subject: [PATCH 2/4] util: recognize SMB/CIFS filesystems as shared
+
+This should resolve:
+
+  https://bugzilla.redhat.com/show_bug.cgi?id=1012085
+
+libvirt previously recognized NFS, GFS2, OCFS2, and AFS filesystems as
+"shared", and thus eligible for exceptions to certain rules/actions
+about chowning image files before handing them off to a guest. This
+patch widens the definition of "shared filesystem" to include SMB and
+CIFS filesystems (aka "Windows file sharing"); both of these use the
+same protocol, but different drivers so there are different magic
+numbers for each.
+
+(cherry picked from commit e4e73337e5a5aa708bb356751404ab8ae6583f42)
+---
+ src/util/virstoragefile.c | 16 +++++++++++++++-
+ src/util/virstoragefile.h |  2 ++
+ 2 files changed, 17 insertions(+), 1 deletion(-)
+
+diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
+index 9453599..1b4d4cf 100644
+--- a/src/util/virstoragefile.c
++++ b/src/util/virstoragefile.c
+@@ -1241,6 +1241,12 @@ cleanup:
+ # ifndef AFS_FS_MAGIC
+ #  define AFS_FS_MAGIC 0x6B414653
+ # endif
++# ifndef SMB_SUPER_MAGIC
++#  define SMB_SUPER_MAGIC 0x517B
++# endif
++# ifndef CIFS_SUPER_MAGIC
++#  define CIFS_SUPER_MAGIC 0xFF534D42
++# endif
+ 
+ 
+ int virStorageFileIsSharedFSType(const char *path,
+@@ -1304,6 +1310,12 @@ int virStorageFileIsSharedFSType(const char *path,
+     if ((fstypes & VIR_STORAGE_FILE_SHFS_AFS) &&
+         (sb.f_type == AFS_FS_MAGIC))
+         return 1;
++    if ((fstypes & VIR_STORAGE_FILE_SHFS_SMB) &&
++        (sb.f_type == SMB_SUPER_MAGIC))
++        return 1;
++    if ((fstypes & VIR_STORAGE_FILE_SHFS_CIFS) &&
++        (sb.f_type == CIFS_SUPER_MAGIC))
++        return 1;
+ 
+     return 0;
+ }
+@@ -1322,7 +1334,9 @@ int virStorageFileIsSharedFS(const char *path)
+                                         VIR_STORAGE_FILE_SHFS_NFS |
+                                         VIR_STORAGE_FILE_SHFS_GFS2 |
+                                         VIR_STORAGE_FILE_SHFS_OCFS |
+-                                        VIR_STORAGE_FILE_SHFS_AFS);
++                                        VIR_STORAGE_FILE_SHFS_AFS |
++                                        VIR_STORAGE_FILE_SHFS_SMB |
++                                        VIR_STORAGE_FILE_SHFS_CIFS);
+ }
+ 
+ int virStorageFileIsClusterFS(const char *path)
+diff --git a/src/util/virstoragefile.h b/src/util/virstoragefile.h
+index 1f89839..d5effa4 100644
+--- a/src/util/virstoragefile.h
++++ b/src/util/virstoragefile.h
+@@ -112,6 +112,8 @@ enum {
+     VIR_STORAGE_FILE_SHFS_GFS2 = (1 << 1),
+     VIR_STORAGE_FILE_SHFS_OCFS = (1 << 2),
+     VIR_STORAGE_FILE_SHFS_AFS = (1 << 3),
++    VIR_STORAGE_FILE_SHFS_SMB = (1 << 4),
++    VIR_STORAGE_FILE_SHFS_CIFS = (1 << 5),
+ };
+ 
+ int virStorageFileIsSharedFS(const char *path);
+-- 
+1.8.4.2
+
diff --git a/0003-libxl-fix-dubious-cpumask-handling-in-libxlDomainSet.patch b/0003-libxl-fix-dubious-cpumask-handling-in-libxlDomainSet.patch
new file mode 100644
index 0000000..724b4d4
--- /dev/null
+++ b/0003-libxl-fix-dubious-cpumask-handling-in-libxlDomainSet.patch
@@ -0,0 +1,51 @@
+From c004f937a1c6a60cc9a714b2563add57b5b439f2 Mon Sep 17 00:00:00 2001
+Message-Id: <c004f937a1c6a60cc9a714b2563add57b5b439f2.1384729580.git.crobinso at redhat.com>
+In-Reply-To: <894b3a9e2fb467373f5311f4d6716cdae870a031.1384729580.git.crobinso at redhat.com>
+References: <894b3a9e2fb467373f5311f4d6716cdae870a031.1384729580.git.crobinso at redhat.com>
+From: Jeremy Fitzhardinge <jeremy at goop.org>
+Date: Wed, 30 Oct 2013 10:38:08 -0700
+Subject: [PATCH 3/4] libxl: fix dubious cpumask handling in
+ libxlDomainSetVcpuAffinities
+
+Rather than casting the virBitmap pointer to uint8_t* and then using
+the structure contents as a byte array, use the virBitmap API to determine
+the bitmap size and test each bit.
+
+Signed-off-by: Jeremy Fitzhardinge <jeremy at goop.org>
+(cherry picked from commit ba1bf10063a0205c1de12b209b0282833710214f)
+---
+ src/libxl/libxl_driver.c | 10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
+index e2a6d44..45e09a8 100644
+--- a/src/libxl/libxl_driver.c
++++ b/src/libxl/libxl_driver.c
+@@ -448,7 +448,7 @@ libxlDomainSetVcpuAffinities(libxlDriverPrivatePtr driver, virDomainObjPtr vm)
+     libxlDomainObjPrivatePtr priv = vm->privateData;
+     virDomainDefPtr def = vm->def;
+     libxl_bitmap map;
+-    uint8_t *cpumask = NULL;
++    virBitmapPtr cpumask = NULL;
+     uint8_t *cpumap = NULL;
+     virNodeInfo nodeinfo;
+     size_t cpumaplen;
+@@ -468,10 +468,12 @@ libxlDomainSetVcpuAffinities(libxlDriverPrivatePtr driver, virDomainObjPtr vm)
+         if (VIR_ALLOC_N(cpumap, cpumaplen) < 0)
+             goto cleanup;
+ 
+-        cpumask = (uint8_t*) def->cputune.vcpupin[vcpu]->cpumask;
++        cpumask = def->cputune.vcpupin[vcpu]->cpumask;
+ 
+-        for (i = 0; i < VIR_DOMAIN_CPUMASK_LEN; ++i) {
+-            if (cpumask[i])
++        for (i = 0; i < virBitmapSize(cpumask); ++i) {
++            bool bit;
++            ignore_value(virBitmapGetBit(cpumask, i, &bit));
++            if (bit)
+                 VIR_USE_CPU(cpumap, i);
+         }
+ 
+-- 
+1.8.4.2
+
diff --git a/0004-Fix-migration-with-QEMU-1.6.patch b/0004-Fix-migration-with-QEMU-1.6.patch
new file mode 100644
index 0000000..1fc9e51
--- /dev/null
+++ b/0004-Fix-migration-with-QEMU-1.6.patch
@@ -0,0 +1,65 @@
+From 1587f15f6de9c7ee98016ce5b5d74662640740bb Mon Sep 17 00:00:00 2001
+Message-Id: <1587f15f6de9c7ee98016ce5b5d74662640740bb.1384729580.git.crobinso at redhat.com>
+In-Reply-To: <894b3a9e2fb467373f5311f4d6716cdae870a031.1384729580.git.crobinso at redhat.com>
+References: <894b3a9e2fb467373f5311f4d6716cdae870a031.1384729580.git.crobinso at redhat.com>
+From: Michael Avdienko <whitearchey at gmail.com>
+Date: Fri, 15 Nov 2013 20:47:43 +0900
+Subject: [PATCH 4/4] Fix migration with QEMU 1.6
+
+QEMU 1.6.0 introduced new migration status: setup
+Libvirt does not expect such string in QMP and refuses to migrate with error
+"unexpected migration status in setup"
+
+This patch fixes it.
+
+Signed-off-by: Jiri Denemark <jdenemar at redhat.com>
+(cherry picked from commit d35ae4143d11f45856ae002fcd419da0eb9bba9f)
+---
+ src/qemu/qemu_migration.c | 4 ++++
+ src/qemu/qemu_monitor.c   | 2 +-
+ src/qemu/qemu_monitor.h   | 1 +
+ 3 files changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
+index 04313e7..c0b17c3 100644
+--- a/src/qemu/qemu_migration.c
++++ b/src/qemu/qemu_migration.c
+@@ -1650,6 +1650,10 @@ qemuMigrationUpdateJobStatus(virQEMUDriverPtr driver,
+                        _("%s: %s"), job, _("is not active"));
+         break;
+ 
++    case QEMU_MONITOR_MIGRATION_STATUS_SETUP:
++        ret = 0;
++        break;
++
+     case QEMU_MONITOR_MIGRATION_STATUS_ACTIVE:
+         priv->job.info.fileTotal = priv->job.status.disk_total;
+         priv->job.info.fileRemaining = priv->job.status.disk_remaining;
+diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c
+index a601ee0..7e26377 100644
+--- a/src/qemu/qemu_monitor.c
++++ b/src/qemu/qemu_monitor.c
+@@ -114,7 +114,7 @@ VIR_ONCE_GLOBAL_INIT(qemuMonitor)
+ 
+ VIR_ENUM_IMPL(qemuMonitorMigrationStatus,
+               QEMU_MONITOR_MIGRATION_STATUS_LAST,
+-              "inactive", "active", "completed", "failed", "cancelled")
++              "inactive", "active", "completed", "failed", "cancelled", "setup")
+ 
+ VIR_ENUM_IMPL(qemuMonitorMigrationCaps,
+               QEMU_MONITOR_MIGRATION_CAPS_LAST,
+diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h
+index 06ba7e8..8ec721b 100644
+--- a/src/qemu/qemu_monitor.h
++++ b/src/qemu/qemu_monitor.h
+@@ -396,6 +396,7 @@ enum {
+     QEMU_MONITOR_MIGRATION_STATUS_COMPLETED,
+     QEMU_MONITOR_MIGRATION_STATUS_ERROR,
+     QEMU_MONITOR_MIGRATION_STATUS_CANCELLED,
++    QEMU_MONITOR_MIGRATION_STATUS_SETUP,
+ 
+     QEMU_MONITOR_MIGRATION_STATUS_LAST
+ };
+-- 
+1.8.4.2
+
diff --git a/0005-qemu-don-t-use-deprecated-no-kvm-pit-reinjection.patch b/0005-qemu-don-t-use-deprecated-no-kvm-pit-reinjection.patch
new file mode 100644
index 0000000..5d4b331
--- /dev/null
+++ b/0005-qemu-don-t-use-deprecated-no-kvm-pit-reinjection.patch
@@ -0,0 +1,223 @@
+From e20a2c775a07aad3a5309785dd75909aacc48d95 Mon Sep 17 00:00:00 2001
+Message-Id: <e20a2c775a07aad3a5309785dd75909aacc48d95.1384729563.git.crobinso at redhat.com>
+From: =?UTF-8?q?J=C3=A1n=20Tomko?= <jtomko at redhat.com>
+Date: Mon, 1 Jul 2013 18:28:50 +0200
+Subject: [PATCH] qemu: don't use deprecated -no-kvm-pit-reinjection
+
+Since qemu-kvm 1.1 [1] (since 1.3. in upstream QEMU [2])
+'-no-kvm-pit-reinjection' has been deprecated.
+Use -global kvm-pit.lost_tick_policy=discard instead.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=978719
+
+[1] http://git.kernel.org/cgit/virt/kvm/qemu-kvm.git/commit/?id=4e4fa39
+[2] http://git.qemu.org/?p=qemu.git;a=commitdiff;h=c21fb4f
+
+(cherry picked from commit 1569fa14d8f6b6636cf78d7ee62ae3bd205f5638)
+
+Conflicts:
+	tests/qemucapabilitiesdata/caps_1.2.2-1.caps
+	tests/qemucapabilitiesdata/caps_1.2.2-1.replies
+	tests/qemucapabilitiesdata/caps_1.3.1-1.caps
+	tests/qemucapabilitiesdata/caps_1.3.1-1.replies
+	tests/qemucapabilitiesdata/caps_1.4.2-1.caps
+	tests/qemucapabilitiesdata/caps_1.4.2-1.replies
+	tests/qemucapabilitiesdata/caps_1.5.3-1.caps
+	tests/qemucapabilitiesdata/caps_1.5.3-1.replies
+	tests/qemucapabilitiesdata/caps_1.6.0-1.caps
+	tests/qemucapabilitiesdata/caps_1.6.0-1.replies
+	tests/qemucapabilitiesdata/caps_1.6.50-1.caps
+	tests/qemucapabilitiesdata/caps_1.6.50-1.replies
+(qemucapabilitiestest is not backported)
+---
+ src/qemu/qemu_capabilities.c                       |  7 ++++++
+ src/qemu/qemu_capabilities.h                       |  1 +
+ src/qemu/qemu_command.c                            |  8 ++++--
+ .../qemuxml2argv-kvm-pit-delay.args                |  5 ++++
+ .../qemuxml2argv-kvm-pit-delay.xml                 | 29 ++++++++++++++++++++++
+ .../qemuxml2argv-kvm-pit-device.args               |  5 ++++
+ .../qemuxml2argv-kvm-pit-device.xml                | 29 ++++++++++++++++++++++
+ tests/qemuxml2argvtest.c                           |  5 ++++
+ 8 files changed, 87 insertions(+), 2 deletions(-)
+ create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-kvm-pit-delay.args
+ create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-kvm-pit-delay.xml
+ create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-kvm-pit-device.args
+ create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-kvm-pit-device.xml
+
+diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
+index dc8f0be..5e1ae93 100644
+--- a/src/qemu/qemu_capabilities.c
++++ b/src/qemu/qemu_capabilities.c
+@@ -242,6 +242,7 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST,
+               "usb-storage.removable",
+               "virtio-mmio",
+               "ich9-intel-hda",
++              "kvm-pit-lost-tick-policy",
+     );
+ 
+ struct _virQEMUCaps {
+@@ -1458,6 +1459,10 @@ static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsUsbStorage[] = {
+     { "removable", QEMU_CAPS_USB_STORAGE_REMOVABLE },
+ };
+ 
++static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsKVMPit[] = {
++    { "lost_tick_policy", QEMU_CAPS_KVM_PIT_TICK_POLICY },
++};
++
+ struct virQEMUCapsObjectTypeProps {
+     const char *type;
+     struct virQEMUCapsStringFlags *props;
+@@ -1501,6 +1506,8 @@ static struct virQEMUCapsObjectTypeProps virQEMUCapsObjectProps[] = {
+       ARRAY_CARDINALITY(virQEMUCapsObjectPropsQ35PciHost) },
+     { "usb-storage", virQEMUCapsObjectPropsUsbStorage,
+       ARRAY_CARDINALITY(virQEMUCapsObjectPropsUsbStorage) },
++    { "kvm-pit", virQEMUCapsObjectPropsKVMPit,
++      ARRAY_CARDINALITY(virQEMUCapsObjectPropsKVMPit) },
+ };
+ 
+ 
+diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h
+index f8dc728..7c05412 100644
+--- a/src/qemu/qemu_capabilities.h
++++ b/src/qemu/qemu_capabilities.h
+@@ -197,6 +197,7 @@ enum virQEMUCapsFlags {
+     QEMU_CAPS_USB_STORAGE_REMOVABLE = 156, /* usb-storage.removable */
+     QEMU_CAPS_DEVICE_VIRTIO_MMIO = 157, /* -device virtio-mmio */
+     QEMU_CAPS_DEVICE_ICH9_INTEL_HDA = 158, /* -device ich9-intel-hda */
++    QEMU_CAPS_KVM_PIT_TICK_POLICY = 159, /* kvm-pit.lost_tick_policy */
+ 
+     QEMU_CAPS_LAST,                   /* this must always be the last item */
+ };
+diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
+index e3c2d0c..38fbd45 100644
+--- a/src/qemu/qemu_command.c
++++ b/src/qemu/qemu_command.c
+@@ -7968,11 +7968,15 @@ qemuBuildCommandLine(virConnectPtr conn,
+             case VIR_DOMAIN_TIMER_TICKPOLICY_DELAY:
+                 /* delay is the default if we don't have kernel
+                    (-no-kvm-pit), otherwise, the default is catchup. */
+-                if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_NO_KVM_PIT))
++                if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_KVM_PIT_TICK_POLICY))
++                    virCommandAddArgList(cmd, "-global",
++                                         "kvm-pit.lost_tick_policy=discard", NULL);
++                else if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_NO_KVM_PIT))
+                     virCommandAddArg(cmd, "-no-kvm-pit-reinjection");
+                 break;
+             case VIR_DOMAIN_TIMER_TICKPOLICY_CATCHUP:
+-                if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_NO_KVM_PIT)) {
++                if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_NO_KVM_PIT) ||
++                    virQEMUCapsGet(qemuCaps, QEMU_CAPS_KVM_PIT_TICK_POLICY)) {
+                     /* do nothing - this is default for kvm-pit */
+                 } else if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_TDF)) {
+                     /* -tdf switches to 'catchup' with userspace pit. */
+diff --git a/tests/qemuxml2argvdata/qemuxml2argv-kvm-pit-delay.args b/tests/qemuxml2argvdata/qemuxml2argv-kvm-pit-delay.args
+new file mode 100644
+index 0000000..ca5823f
+--- /dev/null
++++ b/tests/qemuxml2argvdata/qemuxml2argv-kvm-pit-delay.args
+@@ -0,0 +1,5 @@
++LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=none \
++/usr/bin/qemu -S -M pc -m 214 -smp 2 -nographic \
++-monitor unix:/tmp/test-monitor,server,nowait \
++-no-kvm-pit-reinjection -no-acpi -boot c -usb -hda /dev/HostVG/QEMUGuest1 \
++-net none -serial none -parallel none
+diff --git a/tests/qemuxml2argvdata/qemuxml2argv-kvm-pit-delay.xml b/tests/qemuxml2argvdata/qemuxml2argv-kvm-pit-delay.xml
+new file mode 100644
+index 0000000..7835a1b
+--- /dev/null
++++ b/tests/qemuxml2argvdata/qemuxml2argv-kvm-pit-delay.xml
+@@ -0,0 +1,29 @@
++<domain type='qemu'>
++  <name>QEMUGuest1</name>
++  <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
++  <memory unit='KiB'>219136</memory>
++  <currentMemory unit='KiB'>219136</currentMemory>
++  <vcpu placement='static'>2</vcpu>
++  <os>
++    <type arch='i686' machine='pc'>hvm</type>
++    <boot dev='hd'/>
++  </os>
++  <clock offset='utc'>
++    <timer name='pit' tickpolicy='delay'/>
++  </clock>
++  <on_poweroff>destroy</on_poweroff>
++  <on_reboot>restart</on_reboot>
++  <on_crash>destroy</on_crash>
++  <devices>
++    <emulator>/usr/bin/qemu</emulator>
++    <disk type='block' device='disk'>
++      <source dev='/dev/HostVG/QEMUGuest1'/>
++      <target dev='hda' bus='ide'/>
++      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
++    </disk>
++    <controller type='usb' index='0'/>
++    <controller type='ide' index='0'/>
++    <controller type='pci' index='0' model='pci-root'/>
++    <memballoon model='virtio'/>
++  </devices>
++</domain>
+diff --git a/tests/qemuxml2argvdata/qemuxml2argv-kvm-pit-device.args b/tests/qemuxml2argvdata/qemuxml2argv-kvm-pit-device.args
+new file mode 100644
+index 0000000..f03840f
+--- /dev/null
++++ b/tests/qemuxml2argvdata/qemuxml2argv-kvm-pit-device.args
+@@ -0,0 +1,5 @@
++LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=none \
++/usr/bin/qemu -S -M pc -m 214 -smp 2 -nographic \
++-monitor unix:/tmp/test-monitor,server,nowait \
++-global kvm-pit.lost_tick_policy=discard -no-acpi -boot c -usb \
++-hda /dev/HostVG/QEMUGuest1 -net none -serial none -parallel none
+diff --git a/tests/qemuxml2argvdata/qemuxml2argv-kvm-pit-device.xml b/tests/qemuxml2argvdata/qemuxml2argv-kvm-pit-device.xml
+new file mode 100644
+index 0000000..7835a1b
+--- /dev/null
++++ b/tests/qemuxml2argvdata/qemuxml2argv-kvm-pit-device.xml
+@@ -0,0 +1,29 @@
++<domain type='qemu'>
++  <name>QEMUGuest1</name>
++  <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
++  <memory unit='KiB'>219136</memory>
++  <currentMemory unit='KiB'>219136</currentMemory>
++  <vcpu placement='static'>2</vcpu>
++  <os>
++    <type arch='i686' machine='pc'>hvm</type>
++    <boot dev='hd'/>
++  </os>
++  <clock offset='utc'>
++    <timer name='pit' tickpolicy='delay'/>
++  </clock>
++  <on_poweroff>destroy</on_poweroff>
++  <on_reboot>restart</on_reboot>
++  <on_crash>destroy</on_crash>
++  <devices>
++    <emulator>/usr/bin/qemu</emulator>
++    <disk type='block' device='disk'>
++      <source dev='/dev/HostVG/QEMUGuest1'/>
++      <target dev='hda' bus='ide'/>
++      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
++    </disk>
++    <controller type='usb' index='0'/>
++    <controller type='ide' index='0'/>
++    <controller type='pci' index='0' model='pci-root'/>
++    <memballoon model='virtio'/>
++  </devices>
++</domain>
+diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
+index d23f545..15e21be 100644
+--- a/tests/qemuxml2argvtest.c
++++ b/tests/qemuxml2argvtest.c
+@@ -1083,6 +1083,11 @@ mymain(void)
+             QEMU_CAPS_DRIVE, QEMU_CAPS_DEVICE_VIRTIO_MMIO,
+             QEMU_CAPS_DEVICE_VIRTIO_RNG, QEMU_CAPS_OBJECT_RNG_RANDOM);
+ 
++    DO_TEST("kvm-pit-device", QEMU_CAPS_KVM_PIT_TICK_POLICY);
++    DO_TEST("kvm-pit-delay", QEMU_CAPS_NO_KVM_PIT);
++    DO_TEST("kvm-pit-device", QEMU_CAPS_NO_KVM_PIT,
++            QEMU_CAPS_KVM_PIT_TICK_POLICY);
++
+     virObjectUnref(driver.config);
+     virObjectUnref(driver.caps);
+     virObjectUnref(driver.xmlopt);
+-- 
+1.8.4.2
+
diff --git a/libvirt.spec b/libvirt.spec
index 5c11a64..90cb19a 100644
--- a/libvirt.spec
+++ b/libvirt.spec
@@ -367,7 +367,7 @@
 Summary: Library providing a simple virtualization API
 Name: libvirt
 Version: 1.1.3.1
-Release: 1%{?dist}%{?extra_release}
+Release: 2%{?dist}%{?extra_release}
 License: LGPLv2+
 Group: Development/Libraries
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
@@ -378,6 +378,15 @@ URL: http://libvirt.org/
 %endif
 Source: http://libvirt.org/sources/%{?mainturl}libvirt-%{version}.tar.gz
 
+# Fix attaching ISO from cifs filesystem (bz #1012085)
+Patch0002: 0002-util-recognize-SMB-CIFS-filesystems-as-shared.patch
+# Fix crash with libxl driver and vcpu affinity (bz #1013045)
+Patch0003: 0003-libxl-fix-dubious-cpumask-handling-in-libxlDomainSet.patch
+# Fix managed save 'unexpected migration status' failure (bz #1015636)
+Patch0004: 0004-Fix-migration-with-QEMU-1.6.patch
+# Fix qemu deprecation warning in logs with tick options (bz #978719)
+Patch0005: 0005-qemu-don-t-use-deprecated-no-kvm-pit-reinjection.patch
+
 %if %{with_libvirtd}
 Requires: libvirt-daemon = %{version}-%{release}
     %if %{with_network}
@@ -1161,6 +1170,15 @@ of recent versions of Linux (and other OSes).
 %prep
 %setup -q
 
+# Fix attaching ISO from cifs filesystem (bz #1012085)
+%patch0002 -p1
+# Fix crash with libxl driver and vcpu affinity (bz #1013045)
+%patch0003 -p1
+# Fix managed save 'unexpected migration status' failure (bz #1015636)
+%patch0004 -p1
+# Fix qemu deprecation warning in logs with tick options (bz #978719)
+%patch0005 -p1
+
 %build
 %if ! %{with_xen}
     %define _without_xen --without-xen
@@ -2118,6 +2136,12 @@ fi
 %endif
 
 %changelog
+* Sun Nov 17 2013 Cole Robinson <crobinso at redhat.com> - 1.1.3.1-2
+- Fix attaching ISO from cifs filesystem (bz #1012085)
+- Fix crash with libxl driver and vcpu affinity (bz #1013045)
+- Fix managed save 'unexpected migration status' failure (bz #1015636)
+- Fix qemu deprecation warning in logs with tick options (bz #978719)
+
 * Wed Nov 06 2013 Cole Robinson <crobinso at redhat.com> - 1.1.3.1-1
 - Rebased to version 1.1.3.1
 - CVE-2013-4400: virt-login-shell arbitrary file overwrites vulnerability (bz


More information about the scm-commits mailing list