static int
virQEMUCapsComputeCmdFlags(const char *help,
unsigned int version,
- unsigned int kvm_version,
virQEMUCapsPtr qemuCaps,
bool check_yajl ATTRIBUTE_UNUSED)
{
if (strstr(help, "-machine"))
virQEMUCapsSet(qemuCaps, QEMU_CAPS_MACHINE_OPT);
- /*
- * Handling of -incoming arg with varying features
- * -incoming tcp (kvm >= 79, qemu >= 0.10.0)
- * -incoming exec (kvm >= 80, qemu >= 0.10.0)
- * -incoming unix (qemu >= 0.12.0)
- * -incoming fd (qemu >= 0.12.0)
- * -incoming stdio (all earlier kvm)
- *
- * NB, there was a pre-kvm-79 'tcp' support, but it
- * was broken, because it blocked the monitor console
- * while waiting for data, so pretend it doesn't exist
- */
- if (version >= 10000) {
- virQEMUCapsSet(qemuCaps, QEMU_CAPS_MIGRATE_QEMU_TCP);
- virQEMUCapsSet(qemuCaps, QEMU_CAPS_MIGRATE_QEMU_EXEC);
- if (version >= 12000) {
- virQEMUCapsSet(qemuCaps, QEMU_CAPS_MIGRATE_QEMU_UNIX);
- virQEMUCapsSet(qemuCaps, QEMU_CAPS_MIGRATE_QEMU_FD);
- }
- } else if (kvm_version >= 79) {
- virQEMUCapsSet(qemuCaps, QEMU_CAPS_MIGRATE_QEMU_TCP);
- if (kvm_version >= 80)
- virQEMUCapsSet(qemuCaps, QEMU_CAPS_MIGRATE_QEMU_EXEC);
- } else if (kvm_version > 0) {
- virQEMUCapsSet(qemuCaps, QEMU_CAPS_MIGRATE_KVM_STDIO);
- }
-
if (version >= 10000)
virQEMUCapsSet(qemuCaps, QEMU_CAPS_0_10);
goto cleanup;
}
- if (virQEMUCapsComputeCmdFlags(help, *version, *kvm_version,
+ if (virQEMUCapsComputeCmdFlags(help, *version,
qemuCaps, check_yajl) < 0)
goto cleanup;
static void
virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps)
{
- virQEMUCapsSet(qemuCaps, QEMU_CAPS_MIGRATE_QEMU_TCP);
- virQEMUCapsSet(qemuCaps, QEMU_CAPS_MIGRATE_QEMU_EXEC);
virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_CACHE_V2);
virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_FORMAT);
virQEMUCapsSet(qemuCaps, QEMU_CAPS_VGA);
virQEMUCapsSet(qemuCaps, QEMU_CAPS_0_10);
virQEMUCapsSet(qemuCaps, QEMU_CAPS_MEM_PATH);
virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_SERIAL);
- virQEMUCapsSet(qemuCaps, QEMU_CAPS_MIGRATE_QEMU_UNIX);
virQEMUCapsSet(qemuCaps, QEMU_CAPS_CHARDEV);
virQEMUCapsSet(qemuCaps, QEMU_CAPS_MONITOR_JSON);
virQEMUCapsSet(qemuCaps, QEMU_CAPS_BALLOON);
virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_READONLY);
virQEMUCapsSet(qemuCaps, QEMU_CAPS_SMBIOS_TYPE);
virQEMUCapsSet(qemuCaps, QEMU_CAPS_VGA_NONE);
- virQEMUCapsSet(qemuCaps, QEMU_CAPS_MIGRATE_QEMU_FD);
virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_AIO);
virQEMUCapsSet(qemuCaps, QEMU_CAPS_CHARDEV_SPICEVMC);
virQEMUCapsSet(qemuCaps, QEMU_CAPS_DEVICE_QXL_VGA);
X_QEMU_CAPS_UUID, /* Is the -uuid flag available */
X_QEMU_CAPS_DOMID, /* Xenner: -domid flag available */
X_QEMU_CAPS_VNET_HDR,
- QEMU_CAPS_MIGRATE_KVM_STDIO, /* avoid kvm tcp migration bug */
+ X_QEMU_CAPS_MIGRATE_KVM_STDIO, /* avoid kvm tcp migration bug */
/* 10 */
- QEMU_CAPS_MIGRATE_QEMU_TCP, /* have qemu tcp migration */
- QEMU_CAPS_MIGRATE_QEMU_EXEC, /* have qemu exec migration */
+ X_QEMU_CAPS_MIGRATE_QEMU_TCP, /* have qemu tcp migration */
+ X_QEMU_CAPS_MIGRATE_QEMU_EXEC, /* have qemu exec migration */
QEMU_CAPS_DRIVE_CACHE_V2, /* cache= flag wanting new v2 values */
QEMU_CAPS_KVM, /* Whether KVM is enabled by default */
QEMU_CAPS_DRIVE_FORMAT, /* Is -drive format= avail */
/* 20 */
X_QEMU_CAPS_XEN_DOMID, /* -xen-domid */
- QEMU_CAPS_MIGRATE_QEMU_UNIX, /* qemu migration via unix sockets */
+ X_QEMU_CAPS_MIGRATE_QEMU_UNIX, /* qemu migration via unix sockets */
QEMU_CAPS_CHARDEV, /* Is the new -chardev arg available */
QEMU_CAPS_ENABLE_KVM, /* -enable-kvm flag */
QEMU_CAPS_MONITOR_JSON, /* JSON mode for monitor */
QEMU_CAPS_VGA_QXL, /* The 'qxl' arg for '-vga' */
QEMU_CAPS_SPICE, /* Is -spice avail */
QEMU_CAPS_VGA_NONE, /* The 'none' arg for '-vga' */
- QEMU_CAPS_MIGRATE_QEMU_FD, /* -incoming fd:n */
+ X_QEMU_CAPS_MIGRATE_QEMU_FD, /* -incoming fd:n */
QEMU_CAPS_BOOTINDEX, /* -device bootindex property */
/* 50 */
}
}
- /* Migration is very annoying due to wildly varying syntax &
- * capabilities over time of KVM / QEMU codebases.
- */
if (migrateFrom) {
virCommandAddArg(cmd, "-incoming");
if (STRPREFIX(migrateFrom, "tcp")) {
- if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_MIGRATE_QEMU_TCP)) {
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
- "%s", _("TCP migration is not supported with "
- "this QEMU binary"));
- goto error;
- }
virCommandAddArg(cmd, migrateFrom);
} else if (STRPREFIX(migrateFrom, "rdma")) {
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_MIGRATE_RDMA)) {
}
virCommandAddArg(cmd, migrateFrom);
} else if (STREQ(migrateFrom, "stdio")) {
- if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_MIGRATE_QEMU_FD)) {
- virCommandAddArgFormat(cmd, "fd:%d", migrateFd);
- virCommandPassFD(cmd, migrateFd, 0);
- } else if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_MIGRATE_QEMU_EXEC)) {
- virCommandAddArg(cmd, "exec:cat");
- virCommandSetInputFD(cmd, migrateFd);
- } else if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_MIGRATE_KVM_STDIO)) {
- virCommandAddArg(cmd, migrateFrom);
- virCommandSetInputFD(cmd, migrateFd);
- } else {
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
- "%s", _("STDIO migration is not supported "
- "with this QEMU binary"));
- goto error;
- }
+ virCommandAddArgFormat(cmd, "fd:%d", migrateFd);
+ virCommandPassFD(cmd, migrateFd, 0);
} else if (STRPREFIX(migrateFrom, "exec")) {
- if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_MIGRATE_QEMU_EXEC)) {
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
- "%s", _("EXEC migration is not supported "
- "with this QEMU binary"));
- goto error;
- }
virCommandAddArg(cmd, migrateFrom);
} else if (STRPREFIX(migrateFrom, "fd")) {
- if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_MIGRATE_QEMU_FD)) {
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
- "%s", _("FD migration is not supported "
- "with this QEMU binary"));
- goto error;
- }
virCommandAddArg(cmd, migrateFrom);
virCommandPassFD(cmd, migrateFd, 0);
} else if (STRPREFIX(migrateFrom, "unix")) {
- if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_MIGRATE_QEMU_UNIX)) {
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
- "%s", _("UNIX migration is not supported "
- "with this QEMU binary"));
- goto error;
- }
virCommandAddArg(cmd, migrateFrom);
} else {
virReportError(VIR_ERR_INTERNAL_ERROR,
break;
case MIGRATION_DEST_UNIX:
- if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATE_QEMU_UNIX)) {
- ret = qemuMonitorMigrateToUnix(priv->mon, migrate_flags,
- spec->dest.unix_socket.file);
- } else {
- const char *args[] = {
- "nc", "-U", spec->dest.unix_socket.file, NULL
- };
- ret = qemuMonitorMigrateToCommand(priv->mon, migrate_flags, args);
- }
+ ret = qemuMonitorMigrateToUnix(priv->mon, migrate_flags,
+ spec->dest.unix_socket.file);
break;
case MIGRATION_DEST_FD:
}
}
- if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATE_QEMU_FD) &&
- STRNEQ(uribits->scheme, "rdma"))
+ if (STRNEQ(uribits->scheme, "rdma"))
spec.destType = MIGRATION_DEST_CONNECT_HOST;
else
spec.destType = MIGRATION_DEST_HOST;
size_t nmigrate_disks,
const char **migrate_disks)
{
- qemuDomainObjPrivatePtr priv = vm->privateData;
virNetSocketPtr sock = NULL;
int ret = -1;
qemuMigrationSpec spec;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
+ int fds[2] = { -1, -1 };
VIR_DEBUG("driver=%p, vm=%p, st=%p, cookiein=%s, cookieinlen=%d, "
"cookieout=%p, cookieoutlen=%p, flags=%lx, resource=%lu, "
cookieout, cookieoutlen, flags, resource,
NULLSTR(graphicsuri), nmigrate_disks, migrate_disks);
- if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATE_QEMU_FD) &&
- !virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATE_QEMU_UNIX) &&
- !virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATE_QEMU_EXEC)) {
- virReportError(VIR_ERR_OPERATION_FAILED, "%s",
- _("Source qemu is too old to support tunnelled migration"));
- virObjectUnref(cfg);
- return -1;
- }
-
spec.fwdType = MIGRATION_FWD_STREAM;
spec.fwd.stream = st;
- if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATE_QEMU_FD)) {
- int fds[2];
-
- spec.destType = MIGRATION_DEST_FD;
- spec.dest.fd.qemu = -1;
- spec.dest.fd.local = -1;
-
- if (pipe2(fds, O_CLOEXEC) == 0) {
- spec.dest.fd.qemu = fds[1];
- spec.dest.fd.local = fds[0];
- }
- if (spec.dest.fd.qemu == -1 ||
- virSecurityManagerSetImageFDLabel(driver->securityManager, vm->def,
- spec.dest.fd.qemu) < 0) {
- virReportSystemError(errno, "%s",
- _("cannot create pipe for tunnelled migration"));
- goto cleanup;
- }
- } else {
- spec.destType = MIGRATION_DEST_UNIX;
- spec.dest.unix_socket.sock = -1;
- spec.dest.unix_socket.file = NULL;
-
- if (virAsprintf(&spec.dest.unix_socket.file,
- "%s/qemu.tunnelmigrate.src.%s",
- cfg->libDir, vm->def->name) < 0)
- goto cleanup;
- if (virNetSocketNewListenUNIX(spec.dest.unix_socket.file, 0700,
- cfg->user, cfg->group,
- &sock) < 0 ||
- virNetSocketListen(sock, 1) < 0)
- goto cleanup;
+ spec.destType = MIGRATION_DEST_FD;
+ spec.dest.fd.qemu = -1;
+ spec.dest.fd.local = -1;
- spec.dest.unix_socket.sock = virNetSocketGetFD(sock);
+ if (pipe2(fds, O_CLOEXEC) == 0) {
+ spec.dest.fd.qemu = fds[1];
+ spec.dest.fd.local = fds[0];
+ }
+ if (spec.dest.fd.qemu == -1 ||
+ virSecurityManagerSetImageFDLabel(driver->securityManager, vm->def,
+ spec.dest.fd.qemu) < 0) {
+ virReportSystemError(errno, "%s",
+ _("cannot create pipe for tunnelled migration"));
+ goto cleanup;
}
ret = qemuMigrationRun(driver, vm, cookiein, cookieinlen, cookieout,
return -1;
}
- if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATE_QEMU_FD) &&
- (!compressor || pipe(pipeFD) == 0)) {
+ if ((!compressor || pipe(pipeFD) == 0)) {
/* All right! We can use fd migration, which means that qemu
* doesn't have to open() the file, so while we still have to
* grant SELinux access, we can do it on fd and avoid cleanup
if (!compressor) {
const char *args[] = { "cat", NULL };
- if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATE_QEMU_FD) &&
- priv->monConfig->type == VIR_DOMAIN_CHR_TYPE_UNIX) {
+ if (priv->monConfig->type == VIR_DOMAIN_CHR_TYPE_UNIX) {
rc = qemuMonitorMigrateToFd(priv->mon,
QEMU_MONITOR_MIGRATE_BACKGROUND,
fd);
DO_TEST("nosharepages");
- DO_TEST("restore-v1");
DO_TEST("restore-v2");
DO_TEST("migrate");
<qemuCaps>
- <flag name='migrate-qemu-tcp'/>
- <flag name='migrate-qemu-exec'/>
<flag name='drive-cache-v2'/>
<flag name='drive-format'/>
<flag name='vga'/>
<flag name='0.10'/>
<flag name='mem-path'/>
<flag name='drive-serial'/>
- <flag name='migrate-qemu-unix'/>
<flag name='chardev'/>
<flag name='enable-kvm'/>
<flag name='monitor-json'/>
<flag name='vga-qxl'/>
<flag name='spice'/>
<flag name='vga-none'/>
- <flag name='migrate-qemu-fd'/>
<flag name='boot-index'/>
<flag name='hda-duplex'/>
<flag name='drive-aio'/>
<qemuCaps>
- <flag name='migrate-qemu-tcp'/>
- <flag name='migrate-qemu-exec'/>
<flag name='drive-cache-v2'/>
<flag name='drive-format'/>
<flag name='vga'/>
<flag name='0.10'/>
<flag name='mem-path'/>
<flag name='drive-serial'/>
- <flag name='migrate-qemu-unix'/>
<flag name='chardev'/>
<flag name='enable-kvm'/>
<flag name='monitor-json'/>
<flag name='vga-qxl'/>
<flag name='spice'/>
<flag name='vga-none'/>
- <flag name='migrate-qemu-fd'/>
<flag name='boot-index'/>
<flag name='hda-duplex'/>
<flag name='drive-aio'/>
<qemuCaps>
- <flag name='migrate-qemu-tcp'/>
- <flag name='migrate-qemu-exec'/>
<flag name='drive-cache-v2'/>
<flag name='drive-format'/>
<flag name='vga'/>
<flag name='0.10'/>
<flag name='mem-path'/>
<flag name='drive-serial'/>
- <flag name='migrate-qemu-unix'/>
<flag name='chardev'/>
<flag name='enable-kvm'/>
<flag name='monitor-json'/>
<flag name='vga-qxl'/>
<flag name='spice'/>
<flag name='vga-none'/>
- <flag name='migrate-qemu-fd'/>
<flag name='boot-index'/>
<flag name='hda-duplex'/>
<flag name='drive-aio'/>
<qemuCaps>
- <flag name='migrate-qemu-tcp'/>
- <flag name='migrate-qemu-exec'/>
<flag name='drive-cache-v2'/>
<flag name='drive-format'/>
<flag name='vga'/>
<flag name='0.10'/>
<flag name='mem-path'/>
<flag name='drive-serial'/>
- <flag name='migrate-qemu-unix'/>
<flag name='chardev'/>
<flag name='enable-kvm'/>
<flag name='monitor-json'/>
<flag name='vga-qxl'/>
<flag name='spice'/>
<flag name='vga-none'/>
- <flag name='migrate-qemu-fd'/>
<flag name='boot-index'/>
<flag name='hda-duplex'/>
<flag name='drive-aio'/>
<qemuCaps>
- <flag name='migrate-qemu-tcp'/>
- <flag name='migrate-qemu-exec'/>
<flag name='drive-cache-v2'/>
<flag name='drive-format'/>
<flag name='vga'/>
<flag name='0.10'/>
<flag name='mem-path'/>
<flag name='drive-serial'/>
- <flag name='migrate-qemu-unix'/>
<flag name='chardev'/>
<flag name='enable-kvm'/>
<flag name='monitor-json'/>
<flag name='vga-qxl'/>
<flag name='spice'/>
<flag name='vga-none'/>
- <flag name='migrate-qemu-fd'/>
<flag name='boot-index'/>
<flag name='hda-duplex'/>
<flag name='drive-aio'/>
<qemuCaps>
- <flag name='migrate-qemu-tcp'/>
- <flag name='migrate-qemu-exec'/>
<flag name='drive-cache-v2'/>
<flag name='drive-format'/>
<flag name='vga'/>
<flag name='0.10'/>
<flag name='mem-path'/>
<flag name='drive-serial'/>
- <flag name='migrate-qemu-unix'/>
<flag name='chardev'/>
<flag name='enable-kvm'/>
<flag name='monitor-json'/>
<flag name='vga-qxl'/>
<flag name='spice'/>
<flag name='vga-none'/>
- <flag name='migrate-qemu-fd'/>
<flag name='boot-index'/>
<flag name='hda-duplex'/>
<flag name='drive-aio'/>
<qemuCaps>
- <flag name='migrate-qemu-tcp'/>
- <flag name='migrate-qemu-exec'/>
<flag name='drive-cache-v2'/>
<flag name='drive-format'/>
<flag name='vga'/>
<flag name='0.10'/>
<flag name='mem-path'/>
<flag name='drive-serial'/>
- <flag name='migrate-qemu-unix'/>
<flag name='chardev'/>
<flag name='enable-kvm'/>
<flag name='monitor-json'/>
<flag name='vga-qxl'/>
<flag name='spice'/>
<flag name='vga-none'/>
- <flag name='migrate-qemu-fd'/>
<flag name='boot-index'/>
<flag name='hda-duplex'/>
<flag name='drive-aio'/>
<qemuCaps>
- <flag name='migrate-qemu-tcp'/>
- <flag name='migrate-qemu-exec'/>
<flag name='drive-cache-v2'/>
<flag name='drive-format'/>
<flag name='vga'/>
<flag name='0.10'/>
<flag name='mem-path'/>
<flag name='drive-serial'/>
- <flag name='migrate-qemu-unix'/>
<flag name='chardev'/>
<flag name='enable-kvm'/>
<flag name='monitor-json'/>
<flag name='vga-qxl'/>
<flag name='spice'/>
<flag name='vga-none'/>
- <flag name='migrate-qemu-fd'/>
<flag name='boot-index'/>
<flag name='hda-duplex'/>
<flag name='drive-aio'/>
<qemuCaps>
- <flag name='migrate-qemu-tcp'/>
- <flag name='migrate-qemu-exec'/>
<flag name='drive-cache-v2'/>
<flag name='drive-format'/>
<flag name='vga'/>
<flag name='0.10'/>
<flag name='mem-path'/>
<flag name='drive-serial'/>
- <flag name='migrate-qemu-unix'/>
<flag name='chardev'/>
<flag name='enable-kvm'/>
<flag name='monitor-json'/>
<flag name='vga-qxl'/>
<flag name='spice'/>
<flag name='vga-none'/>
- <flag name='migrate-qemu-fd'/>
<flag name='boot-index'/>
<flag name='hda-duplex'/>
<flag name='drive-aio'/>
DO_TEST_FULL(name, version, is_kvm, kvm_version, VIR_ERR_OK, __VA_ARGS__)
DO_TEST("qemu-0.12.1", 12001, 0, 0,
- QEMU_CAPS_MIGRATE_QEMU_TCP,
- QEMU_CAPS_MIGRATE_QEMU_EXEC,
QEMU_CAPS_DRIVE_CACHE_V2,
QEMU_CAPS_DRIVE_FORMAT,
QEMU_CAPS_DRIVE_SERIAL,
QEMU_CAPS_0_10,
QEMU_CAPS_ENABLE_KVM,
QEMU_CAPS_SDL,
- QEMU_CAPS_MIGRATE_QEMU_UNIX,
QEMU_CAPS_CHARDEV,
QEMU_CAPS_BALLOON,
QEMU_CAPS_DEVICE,
QEMU_CAPS_NAME_PROCESS,
QEMU_CAPS_SMBIOS_TYPE,
QEMU_CAPS_VGA_NONE,
- QEMU_CAPS_MIGRATE_QEMU_FD,
QEMU_CAPS_DRIVE_AIO,
QEMU_CAPS_NO_SHUTDOWN,
QEMU_CAPS_PCI_ROMBAR,
QEMU_CAPS_VNC);
DO_TEST("qemu-kvm-0.12.1.2-rhel60", 12001, 1, 0,
QEMU_CAPS_DRIVE_BOOT,
- QEMU_CAPS_MIGRATE_QEMU_TCP,
- QEMU_CAPS_MIGRATE_QEMU_EXEC,
QEMU_CAPS_DRIVE_CACHE_V2,
QEMU_CAPS_KVM,
QEMU_CAPS_DRIVE_FORMAT,
QEMU_CAPS_0_10,
QEMU_CAPS_PCIDEVICE,
QEMU_CAPS_MEM_PATH,
- QEMU_CAPS_MIGRATE_QEMU_UNIX,
QEMU_CAPS_CHARDEV,
QEMU_CAPS_ENABLE_KVM,
QEMU_CAPS_MONITOR_JSON,
QEMU_CAPS_VGA_QXL,
QEMU_CAPS_SPICE,
QEMU_CAPS_VGA_NONE,
- QEMU_CAPS_MIGRATE_QEMU_FD,
QEMU_CAPS_DRIVE_AIO,
QEMU_CAPS_DEVICE_SPICEVMC,
QEMU_CAPS_PIIX3_USB_UHCI,
QEMU_CAPS_DEVICE_VIRTIO_NET);
DO_TEST("qemu-kvm-0.12.3", 12003, 1, 0,
QEMU_CAPS_DRIVE_BOOT,
- QEMU_CAPS_MIGRATE_QEMU_TCP,
- QEMU_CAPS_MIGRATE_QEMU_EXEC,
QEMU_CAPS_DRIVE_CACHE_V2,
QEMU_CAPS_KVM,
QEMU_CAPS_DRIVE_FORMAT,
QEMU_CAPS_PCIDEVICE,
QEMU_CAPS_MEM_PATH,
QEMU_CAPS_SDL,
- QEMU_CAPS_MIGRATE_QEMU_UNIX,
QEMU_CAPS_CHARDEV,
QEMU_CAPS_BALLOON,
QEMU_CAPS_DEVICE,
QEMU_CAPS_NAME_PROCESS,
QEMU_CAPS_SMBIOS_TYPE,
QEMU_CAPS_VGA_NONE,
- QEMU_CAPS_MIGRATE_QEMU_FD,
QEMU_CAPS_DRIVE_AIO,
QEMU_CAPS_NO_SHUTDOWN,
QEMU_CAPS_PCI_ROMBAR,
QEMU_CAPS_VNC);
DO_TEST("qemu-kvm-0.13.0", 13000, 1, 0,
QEMU_CAPS_DRIVE_BOOT,
- QEMU_CAPS_MIGRATE_QEMU_TCP,
- QEMU_CAPS_MIGRATE_QEMU_EXEC,
QEMU_CAPS_DRIVE_CACHE_V2,
QEMU_CAPS_DRIVE_CACHE_UNSAFE,
QEMU_CAPS_KVM,
QEMU_CAPS_PCIDEVICE,
QEMU_CAPS_MEM_PATH,
QEMU_CAPS_SDL,
- QEMU_CAPS_MIGRATE_QEMU_UNIX,
QEMU_CAPS_CHARDEV,
QEMU_CAPS_ENABLE_KVM,
QEMU_CAPS_MONITOR_JSON,
QEMU_CAPS_SMBIOS_TYPE,
QEMU_CAPS_SPICE,
QEMU_CAPS_VGA_NONE,
- QEMU_CAPS_MIGRATE_QEMU_FD,
QEMU_CAPS_DRIVE_AIO,
QEMU_CAPS_DEVICE_SPICEVMC,
QEMU_CAPS_PCI_MULTIFUNCTION,
QEMU_CAPS_DEVICE_E1000,
QEMU_CAPS_DEVICE_VIRTIO_NET);
DO_TEST("qemu-kvm-0.12.1.2-rhel61", 12001, 1, 0,
- QEMU_CAPS_MIGRATE_QEMU_TCP,
- QEMU_CAPS_MIGRATE_QEMU_EXEC,
QEMU_CAPS_DRIVE_CACHE_V2,
QEMU_CAPS_DRIVE_CACHE_UNSAFE,
QEMU_CAPS_KVM,
QEMU_CAPS_0_10,
QEMU_CAPS_PCIDEVICE,
QEMU_CAPS_MEM_PATH,
- QEMU_CAPS_MIGRATE_QEMU_UNIX,
QEMU_CAPS_CHARDEV,
QEMU_CAPS_ENABLE_KVM,
QEMU_CAPS_MONITOR_JSON,
QEMU_CAPS_VGA_QXL,
QEMU_CAPS_SPICE,
QEMU_CAPS_VGA_NONE,
- QEMU_CAPS_MIGRATE_QEMU_FD,
QEMU_CAPS_HDA_DUPLEX,
QEMU_CAPS_DRIVE_AIO,
QEMU_CAPS_CCID_PASSTHRU,
QEMU_CAPS_DEVICE_E1000,
QEMU_CAPS_DEVICE_VIRTIO_NET);
DO_TEST("qemu-kvm-0.12.1.2-rhel62-beta", 12001, 1, 0,
- QEMU_CAPS_MIGRATE_QEMU_TCP,
- QEMU_CAPS_MIGRATE_QEMU_EXEC,
QEMU_CAPS_DRIVE_CACHE_V2,
QEMU_CAPS_DRIVE_CACHE_UNSAFE,
QEMU_CAPS_KVM,
QEMU_CAPS_0_10,
QEMU_CAPS_PCIDEVICE,
QEMU_CAPS_MEM_PATH,
- QEMU_CAPS_MIGRATE_QEMU_UNIX,
QEMU_CAPS_CHARDEV,
QEMU_CAPS_ENABLE_KVM,
QEMU_CAPS_BALLOON,
QEMU_CAPS_VGA_QXL,
QEMU_CAPS_SPICE,
QEMU_CAPS_VGA_NONE,
- QEMU_CAPS_MIGRATE_QEMU_FD,
QEMU_CAPS_BOOTINDEX,
QEMU_CAPS_HDA_DUPLEX,
QEMU_CAPS_DRIVE_AIO,
QEMU_CAPS_DEVICE_E1000,
QEMU_CAPS_DEVICE_VIRTIO_NET);
DO_TEST("qemu-1.0", 1000000, 0, 0,
- QEMU_CAPS_MIGRATE_QEMU_TCP,
- QEMU_CAPS_MIGRATE_QEMU_EXEC,
QEMU_CAPS_DRIVE_CACHE_V2,
QEMU_CAPS_DRIVE_CACHE_UNSAFE,
QEMU_CAPS_DRIVE_FORMAT,
QEMU_CAPS_0_10,
QEMU_CAPS_MEM_PATH,
QEMU_CAPS_SDL,
- QEMU_CAPS_MIGRATE_QEMU_UNIX,
QEMU_CAPS_CHARDEV,
QEMU_CAPS_ENABLE_KVM,
QEMU_CAPS_MONITOR_JSON,
QEMU_CAPS_VGA_QXL,
QEMU_CAPS_SPICE,
QEMU_CAPS_VGA_NONE,
- QEMU_CAPS_MIGRATE_QEMU_FD,
QEMU_CAPS_BOOTINDEX,
QEMU_CAPS_HDA_DUPLEX,
QEMU_CAPS_DRIVE_AIO,
QEMU_CAPS_DEVICE_E1000,
QEMU_CAPS_DEVICE_VIRTIO_NET);
DO_TEST("qemu-1.1.0", 1001000, 0, 0,
- QEMU_CAPS_MIGRATE_QEMU_TCP,
- QEMU_CAPS_MIGRATE_QEMU_EXEC,
QEMU_CAPS_DRIVE_CACHE_V2,
QEMU_CAPS_DRIVE_CACHE_UNSAFE,
QEMU_CAPS_DRIVE_FORMAT,
QEMU_CAPS_0_10,
QEMU_CAPS_MEM_PATH,
QEMU_CAPS_SDL,
- QEMU_CAPS_MIGRATE_QEMU_UNIX,
QEMU_CAPS_CHARDEV,
QEMU_CAPS_ENABLE_KVM,
QEMU_CAPS_MONITOR_JSON,
QEMU_CAPS_VGA_QXL,
QEMU_CAPS_SPICE,
QEMU_CAPS_VGA_NONE,
- QEMU_CAPS_MIGRATE_QEMU_FD,
QEMU_CAPS_BOOTINDEX,
QEMU_CAPS_HDA_DUPLEX,
QEMU_CAPS_DRIVE_AIO,
-net none \
-serial none \
-parallel none \
--incoming stdio
+-incoming fd:7
+++ /dev/null
-LC_ALL=C \
-PATH=/bin \
-HOME=/home/test \
-USER=test \
-LOGNAME=test \
-QEMU_AUDIO_DRV=none \
-/usr/bin/qemu \
--name QEMUGuest1 \
--S \
--M pc \
--m 213 \
--smp 1 \
--uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
--nographic \
--monitor unix:/tmp/test-monitor,server,nowait \
--no-acpi \
--boot c \
--usb \
--drive file=/dev/HostVG/QEMUGuest1,if=ide,bus=0,unit=0 \
--net none \
--serial none \
--parallel none \
--incoming stdio
+++ /dev/null
-<domain type='qemu'>
- <name>QEMUGuest1</name>
- <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
- <memory unit='KiB'>219100</memory>
- <currentMemory unit='KiB'>219100</currentMemory>
- <vcpu placement='static'>1</vcpu>
- <os>
- <type arch='i686' machine='pc'>hvm</type>
- <boot dev='hd'/>
- </os>
- <clock offset='utc'/>
- <on_poweroff>destroy</on_poweroff>
- <on_reboot>restart</on_reboot>
- <on_crash>destroy</on_crash>
- <devices>
- <emulator>/usr/bin/qemu</emulator>
- <disk type='block' device='disk'>
- <driver name='qemu' type='raw'/>
- <source dev='/dev/HostVG/QEMUGuest1'/>
- <target dev='hda' bus='ide'/>
- <address type='drive' controller='0' bus='0' target='0' unit='0'/>
- </disk>
- <controller type='usb' index='0'/>
- <controller type='ide' index='0'/>
- <controller type='pci' index='0' model='pci-root'/>
- <memballoon model='none'/>
- </devices>
-</domain>
QEMU_CAPS_PCIDEVICE, QEMU_CAPS_DEVICE, QEMU_CAPS_NODEFCONFIG,
QEMU_CAPS_PCI_ROMBAR);
- DO_TEST_FULL("restore-v1", "stdio", 7, 0, QEMU_CAPS_MIGRATE_KVM_STDIO);
- DO_TEST_FULL("restore-v2", "stdio", 7, 0, QEMU_CAPS_MIGRATE_QEMU_EXEC);
- DO_TEST_FULL("restore-v2", "exec:cat", 7, 0, QEMU_CAPS_MIGRATE_QEMU_EXEC);
- DO_TEST_FULL("restore-v2-fd", "stdio", 7, 0, QEMU_CAPS_MIGRATE_QEMU_FD);
- DO_TEST_FULL("restore-v2-fd", "fd:7", 7, 0, QEMU_CAPS_MIGRATE_QEMU_FD);
- DO_TEST_FULL("migrate", "tcp:10.0.0.1:5000", -1, 0,
- QEMU_CAPS_MIGRATE_QEMU_TCP);
+ DO_TEST_FULL("restore-v2", "exec:cat", 7, 0, NONE);
+ DO_TEST_FULL("restore-v2-fd", "stdio", 7, 0, NONE);
+ DO_TEST_FULL("restore-v2-fd", "fd:7", 7, 0, NONE);
+ DO_TEST_FULL("migrate", "tcp:10.0.0.1:5000", -1, 0, NONE);
DO_TEST_LINUX_FULL("migrate-numa-unaligned", "stdio", 7, 0,
- QEMU_CAPS_MIGRATE_KVM_STDIO, QEMU_CAPS_NUMA,
+ QEMU_CAPS_NUMA,
QEMU_CAPS_OBJECT_MEMORY_RAM);
DO_TEST("qemu-ns", NONE);