mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-01 17:35:17 +00:00
qemu: assume support for all migration protocols except rdma
Since we require QEMU 0.12.0, we can assume that QEMU supports all of the fd, tcp, unix and exec migration protocols. Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
This commit is contained in:
parent
8e5a21ee05
commit
2e90c9daf9
@ -1081,7 +1081,6 @@ virCapsPtr virQEMUCapsInit(virQEMUCapsCachePtr cache)
|
||||
static int
|
||||
virQEMUCapsComputeCmdFlags(const char *help,
|
||||
unsigned int version,
|
||||
unsigned int kvm_version,
|
||||
virQEMUCapsPtr qemuCaps,
|
||||
bool check_yajl ATTRIBUTE_UNUSED)
|
||||
{
|
||||
@ -1235,33 +1234,6 @@ virQEMUCapsComputeCmdFlags(const char *help,
|
||||
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);
|
||||
|
||||
@ -1444,7 +1416,7 @@ int virQEMUCapsParseHelpStr(const char *qemu,
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (virQEMUCapsComputeCmdFlags(help, *version, *kvm_version,
|
||||
if (virQEMUCapsComputeCmdFlags(help, *version,
|
||||
qemuCaps, check_yajl) < 0)
|
||||
goto cleanup;
|
||||
|
||||
@ -3200,15 +3172,12 @@ static qemuMonitorCallbacks callbacks = {
|
||||
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);
|
||||
@ -3225,7 +3194,6 @@ virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps)
|
||||
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);
|
||||
|
@ -57,11 +57,11 @@ typedef enum {
|
||||
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 */
|
||||
@ -75,7 +75,7 @@ typedef enum {
|
||||
|
||||
/* 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 */
|
||||
@ -112,7 +112,7 @@ typedef enum {
|
||||
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 */
|
||||
|
@ -11064,18 +11064,9 @@ qemuBuildCommandLine(virConnectPtr conn,
|
||||
}
|
||||
}
|
||||
|
||||
/* 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)) {
|
||||
@ -11086,45 +11077,14 @@ qemuBuildCommandLine(virConnectPtr conn,
|
||||
}
|
||||
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,
|
||||
|
@ -4359,15 +4359,8 @@ qemuMigrationRun(virQEMUDriverPtr driver,
|
||||
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:
|
||||
@ -4562,8 +4555,7 @@ static int doNativeMigrate(virQEMUDriverPtr driver,
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
@ -4600,11 +4592,11 @@ static int doTunnelMigrate(virQEMUDriverPtr driver,
|
||||
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, "
|
||||
@ -4613,53 +4605,24 @@ static int doTunnelMigrate(virQEMUDriverPtr driver,
|
||||
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;
|
||||
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.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,
|
||||
@ -5943,8 +5906,7 @@ qemuMigrationToFile(virQEMUDriverPtr driver, virDomainObjPtr vm,
|
||||
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
|
||||
@ -5983,8 +5945,7 @@ qemuMigrationToFile(virQEMUDriverPtr driver, virDomainObjPtr vm,
|
||||
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);
|
||||
|
@ -275,7 +275,6 @@ mymain(void)
|
||||
|
||||
DO_TEST("nosharepages");
|
||||
|
||||
DO_TEST("restore-v1");
|
||||
DO_TEST("restore-v2");
|
||||
DO_TEST("migrate");
|
||||
|
||||
|
@ -1,13 +1,10 @@
|
||||
<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'/>
|
||||
@ -29,7 +26,6 @@
|
||||
<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'/>
|
||||
|
@ -1,13 +1,10 @@
|
||||
<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'/>
|
||||
@ -30,7 +27,6 @@
|
||||
<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'/>
|
||||
|
@ -1,13 +1,10 @@
|
||||
<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'/>
|
||||
@ -30,7 +27,6 @@
|
||||
<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'/>
|
||||
|
@ -1,13 +1,10 @@
|
||||
<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'/>
|
||||
@ -30,7 +27,6 @@
|
||||
<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'/>
|
||||
|
@ -1,13 +1,10 @@
|
||||
<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'/>
|
||||
@ -30,7 +27,6 @@
|
||||
<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'/>
|
||||
|
@ -1,13 +1,10 @@
|
||||
<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'/>
|
||||
@ -30,7 +27,6 @@
|
||||
<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'/>
|
||||
|
@ -1,13 +1,10 @@
|
||||
<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'/>
|
||||
@ -30,7 +27,6 @@
|
||||
<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'/>
|
||||
|
@ -1,13 +1,10 @@
|
||||
<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'/>
|
||||
@ -30,7 +27,6 @@
|
||||
<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'/>
|
||||
|
@ -1,13 +1,10 @@
|
||||
<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'/>
|
||||
@ -30,7 +27,6 @@
|
||||
<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'/>
|
||||
|
@ -152,8 +152,6 @@ mymain(void)
|
||||
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,
|
||||
@ -162,7 +160,6 @@ mymain(void)
|
||||
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,
|
||||
@ -173,7 +170,6 @@ mymain(void)
|
||||
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,
|
||||
@ -183,8 +179,6 @@ mymain(void)
|
||||
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,
|
||||
@ -194,7 +188,6 @@ mymain(void)
|
||||
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,
|
||||
@ -215,7 +208,6 @@ mymain(void)
|
||||
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,
|
||||
@ -240,8 +232,6 @@ mymain(void)
|
||||
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,
|
||||
@ -252,7 +242,6 @@ mymain(void)
|
||||
QEMU_CAPS_PCIDEVICE,
|
||||
QEMU_CAPS_MEM_PATH,
|
||||
QEMU_CAPS_SDL,
|
||||
QEMU_CAPS_MIGRATE_QEMU_UNIX,
|
||||
QEMU_CAPS_CHARDEV,
|
||||
QEMU_CAPS_BALLOON,
|
||||
QEMU_CAPS_DEVICE,
|
||||
@ -267,7 +256,6 @@ mymain(void)
|
||||
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,
|
||||
@ -277,8 +265,6 @@ mymain(void)
|
||||
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,
|
||||
@ -290,7 +276,6 @@ mymain(void)
|
||||
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,
|
||||
@ -312,7 +297,6 @@ mymain(void)
|
||||
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,
|
||||
@ -344,8 +328,6 @@ mymain(void)
|
||||
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,
|
||||
@ -356,7 +338,6 @@ mymain(void)
|
||||
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,
|
||||
@ -377,7 +358,6 @@ mymain(void)
|
||||
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,
|
||||
@ -408,8 +388,6 @@ mymain(void)
|
||||
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,
|
||||
@ -420,7 +398,6 @@ mymain(void)
|
||||
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,
|
||||
@ -440,7 +417,6 @@ mymain(void)
|
||||
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,
|
||||
@ -480,8 +456,6 @@ mymain(void)
|
||||
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,
|
||||
@ -491,7 +465,6 @@ mymain(void)
|
||||
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,
|
||||
@ -510,7 +483,6 @@ mymain(void)
|
||||
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,
|
||||
@ -567,8 +539,6 @@ mymain(void)
|
||||
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,
|
||||
@ -578,7 +548,6 @@ mymain(void)
|
||||
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,
|
||||
@ -597,7 +566,6 @@ mymain(void)
|
||||
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,
|
||||
|
@ -28,4 +28,4 @@ host-nodes=5,host-nodes=7,policy=bind \
|
||||
-net none \
|
||||
-serial none \
|
||||
-parallel none \
|
||||
-incoming stdio
|
||||
-incoming fd:7
|
||||
|
@ -1,23 +0,0 @@
|
||||
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
|
@ -1,28 +0,0 @@
|
||||
<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>
|
@ -1253,16 +1253,13 @@ mymain(void)
|
||||
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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user