# HG changeset patch
# User Ian Campbell <ian.campbell@citrix.com>
# Date 1341397625 -3600
# Node ID 167f013324e854a28fc7637cbb7211fa266dcbc5
# Parent 12011fcfd5cce2a831da3558c59f2c3622e71250
libxl: rename stubdomain when renaming domain.
Otherwise after a localhost migrate of an HVM domain with a stubdomain we end
up with domains called "FOO" and "FOO--incoming-dm". This
because we initially
create the domains as "FOO--incoming" and then rename to
"FOO" inorder to
maintain the uniqueness of domain names on a host.
In this state a second attempt to migrate will fail upon attempting to create
a new domain named "FOO--incoming-dm"
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
diff -r 12011fcfd5cc -r 167f013324e8 tools/libxl/libxl.c
--- a/tools/libxl/libxl.c Thu Jun 28 13:25:02 2012 +0100
+++ b/tools/libxl/libxl.c Wed Jul 04 11:27:05 2012 +0100
@@ -276,6 +276,8 @@ int libxl__domain_rename(libxl__gc *gc,
char *got_old_name;
unsigned int got_old_len;
xs_transaction_t our_trans = 0;
+ uint32_t stub_dm_domid;
+ const char *stub_dm_old_name = NULL, *stub_dm_new_name = NULL;
int rc;
dom_path = libxl__xs_get_dompath(gc, domid);
@@ -284,6 +286,12 @@ int libxl__domain_rename(libxl__gc *gc,
name_path= libxl__sprintf(gc, "%s/name", dom_path);
if (!name_path) goto x_nomem;
+ stub_dm_domid = libxl_get_stubdom_id(CTX, domid);
+ if (stub_dm_domid) {
+ stub_dm_old_name = libxl__stub_dm_name(gc, old_name);
+ stub_dm_new_name = libxl__stub_dm_name(gc, new_name);
+ }
+
retry_transaction:
if (!trans) {
trans = our_trans = xs_transaction_start(ctx->xsh);
@@ -341,6 +349,17 @@ int libxl__domain_rename(libxl__gc *gc,
goto x_fail;
}
+ if (stub_dm_domid) {
+ rc = libxl__domain_rename(gc, stub_dm_domid,
+ stub_dm_old_name,
+ stub_dm_new_name,
+ trans);
+ if (rc) {
+ LOGE(ERROR, "unable to rename stub-domain");
+ goto x_rc;
+ }
+ }
+
if (our_trans) {
if (!xs_transaction_end(ctx->xsh, our_trans, 0)) {
trans = our_trans = 0;
diff -r 12011fcfd5cc -r 167f013324e8 tools/libxl/libxl_dm.c
--- a/tools/libxl/libxl_dm.c Thu Jun 28 13:25:02 2012 +0100
+++ b/tools/libxl/libxl_dm.c Wed Jul 04 11:27:05 2012 +0100
@@ -705,6 +705,11 @@ static void spaw_stubdom_pvqemu_destroy_
libxl__destroy_domid_state *dis,
int rc);
+char *libxl__stub_dm_name(libxl__gc *gc, const char *guest_name)
+{
+ return libxl__sprintf(gc, "%s-dm", guest_name);
+}
+
void libxl__spawn_stub_dm(libxl__egc *egc, libxl__stub_dm_spawn_state *sdss)
{
STATE_AO_GC(sdss->dm.spawn.ao);
@@ -733,7 +738,7 @@ void libxl__spawn_stub_dm(libxl__egc *eg
libxl_domain_create_info_init(&dm_config->c_info);
dm_config->c_info.type = LIBXL_DOMAIN_TYPE_PV;
- dm_config->c_info.name = libxl__sprintf(gc, "%s-dm",
+ dm_config->c_info.name = libxl__stub_dm_name(gc,
libxl__domid_to_name(gc, guest_domid));
dm_config->c_info.ssidref =
guest_config->b_info.device_model_ssidref;
diff -r 12011fcfd5cc -r 167f013324e8 tools/libxl/libxl_internal.h
--- a/tools/libxl/libxl_internal.h Thu Jun 28 13:25:02 2012 +0100
+++ b/tools/libxl/libxl_internal.h Wed Jul 04 11:27:05 2012 +0100
@@ -2290,6 +2290,8 @@ typedef struct {
_hidden void libxl__spawn_stub_dm(libxl__egc *egc,
libxl__stub_dm_spawn_state*);
+_hidden char *libxl__stub_dm_name(libxl__gc *gc, const char * guest_name);
+
/*----- Domain creation -----*/
typedef struct libxl__domain_create_state libxl__domain_create_state;
Ian Jackson
2012-Jul-23 10:54 UTC
Re: [PATCH] libxl: rename stubdomain when renaming domain
Ian Campbell writes ("[PATCH] libxl: rename stubdomain when renaming
domain"):> libxl: rename stubdomain when renaming domain.
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Ian Campbell
2012-Jul-23 12:18 UTC
Re: [PATCH] libxl: rename stubdomain when renaming domain
On Mon, 2012-07-23 at 11:54 +0100, Ian Jackson wrote:> Ian Campbell writes ("[PATCH] libxl: rename stubdomain when renaming domain"): > > libxl: rename stubdomain when renaming domain. > > Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>Thanks, Applied.
Apparently Analagous Threads
- [PATCH] libxl: do not overwrite user supplied config when running bootloader
- [PATCH 00/10] FLASK updates: MSI interrupts, cleanups
- Virtual address to physical mapping in Stubdomain
- [PATCH v5 1/2] libxl: Introduce functions to add and remove USB devices to an HVM guest
- [PATCH 0 of 4] Support for VM generation ID save/restore and migrate