"-runas" is deprecated since QEMU 9.1 and will be remove in a future
release.
Signed-off-by: Anthony PERARD <anthony.perard@vates.tech>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
Notes:
v2:
- rename "qemu_cmdline" to "qemu_opts" in struct field and func
parameters.
tools/libs/light/libxl_dm.c | 12 ++++++++++--
tools/libs/light/libxl_internal.h | 1 +
2 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/tools/libs/light/libxl_dm.c b/tools/libs/light/libxl_dm.c
index 15b157060f..1f2f5bd97a 100644
--- a/tools/libs/light/libxl_dm.c
+++ b/tools/libs/light/libxl_dm.c
@@ -2052,8 +2052,13 @@ static int libxl__build_device_model_args_new(libxl__gc *gc,
}
if (state->dm_runas) {
- flexarray_append(dm_args, "-runas");
- flexarray_append(dm_args, state->dm_runas);
+ if (qemu_opts->have_runwith_user) {
+ flexarray_append_pair(dm_args, "-run-with",
+ GCSPRINTF("user=%s", state->dm_runas));
+ } else {
+ flexarray_append(dm_args, "-runas");
+ flexarray_append(dm_args, state->dm_runas);
+ }
}
}
flexarray_append(dm_args, NULL);
@@ -3073,6 +3078,9 @@ static void device_model_probe_cmdline(libxl__egc *egc,
if (!strcmp("chroot", libxl__json_object_get_string(o))) {
dmss->qemu_opts.have_runwith_chroot = true;
}
+ else if (!strcmp("user", libxl__json_object_get_string(o))) {
+ dmss->qemu_opts.have_runwith_user = true;
+ }
}
/*
diff --git a/tools/libs/light/libxl_internal.h b/tools/libs/light/libxl_internal.h
index 0133c57e01..089a2f949c 100644
--- a/tools/libs/light/libxl_internal.h
+++ b/tools/libs/light/libxl_internal.h
@@ -4145,6 +4145,7 @@ typedef struct libxl__dm_spawn_state libxl__dm_spawn_state;
typedef struct libxl__qemu_available_opts libxl__qemu_available_opts;
struct libxl__qemu_available_opts {
bool have_runwith_chroot;
+ bool have_runwith_user;
};
typedef void libxl__dm_spawn_cb(libxl__egc *egc, libxl__dm_spawn_state*,
--
Anthony Perard | Vates XCP-ng Developer
XCP-ng & Xen Orchestra - Vates solutions
web: https://vates.tech