Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE
xen.26659
xen.libxl.dmmd.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File xen.libxl.dmmd.patch of Package xen.26659
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.14.5-testing/tools/libxl/libxl_disk.c =================================================================== --- xen-4.14.5-testing.orig/tools/libxl/libxl_disk.c +++ xen-4.14.5-testing/tools/libxl/libxl_disk.c @@ -178,7 +178,7 @@ static int libxl__device_disk_setdefault return rc; } -static int libxl__device_from_disk(libxl__gc *gc, uint32_t domid, +int libxl__device_from_disk(libxl__gc *gc, uint32_t domid, const libxl_device_disk *disk, libxl__device *device) { @@ -337,6 +337,10 @@ static void device_disk_add(libxl__egc * rc = ERROR_FAIL; goto out; 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.14.5-testing/tools/libxl/libxl_device.c =================================================================== --- xen-4.14.5-testing.orig/tools/libxl/libxl_device.c +++ xen-4.14.5-testing/tools/libxl/libxl_device.c @@ -326,7 +326,8 @@ static int disk_try_backend(disk_try_bac return 0; 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: @@ -343,11 +344,6 @@ static int disk_try_backend(disk_try_bac libxl_disk_format_to_string(a->disk->format)); return 0; - bad_script: - LOG(DEBUG, "Disk vdev=%s, backend %s not compatible with script=...", - a->disk->vdev, libxl_disk_backend_to_string(backend)); - return 0; - bad_colo: LOG(DEBUG, "Disk vdev=%s, backend %s not compatible with colo", a->disk->vdev, libxl_disk_backend_to_string(backend)); Index: xen-4.14.5-testing/tools/libxl/libxl_dm.c =================================================================== --- xen-4.14.5-testing.orig/tools/libxl/libxl_dm.c +++ xen-4.14.5-testing/tools/libxl/libxl_dm.c @@ -1182,6 +1182,30 @@ out: return rc; } +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, @@ -1849,9 +1873,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); Index: xen-4.14.5-testing/tools/libxl/libxlu_disk_l.l =================================================================== --- xen-4.14.5-testing.orig/tools/libxl/libxlu_disk_l.l +++ xen-4.14.5-testing/tools/libxl/libxlu_disk_l.l @@ -241,6 +241,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); } Index: xen-4.14.5-testing/tools/libxl/libxl_internal.h =================================================================== --- xen-4.14.5-testing.orig/tools/libxl/libxl_internal.h +++ xen-4.14.5-testing/tools/libxl/libxl_internal.h @@ -2067,6 +2067,10 @@ _hidden char *libxl__object_to_json(libx _hidden void libxl__cpuid_legacy(libxl_ctx *ctx, uint32_t domid, bool retore, libxl_domain_build_info *info); +_hidden int libxl__device_from_disk(libxl__gc *gc, uint32_t domid, + const libxl_device_disk *disk, + libxl__device *device); + /* Calls poll() again - useful to check whether a signaled condition * is still true. Cannot fail. Returns currently-true revents. */ _hidden short libxl__fd_poll_recheck(libxl__egc *egc, int fd, short events);
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