047483513a
xen-4.6.0-testing-src.tar.bz2 mini-os.tar.bz2 blktap2-no-uninit.patch stubdom-have-iovec.patch - Renamed xsa149.patch to CVE-2015-7969-xsa149.patch - Dropped patches now contained in tarball or unnecessary xen-4.5.2-testing-src.tar.bz2 54c2553c-grant-table-use-uint16_t-consistently-for-offset-and-length.patch 54ca33bc-grant-table-refactor-grant-copy-to-reduce-duplicate-code.patch 54ca340e-grant-table-defer-releasing-pages-acquired-in-a-grant-copy.patch 54f4985f-libxl-fix-libvirtd-double-free.patch 55103616-vm-assist-prepare-for-discontiguous-used-bit-numbers.patch 551ac326-xentop-add-support-for-qdisk.patch 552d0fd2-x86-hvm-don-t-include-asm-spinlock-h.patch 552d0fe8-x86-mtrr-include-asm-atomic.h.patch 552d293b-x86-vMSI-X-honor-all-mask-requests.patch 552d2966-x86-vMSI-X-add-valid-bits-for-read-acceleration.patch 5537a4d8-libxl-use-DEBUG-log-level-instead-of-INFO.patch 5548e903-domctl-don-t-truncate-XEN_DOMCTL_max_mem-requests.patch 5548e95d-x86-allow-to-suppress-M2P-user-mode-exposure.patch 554c7aee-x86-provide-arch_fetch_and_add.patch 554c7b00-arm-provide-arch_fetch_and_add.patch 554cc211-libxl-add-qxl.patch 55534b0a-x86-provide-add_sized.patch 55534b25-arm-provide-add_sized.patch 5555a4f8-use-ticket-locks-for-spin-locks.patch 5555a5b9-x86-arm-remove-asm-spinlock-h.patch 5555a8ec-introduce-non-contiguous-allocation.patch 556d973f-unmodified-drivers-tolerate-IRQF_DISABLED-being-undefined.patch OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=387
84 lines
3.8 KiB
Diff
84 lines
3.8 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.6.0-testing/tools/libxl/libxl.c
|
|
===================================================================
|
|
--- xen-4.6.0-testing.orig/tools/libxl/libxl.c
|
|
+++ xen-4.6.0-testing/tools/libxl/libxl.c
|
|
@@ -2829,6 +2829,8 @@ static void device_disk_add(libxl__egc *
|
|
flexarray_append_pair(back, "discard-enable",
|
|
libxl_defbool_val(disk->discard_enable) ?
|
|
"1" : "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.6.0-testing/tools/libxl/libxl.h
|
|
===================================================================
|
|
--- xen-4.6.0-testing.orig/tools/libxl/libxl.h
|
|
+++ xen-4.6.0-testing/tools/libxl/libxl.h
|
|
@@ -205,6 +205,18 @@
|
|
#define LIBXL_HAVE_BUILDINFO_ARM_GIC_VERSION 1
|
|
|
|
/*
|
|
+ * 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.6.0-testing/tools/libxl/libxlu_disk.c
|
|
===================================================================
|
|
--- xen-4.6.0-testing.orig/tools/libxl/libxlu_disk.c
|
|
+++ xen-4.6.0-testing/tools/libxl/libxlu_disk.c
|
|
@@ -79,6 +79,8 @@ int xlu_disk_parse(XLU_Config *cfg,
|
|
if (!disk->pdev_path || !strcmp(disk->pdev_path, ""))
|
|
disk->format = LIBXL_DISK_FORMAT_EMPTY;
|
|
}
|
|
+ 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.6.0-testing/tools/libxl/libxlu_disk_i.h
|
|
===================================================================
|
|
--- xen-4.6.0-testing.orig/tools/libxl/libxlu_disk_i.h
|
|
+++ xen-4.6.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, had_depr_prefix;
|
|
+ int access_set, suse_diskcache_disable_flush, had_depr_prefix;
|
|
const char *spec;
|
|
} DiskParseContext;
|
|
|
|
Index: xen-4.6.0-testing/tools/libxl/libxlu_disk_l.l
|
|
===================================================================
|
|
--- xen-4.6.0-testing.orig/tools/libxl/libxlu_disk_l.l
|
|
+++ xen-4.6.0-testing/tools/libxl/libxlu_disk_l.l
|
|
@@ -176,6 +176,7 @@ script=[^,]*,? { STRIP(','); SAVESTRING(
|
|
direct-io-safe,? { DPC->disk->direct_io_safe = 1; }
|
|
discard,? { libxl_defbool_set(&DPC->disk->discard_enable, true); }
|
|
no-discard,? { libxl_defbool_set(&DPC->disk->discard_enable, false); }
|
|
+suse-diskcache-disable-flush,? { DPC->suse_diskcache_disable_flush = 1; }
|
|
|
|
/* the target magic parameter, eats the rest of the string */
|
|
|