Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE
xen.7537
xen.libxl.dmmd.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File xen.libxl.dmmd.patch of Package xen.7537
References: bsc#954872 --- tools/libxl/libxl.c | 4 ++++ tools/libxl/libxl_device.c | 3 ++- tools/libxl/libxl_dm.c | 34 +++++++++++++++++++++++++++++----- tools/libxl/libxlu_disk_l.l | 2 ++ 4 files changed, 37 insertions(+), 6 deletions(-) Index: xen-4.9.0-testing/tools/libxl/libxl_disk.c =================================================================== --- xen-4.9.0-testing.orig/tools/libxl/libxl_disk.c +++ xen-4.9.0-testing/tools/libxl/libxl_disk.c @@ -357,6 +357,10 @@ static void device_disk_add(libxl__egc * /* now create a phy device to export the device to the guest */ goto do_backend_phy; case LIBXL_DISK_BACKEND_QDISK: + if (disk->script) { + script = libxl__abs_path(gc, disk->script, libxl__xen_script_dir_path()); + flexarray_append_pair(back, "script", script); + } flexarray_append(back, "params"); flexarray_append(back, GCSPRINTF("%s:%s", libxl__device_disk_string_of_format(disk->format), Index: xen-4.9.0-testing/tools/libxl/libxl_device.c =================================================================== --- xen-4.9.0-testing.orig/tools/libxl/libxl_device.c +++ xen-4.9.0-testing/tools/libxl/libxl_device.c @@ -307,7 +307,8 @@ static int disk_try_backend(disk_try_bac return backend; case LIBXL_DISK_BACKEND_QDISK: - if (a->disk->script) goto bad_script; + LOG(DEBUG, "Disk vdev=%s, uses script=%s on %s backend", + a->disk->vdev, a->disk->script, libxl_disk_backend_to_string(backend)); return backend; default: Index: xen-4.9.0-testing/tools/libxl/libxl_dm.c =================================================================== --- xen-4.9.0-testing.orig/tools/libxl/libxl_dm.c +++ xen-4.9.0-testing/tools/libxl/libxl_dm.c @@ -910,6 +910,30 @@ static char *qemu_disk_ide_drive_string( return drive; } +static void libxl__suse_node_to_path(libxl__gc *gc, int domid, const libxl_device_disk *dp, const char **pdev_path) +{ + libxl_ctx *ctx = libxl__gc_owner(gc); + char *be_path, *node; + libxl__device device; + libxl_device_disk disk; + int rc; + + disk = *dp; + rc = libxl__device_from_disk(gc, domid, &disk, &device); + if (rc) { + LIBXL__LOG(ctx, LIBXL__LOG_WARNING, "libxl__device_from_disk failed %d", rc); + return; + } + be_path = libxl__device_backend_path(gc, &device); + + node = libxl__xs_read(gc, XBT_NULL, libxl__sprintf(gc, "%s/node", be_path)); + if (!node) + return; + + LIBXL__LOG(ctx, LIBXL__LOG_WARNING, "replacing '%s' with '%s' from %s/node, just for qemu-xen", *pdev_path, node, be_path); + *pdev_path = node; +} + static int libxl__build_device_model_args_new(libxl__gc *gc, const char *dm, int guest_domid, const libxl_domain_config *guest_config, @@ -1472,9 +1496,11 @@ static int libxl__build_device_model_arg libxl__device_disk_dev_number(disks[i].vdev, &disk, &part); const char *format; char *drive; - const char *target_path = NULL; + const char *target_path = disks[i].pdev_path; int colo_mode; + libxl__suse_node_to_path(gc, guest_domid, disks + i, &target_path); + if (dev_number == -1) { LOGD(WARN, guest_domid, "unable to determine"" disk number for %s", disks[i].vdev); @@ -1515,7 +1541,7 @@ static int libxl__build_device_model_arg * the bootloader path. */ if (disks[i].backend == LIBXL_DISK_BACKEND_TAP) - target_path = libxl__blktap_devpath(gc, disks[i].pdev_path, + target_path = libxl__blktap_devpath(gc, target_path, disks[i].format); else target_path = libxl__device_disk_find_local_path(gc, Index: xen-4.9.0-testing/tools/libxl/libxlu_disk_l.l =================================================================== --- xen-4.9.0-testing.orig/tools/libxl/libxlu_disk_l.l +++ xen-4.9.0-testing/tools/libxl/libxlu_disk_l.l @@ -229,6 +229,8 @@ target=.* { STRIP(','); SAVESTRING("targ free(newscript); } +dmmd:/.* { DPC->had_depr_prefix=1; DEPRECATE(0); } +npiv:/.* { DPC->had_depr_prefix=1; DEPRECATE(0); } tapdisk:/.* { DPC->had_depr_prefix=1; DEPRECATE(0); } tap2?:/.* { DPC->had_depr_prefix=1; DEPRECATE(0); } aio:/.* { DPC->had_depr_prefix=1; DEPRECATE(0); }
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