b94eda4466
5347b524-evtchn-eliminate-64k-ports-limitation.patch 53aac342-x86-HVM-consolidate-and-sanitize-CR4-guest-reserved-bit-determination.patch 53b16cd4-VT-d-ATS-correct-and-clean-up-dev_invalidate_iotlb.patch 53b56de1-properly-reference-count-DOMCTL_-un-pausedomain-hypercalls.patch 53cfdcc7-avoid-crash-when-doing-shutdown-with-active-cpupools.patch 53cfddaf-x86-mem_event-validate-the-response-vcpu_id-before-acting-on-it.patch 53cfdde4-x86-mem_event-prevent-underflow-of-vcpu-pause-counts.patch - bnc#886801 - xl vncviewer: The first domu can be accessed by any id 53c9151b-Fix-xl-vncviewer-accesses-port-0-by-any-invalid-domid.patch - Upstream pygrub bug fix 5370e03b-pygrub-fix-error-handling-if-no-valid-partitions-are-found.patch - Fix pygrub to handle old 32 bit VMs pygrub-boot-legacy-sles.patch (Mike Latimer) - Remove xen-vmresync utility. It is an old Platespin Orchestrate utility that should have never been included in the Xen package. Updated xen.spec - Rework xen-destroy utility included in xen-utils bnc#885292 and bnc#886063 Updated xen-utils-0.1.tar.bz2 - bnc#886063 - Xen monitor fails (xl list --long output different from xm list --long output) - bnc#885292 - VirtualDomain: pid_status does not know how to check status on SLE12 OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=322
84 lines
4.1 KiB
Diff
84 lines
4.1 KiB
Diff
https://bugzilla.novell.com/show_bug.cgi?id=879425
|
|
---
|
|
tools/libxl/libxl.c | 2 ++
|
|
tools/libxl/libxl.h | 12 ++++++++++++
|
|
tools/libxl/libxlu_disk.c | 2 ++
|
|
tools/libxl/libxlu_disk_i.h | 2 +-
|
|
tools/libxl/libxlu_disk_l.l | 1 +
|
|
5 files changed, 18 insertions(+), 1 deletion(-)
|
|
|
|
Index: xen-4.4.0-testing/tools/libxl/libxl.c
|
|
===================================================================
|
|
--- xen-4.4.0-testing.orig/tools/libxl/libxl.c
|
|
+++ xen-4.4.0-testing/tools/libxl/libxl.c
|
|
@@ -2488,6 +2488,8 @@ static void device_disk_add(libxl__egc *
|
|
flexarray_append_pair(back, "direct-io-safe", "1");
|
|
if ((disk->readwrite & ~LIBXL_HAVE_LIBXL_DEVICE_DISK_DISCARD_DISABLE_MASK) == LIBXL_HAVE_LIBXL_DEVICE_DISK_DISCARD_DISABLE_MAGIC)
|
|
flexarray_append_pair(back, "discard-enable", "0");
|
|
+ if ((disk->readwrite & ~LIBXL_HAVE_LIBXL_DEVICE_DISK_DISABLE_FLUSH_MASK) == LIBXL_HAVE_LIBXL_DEVICE_DISK_DISABLE_FLUSH_MAGIC)
|
|
+ flexarray_append_pair(back, "suse-diskcache-disable-flush", "1");
|
|
|
|
flexarray_append(front, "backend-id");
|
|
flexarray_append(front, libxl__sprintf(gc, "%d", disk->backend_domid));
|
|
Index: xen-4.4.0-testing/tools/libxl/libxl.h
|
|
===================================================================
|
|
--- xen-4.4.0-testing.orig/tools/libxl/libxl.h
|
|
+++ xen-4.4.0-testing/tools/libxl/libxl.h
|
|
@@ -118,6 +118,18 @@
|
|
#define LIBXL_HAVE_LIBXL_DEVICE_DISK_DISCARD_DISABLE_MASK 0xffffff0fU
|
|
|
|
/*
|
|
+ * The libxl_device_disk has no way to indicate that cache=unsafe is
|
|
+ * supposed to be used. Provide this knob without breaking the ABI.
|
|
+ * This is done by overloading struct libxl_device_disk->readwrite:
|
|
+ * readwrite == 0: disk is readonly, no discard
|
|
+ * readwrite == 1: disk is readwrite, backend driver may enable discard
|
|
+ * readwrite == MAGIC: disk is readwrite, backend driver should ignore
|
|
+ * flush requests from the frontend driver.
|
|
+ */
|
|
+#define LIBXL_HAVE_LIBXL_DEVICE_DISK_DISABLE_FLUSH_MAGIC 0x00006000U
|
|
+#define LIBXL_HAVE_LIBXL_DEVICE_DISK_DISABLE_FLUSH_MASK 0xffff0fffU
|
|
+
|
|
+/*
|
|
* libxl ABI compatibility
|
|
*
|
|
* The only guarantee which libxl makes regarding ABI compatibility
|
|
Index: xen-4.4.0-testing/tools/libxl/libxlu_disk.c
|
|
===================================================================
|
|
--- xen-4.4.0-testing.orig/tools/libxl/libxlu_disk.c
|
|
+++ xen-4.4.0-testing/tools/libxl/libxlu_disk.c
|
|
@@ -84,6 +84,8 @@ int xlu_disk_parse(XLU_Config *cfg,
|
|
disk->readwrite = (disk->readwrite & LIBXL_HAVE_LIBXL_DEVICE_DISK_DIRECT_IO_SAFE_MASK) | LIBXL_HAVE_LIBXL_DEVICE_DISK_DIRECT_IO_SAFE_MAGIC;
|
|
if (disk->readwrite && dpc.disable_discard)
|
|
disk->readwrite = (disk->readwrite & LIBXL_HAVE_LIBXL_DEVICE_DISK_DISCARD_DISABLE_MASK) | LIBXL_HAVE_LIBXL_DEVICE_DISK_DISCARD_DISABLE_MAGIC;
|
|
+ if (disk->readwrite && dpc.suse_diskcache_disable_flush)
|
|
+ disk->readwrite = (disk->readwrite & LIBXL_HAVE_LIBXL_DEVICE_DISK_DISABLE_FLUSH_MASK) | LIBXL_HAVE_LIBXL_DEVICE_DISK_DISABLE_FLUSH_MAGIC;
|
|
|
|
if (!disk->vdev) {
|
|
xlu__disk_err(&dpc,0, "no vdev specified");
|
|
Index: xen-4.4.0-testing/tools/libxl/libxlu_disk_i.h
|
|
===================================================================
|
|
--- xen-4.4.0-testing.orig/tools/libxl/libxlu_disk_i.h
|
|
+++ xen-4.4.0-testing/tools/libxl/libxlu_disk_i.h
|
|
@@ -10,7 +10,7 @@ typedef struct {
|
|
void *scanner;
|
|
YY_BUFFER_STATE buf;
|
|
libxl_device_disk *disk;
|
|
- int access_set, direct_io_safe, disable_discard, had_depr_prefix;
|
|
+ int access_set, suse_diskcache_disable_flush, direct_io_safe, disable_discard, had_depr_prefix;
|
|
const char *spec;
|
|
} DiskParseContext;
|
|
|
|
Index: xen-4.4.0-testing/tools/libxl/libxlu_disk_l.l
|
|
===================================================================
|
|
--- xen-4.4.0-testing.orig/tools/libxl/libxlu_disk_l.l
|
|
+++ xen-4.4.0-testing/tools/libxl/libxlu_disk_l.l
|
|
@@ -176,6 +176,7 @@ script=[^,]*,? { STRIP(','); SAVESTRING(
|
|
direct-io-safe,? { DPC->direct_io_safe = 1; }
|
|
discard,? { DPC->disable_discard = 0; }
|
|
no-discard,? { DPC->disable_discard = 1; }
|
|
+suse-diskcache-disable-flush,? { DPC->suse_diskcache_disable_flush = 1; }
|
|
|
|
/* the target magic parameter, eats the rest of the string */
|
|
|