diff options
Diffstat (limited to 'tools/libxl/libxl.c')
-rw-r--r-- | tools/libxl/libxl.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index 0600ce43f3..7e8bf45cf5 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -276,6 +276,8 @@ int libxl__domain_rename(libxl__gc *gc, uint32_t domid, 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, uint32_t domid, 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, uint32_t domid, 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; |