Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP1:GA
xen.5015
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.5015
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.4-testing/tools/libxl/libxl.c =================================================================== --- xen-4.4.4-testing.orig/tools/libxl/libxl.c +++ xen-4.4.4-testing/tools/libxl/libxl.c @@ -2523,6 +2523,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.4-testing/tools/libxl/libxl.h =================================================================== --- xen-4.4.4-testing.orig/tools/libxl/libxl.h +++ xen-4.4.4-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.4-testing/tools/libxl/libxlu_disk.c =================================================================== --- xen-4.4.4-testing.orig/tools/libxl/libxlu_disk.c +++ xen-4.4.4-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.4-testing/tools/libxl/libxlu_disk_i.h =================================================================== --- xen-4.4.4-testing.orig/tools/libxl/libxlu_disk_i.h +++ xen-4.4.4-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.4-testing/tools/libxl/libxlu_disk_l.l =================================================================== --- xen-4.4.4-testing.orig/tools/libxl/libxlu_disk_l.l +++ xen-4.4.4-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 */
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