Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Step:15-SP1
qemu.20428
0015-xen_disk-Add-suse-specific-flush-di.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0015-xen_disk-Add-suse-specific-flush-di.patch of Package qemu.20428
From: Bruce Rogers <brogers@suse.com> Date: Wed, 9 Mar 2016 15:18:11 -0700 Subject: xen_disk: Add suse specific flush disable handling and map to QEMU equiv Add code to read the suse specific suse-diskcache-disable-flush flag out of xenstore, and set the equivalent flag within QEMU. Patch taken from Xen's patch queue, Olaf Hering being the original author. [bsc#879425] [BR: minor edits to pass qemu's checkpatch script] Signed-off-by: Bruce Rogers <brogers@suse.com> Signed-off-by: Olaf Hering <olaf@aepfle.de> --- hw/block/xen_disk.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/hw/block/xen_disk.c b/hw/block/xen_disk.c index 36eff94f8472c3df887d99f3830c..ddd5c7cbfd00a2713dee1501d05b 100644 --- a/hw/block/xen_disk.c +++ b/hw/block/xen_disk.c @@ -90,6 +90,8 @@ struct XenBlkDev { int requests_finished; unsigned int max_requests; + gboolean cache_unsafe; + /* Persistent grants extension */ gboolean feature_discard; /* qemu block driver */ @@ -642,6 +644,18 @@ static void blk_parse_discard(struct XenBlkDev *blkdev) } } +static void blk_parse_cache_unsafe(struct XenBlkDev *blkdev) +{ + int enable; + + blkdev->cache_unsafe = false; + + if (xenstore_read_be_int(&blkdev->xendev, "suse-diskcache-disable-flush", + &enable) == 0) { + blkdev->cache_unsafe = !!enable; + } +} + static int blk_init(struct XenDevice *xendev) { struct XenBlkDev *blkdev = container_of(xendev, struct XenBlkDev, xendev); @@ -717,6 +731,7 @@ static int blk_init(struct XenDevice *xendev) MAX_RING_PAGE_ORDER); blk_parse_discard(blkdev); + blk_parse_cache_unsafe(blkdev); g_free(directiosafe); return 0; @@ -764,6 +779,10 @@ static int blk_connect(struct XenDevice *xendev) qflags |= BDRV_O_UNMAP; } + if (blkdev->cache_unsafe) { + qflags |= BDRV_O_NO_FLUSH; + } + /* init qemu block driver */ index = (xendev->dev - 202 * 256) / 16; blkdev->dinfo = drive_get(IF_XEN, 0, index);
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