Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP3:GA
xen.2959
5649bcbe-libxl-relax-readonly-check-introduced-...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 5649bcbe-libxl-relax-readonly-check-introduced-by-XSA-142-fix.patch of Package xen.2959
commit ef6cb76026628e26e3d1ae53c50ccde1c3c78b1b Author: Jim Fehlig <jfehlig@suse.com> Date: Thu Nov 12 19:40:46 2015 -0700 libxl: relax readonly check introduced by XSA-142 fix The fix for XSA-142 is quite a big hammer, rejecting readonly disk configuration even when the requested backend is known to support readonly. While it is true that qemu doesn't support readonly for emulated IDE or AHCI disks $ /usr/lib/xen/bin/qemu-system-i386 \ -drive file=/tmp/disk.raw,if=ide,media=disk,format=raw,readonly=on qemu-system-i386: Can't use a read-only drive $ /usr/lib/xen/bin/qemu-system-i386 -device ahci,id=ahci0 \ -drive file=/tmp/disk.raw,if=none,id=ahcidisk-0,format=raw,readonly=on \ -device ide-hd,bus=ahci0.0,unit=0,drive=ahcidisk-0 qemu-system-i386: -device ide-hd,bus=ahci0.0,unit=0,drive=ahcidisk-0: Can't use a read-only drive It does support readonly SCSI disks $ /usr/lib/xen/bin/qemu-system-i386 \ -drive file=/tmp/disk.raw,if=scsi,media=disk,format=raw,readonly=on [ok] Inside a guest using such a disk, the SCSI kernel driver sees write protect on [ 7.339232] sd 2:0:1:0: [sdb] Write Protect is on Also, PV drivers support readonly, but the patch rejects such configuration even when PV drivers (vdev=xvd*) have been explicitly specified and creation of an emulated twin is skiped. This follow-up patch loosens the restriction to reject readonly when creating an emulated IDE or AHCI disk, but allows it when the backend is known to support readonly. Signed-off-by: Jim Fehlig <jfehlig@suse.com> Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Acked-by: Ian Campbell <ian.campbell@citrix.com> Index: xen-4.5.3-testing/tools/libxl/libxl_dm.c =================================================================== --- xen-4.5.3-testing.orig/tools/libxl/libxl_dm.c +++ xen-4.5.3-testing/tools/libxl/libxl_dm.c @@ -821,11 +821,6 @@ static char ** libxl__build_device_model (gc, "file=%s,if=ide,index=%d,readonly=%s,media=cdrom,format=%s,cache=writeback,id=ide-%i", disks[i].pdev_path, disk, disks[i].readwrite ? "off" : "on", format, dev_number); } else { - if (!disks[i].readwrite) { - LIBXL__LOG(ctx, LIBXL__LOG_ERROR, "qemu-xen doesn't support read-only disk drivers"); - return NULL; - } - if (disks[i].format == LIBXL_DISK_FORMAT_EMPTY) { LIBXL__LOG(ctx, LIBXL__LOG_WARNING, "cannot support" " empty disk format for %s", disks[i].vdev); @@ -856,12 +851,22 @@ static char ** libxl__build_device_model drive = libxl__sprintf (gc, "file=%s,if=scsi,bus=0,unit=%d,format=%s,cache=writeback", pdev_path, disk, format); - else if (disk < 4) + + if (strncmp(disks[i].vdev, "sd", 2) == 0) { + drive = libxl__sprintf + (gc, "file=%s,if=scsi,bus=0,unit=%d,format=%s,readonly=%s,cache=writeback", + pdev_path, disk, format, disks[i].readwrite ? "off" : "on"); + } else if (disk < 4) { + if (!disks[i].readwrite) { + LOG(ERROR, "qemu-xen doesn't support read-only IDE disk drivers"); + return NULL; + } drive = libxl__sprintf (gc, "file=%s,if=ide,index=%d,media=disk,format=%s,cache=writeback", pdev_path, disk, format); - else + } else { continue; /* Do not emulate this disk */ + } } flexarray_append(dm_args, "-drive");
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