{
GC_INIT(ctx);
int rc;
- char *dom_path;
- char *vm_path;
- char *poolname;
- xs_transaction_t t;
-
- dom_path = libxl__xs_get_dompath(gc, domid);
- if (!dom_path) {
- GC_FREE;
- return ERROR_FAIL;
- }
rc = xc_cpupool_movedomain(ctx->xch, poolid, domid);
if (rc) {
return ERROR_FAIL;
}
- for (;;) {
- t = xs_transaction_start(ctx->xsh);
-
- poolname = libxl__cpupoolid_to_name(gc, poolid);
- vm_path = libxl__xs_read(gc, XBT_NULL, libxl__sprintf(gc, "%s/vm", dom_path));
- if (!vm_path)
- break;
-
- libxl__xs_write(gc, t, libxl__sprintf(gc, "%s/pool_name", vm_path),
- "%s", poolname);
-
- if (xs_transaction_end(ctx->xsh, t, 0) || (errno != EAGAIN))
- break;
- }
-
GC_FREE;
return 0;
}
xs_write(ctx->xsh, t, libxl__sprintf(gc, "%s/uuid", vm_path), uuid_string, strlen(uuid_string));
xs_write(ctx->xsh, t, libxl__sprintf(gc, "%s/name", vm_path), info->name, strlen(info->name));
- if (info->poolid != -1)
- libxl__xs_write(gc, t, libxl__sprintf(gc, "%s/pool_name", vm_path),
- "%s", libxl__cpupoolid_to_name(gc, info->poolid));
libxl__xs_writev(gc, t, dom_path, info->xsdata);
libxl__xs_writev(gc, t, libxl__sprintf(gc, "%s/platform", dom_path), info->platformdata);