diff options
| author | CoprDistGit <infra@openeuler.org> | 2023-10-12 04:00:49 +0000 |
|---|---|---|
| committer | CoprDistGit <infra@openeuler.org> | 2023-10-12 04:00:49 +0000 |
| commit | c22f60e6e55f1bf300dd76d2222a93911f3b2bb2 (patch) | |
| tree | ef665e7018377f53612ac2751dcaea35a1c587b6 /xen.libxl.dmmd.patch | |
| parent | 39a4763249cd6289e5019acfe0c98dbb169f5f2e (diff) | |
automatic import of xenopeneuler22.03_LTS
Diffstat (limited to 'xen.libxl.dmmd.patch')
| -rw-r--r-- | xen.libxl.dmmd.patch | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/xen.libxl.dmmd.patch b/xen.libxl.dmmd.patch new file mode 100644 index 0000000..fef056a --- /dev/null +++ b/xen.libxl.dmmd.patch @@ -0,0 +1,135 @@ +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.13.0-testing/tools/libxl/libxl_disk.c +=================================================================== +--- xen-4.13.0-testing.orig/tools/libxl/libxl_disk.c ++++ xen-4.13.0-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) + { +@@ -336,6 +336,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.13.0-testing/tools/libxl/libxl_device.c +=================================================================== +--- xen-4.13.0-testing.orig/tools/libxl/libxl_device.c ++++ xen-4.13.0-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.13.0-testing/tools/libxl/libxl_dm.c +=================================================================== +--- xen-4.13.0-testing.orig/tools/libxl/libxl_dm.c ++++ xen-4.13.0-testing/tools/libxl/libxl_dm.c +@@ -1162,6 +1162,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, +@@ -1795,9 +1819,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.13.0-testing/tools/libxl/libxlu_disk_l.l +=================================================================== +--- xen-4.13.0-testing.orig/tools/libxl/libxlu_disk_l.l ++++ xen-4.13.0-testing/tools/libxl/libxlu_disk_l.l +@@ -230,6 +230,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.13.0-testing/tools/libxl/libxl_internal.h +=================================================================== +--- xen-4.13.0-testing.orig/tools/libxl/libxl_internal.h ++++ xen-4.13.0-testing/tools/libxl/libxl_internal.h +@@ -2042,6 +2042,10 @@ struct libxl__cpuid_policy { + char *policy[4]; + }; + ++_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); |
