Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP5:Update
xen.3879
libxl.add-option-to-disable-disk-cache-flushes-...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File libxl.add-option-to-disable-disk-cache-flushes-in-qdisk.patch of Package xen.3879
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.5.5-testing/tools/libxl/libxl.c =================================================================== --- xen-4.5.5-testing.orig/tools/libxl/libxl.c +++ xen-4.5.5-testing/tools/libxl/libxl.c @@ -2848,6 +2848,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.5.5-testing/tools/libxl/libxl.h =================================================================== --- xen-4.5.5-testing.orig/tools/libxl/libxl.h +++ xen-4.5.5-testing/tools/libxl/libxl.h @@ -163,6 +163,18 @@ #define LIBXL_HAVE_BUILDINFO_HVM_MMIO_HOLE_MEMKB 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.5.5-testing/tools/libxl/libxlu_disk.c =================================================================== --- xen-4.5.5-testing.orig/tools/libxl/libxlu_disk.c +++ xen-4.5.5-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.5.5-testing/tools/libxl/libxlu_disk_i.h =================================================================== --- xen-4.5.5-testing.orig/tools/libxl/libxlu_disk_i.h +++ xen-4.5.5-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.5.5-testing/tools/libxl/libxlu_disk_l.l =================================================================== --- xen-4.5.5-testing.orig/tools/libxl/libxlu_disk_l.l +++ xen-4.5.5-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 */
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor