mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-02 01:45: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
|
static int
|
||||||
virQEMUCapsComputeCmdFlags(const char *help,
|
virQEMUCapsComputeCmdFlags(const char *help,
|
||||||
unsigned int version,
|
unsigned int version,
|
||||||
unsigned int kvm_version,
|
|
||||||
virQEMUCapsPtr qemuCaps,
|
virQEMUCapsPtr qemuCaps,
|
||||||
bool check_yajl ATTRIBUTE_UNUSED)
|
bool check_yajl ATTRIBUTE_UNUSED)
|
||||||
{
|
{
|
||||||
@ -1235,33 +1234,6 @@ virQEMUCapsComputeCmdFlags(const char *help,
|
|||||||
if (strstr(help, "-machine"))
|
if (strstr(help, "-machine"))
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_MACHINE_OPT);
|
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)
|
if (version >= 10000)
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_0_10);
|
virQEMUCapsSet(qemuCaps, QEMU_CAPS_0_10);
|
||||||
|
|
||||||
@ -1444,7 +1416,7 @@ int virQEMUCapsParseHelpStr(const char *qemu,
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (virQEMUCapsComputeCmdFlags(help, *version, *kvm_version,
|
if (virQEMUCapsComputeCmdFlags(help, *version,
|
||||||
qemuCaps, check_yajl) < 0)
|
qemuCaps, check_yajl) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
@ -3200,15 +3172,12 @@ static qemuMonitorCallbacks callbacks = {
|
|||||||
static void
|
static void
|
||||||
virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps)
|
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_CACHE_V2);
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_FORMAT);
|
virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_FORMAT);
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_VGA);
|
virQEMUCapsSet(qemuCaps, QEMU_CAPS_VGA);
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_0_10);
|
virQEMUCapsSet(qemuCaps, QEMU_CAPS_0_10);
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_MEM_PATH);
|
virQEMUCapsSet(qemuCaps, QEMU_CAPS_MEM_PATH);
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_SERIAL);
|
virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_SERIAL);
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_MIGRATE_QEMU_UNIX);
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_CHARDEV);
|
virQEMUCapsSet(qemuCaps, QEMU_CAPS_CHARDEV);
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_MONITOR_JSON);
|
virQEMUCapsSet(qemuCaps, QEMU_CAPS_MONITOR_JSON);
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_BALLOON);
|
virQEMUCapsSet(qemuCaps, QEMU_CAPS_BALLOON);
|
||||||
@ -3225,7 +3194,6 @@ virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps)
|
|||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_READONLY);
|
virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_READONLY);
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_SMBIOS_TYPE);
|
virQEMUCapsSet(qemuCaps, QEMU_CAPS_SMBIOS_TYPE);
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_VGA_NONE);
|
virQEMUCapsSet(qemuCaps, QEMU_CAPS_VGA_NONE);
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_MIGRATE_QEMU_FD);
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_AIO);
|
virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_AIO);
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_CHARDEV_SPICEVMC);
|
virQEMUCapsSet(qemuCaps, QEMU_CAPS_CHARDEV_SPICEVMC);
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_DEVICE_QXL_VGA);
|
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_UUID, /* Is the -uuid flag available */
|
||||||
X_QEMU_CAPS_DOMID, /* Xenner: -domid flag available */
|
X_QEMU_CAPS_DOMID, /* Xenner: -domid flag available */
|
||||||
X_QEMU_CAPS_VNET_HDR,
|
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 */
|
/* 10 */
|
||||||
QEMU_CAPS_MIGRATE_QEMU_TCP, /* have qemu tcp migration */
|
X_QEMU_CAPS_MIGRATE_QEMU_TCP, /* have qemu tcp migration */
|
||||||
QEMU_CAPS_MIGRATE_QEMU_EXEC, /* have qemu exec migration */
|
X_QEMU_CAPS_MIGRATE_QEMU_EXEC, /* have qemu exec migration */
|
||||||
QEMU_CAPS_DRIVE_CACHE_V2, /* cache= flag wanting new v2 values */
|
QEMU_CAPS_DRIVE_CACHE_V2, /* cache= flag wanting new v2 values */
|
||||||
QEMU_CAPS_KVM, /* Whether KVM is enabled by default */
|
QEMU_CAPS_KVM, /* Whether KVM is enabled by default */
|
||||||
QEMU_CAPS_DRIVE_FORMAT, /* Is -drive format= avail */
|
QEMU_CAPS_DRIVE_FORMAT, /* Is -drive format= avail */
|
||||||
@ -75,7 +75,7 @@ typedef enum {
|
|||||||
|
|
||||||
/* 20 */
|
/* 20 */
|
||||||
X_QEMU_CAPS_XEN_DOMID, /* -xen-domid */
|
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_CHARDEV, /* Is the new -chardev arg available */
|
||||||
QEMU_CAPS_ENABLE_KVM, /* -enable-kvm flag */
|
QEMU_CAPS_ENABLE_KVM, /* -enable-kvm flag */
|
||||||
QEMU_CAPS_MONITOR_JSON, /* JSON mode for monitor */
|
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_VGA_QXL, /* The 'qxl' arg for '-vga' */
|
||||||
QEMU_CAPS_SPICE, /* Is -spice avail */
|
QEMU_CAPS_SPICE, /* Is -spice avail */
|
||||||
QEMU_CAPS_VGA_NONE, /* The 'none' arg for '-vga' */
|
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 */
|
QEMU_CAPS_BOOTINDEX, /* -device bootindex property */
|
||||||
|
|
||||||
/* 50 */
|
/* 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) {
|
if (migrateFrom) {
|
||||||
virCommandAddArg(cmd, "-incoming");
|
virCommandAddArg(cmd, "-incoming");
|
||||||
if (STRPREFIX(migrateFrom, "tcp")) {
|
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);
|
virCommandAddArg(cmd, migrateFrom);
|
||||||
} else if (STRPREFIX(migrateFrom, "rdma")) {
|
} else if (STRPREFIX(migrateFrom, "rdma")) {
|
||||||
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_MIGRATE_RDMA)) {
|
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_MIGRATE_RDMA)) {
|
||||||
@ -11086,45 +11077,14 @@ qemuBuildCommandLine(virConnectPtr conn,
|
|||||||
}
|
}
|
||||||
virCommandAddArg(cmd, migrateFrom);
|
virCommandAddArg(cmd, migrateFrom);
|
||||||
} else if (STREQ(migrateFrom, "stdio")) {
|
} else if (STREQ(migrateFrom, "stdio")) {
|
||||||
if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_MIGRATE_QEMU_FD)) {
|
virCommandAddArgFormat(cmd, "fd:%d", migrateFd);
|
||||||
virCommandAddArgFormat(cmd, "fd:%d", migrateFd);
|
virCommandPassFD(cmd, migrateFd, 0);
|
||||||
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;
|
|
||||||
}
|
|
||||||
} else if (STRPREFIX(migrateFrom, "exec")) {
|
} 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);
|
virCommandAddArg(cmd, migrateFrom);
|
||||||
} else if (STRPREFIX(migrateFrom, "fd")) {
|
} 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);
|
virCommandAddArg(cmd, migrateFrom);
|
||||||
virCommandPassFD(cmd, migrateFd, 0);
|
virCommandPassFD(cmd, migrateFd, 0);
|
||||||
} else if (STRPREFIX(migrateFrom, "unix")) {
|
} 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);
|
virCommandAddArg(cmd, migrateFrom);
|
||||||
} else {
|
} else {
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
|
@ -4359,15 +4359,8 @@ qemuMigrationRun(virQEMUDriverPtr driver,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case MIGRATION_DEST_UNIX:
|
case MIGRATION_DEST_UNIX:
|
||||||
if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATE_QEMU_UNIX)) {
|
ret = qemuMonitorMigrateToUnix(priv->mon, migrate_flags,
|
||||||
ret = qemuMonitorMigrateToUnix(priv->mon, migrate_flags,
|
spec->dest.unix_socket.file);
|
||||||
spec->dest.unix_socket.file);
|
|
||||||
} else {
|
|
||||||
const char *args[] = {
|
|
||||||
"nc", "-U", spec->dest.unix_socket.file, NULL
|
|
||||||
};
|
|
||||||
ret = qemuMonitorMigrateToCommand(priv->mon, migrate_flags, args);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MIGRATION_DEST_FD:
|
case MIGRATION_DEST_FD:
|
||||||
@ -4562,8 +4555,7 @@ static int doNativeMigrate(virQEMUDriverPtr driver,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATE_QEMU_FD) &&
|
if (STRNEQ(uribits->scheme, "rdma"))
|
||||||
STRNEQ(uribits->scheme, "rdma"))
|
|
||||||
spec.destType = MIGRATION_DEST_CONNECT_HOST;
|
spec.destType = MIGRATION_DEST_CONNECT_HOST;
|
||||||
else
|
else
|
||||||
spec.destType = MIGRATION_DEST_HOST;
|
spec.destType = MIGRATION_DEST_HOST;
|
||||||
@ -4600,11 +4592,11 @@ static int doTunnelMigrate(virQEMUDriverPtr driver,
|
|||||||
size_t nmigrate_disks,
|
size_t nmigrate_disks,
|
||||||
const char **migrate_disks)
|
const char **migrate_disks)
|
||||||
{
|
{
|
||||||
qemuDomainObjPrivatePtr priv = vm->privateData;
|
|
||||||
virNetSocketPtr sock = NULL;
|
virNetSocketPtr sock = NULL;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
qemuMigrationSpec spec;
|
qemuMigrationSpec spec;
|
||||||
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
|
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
|
||||||
|
int fds[2] = { -1, -1 };
|
||||||
|
|
||||||
VIR_DEBUG("driver=%p, vm=%p, st=%p, cookiein=%s, cookieinlen=%d, "
|
VIR_DEBUG("driver=%p, vm=%p, st=%p, cookiein=%s, cookieinlen=%d, "
|
||||||
"cookieout=%p, cookieoutlen=%p, flags=%lx, resource=%lu, "
|
"cookieout=%p, cookieoutlen=%p, flags=%lx, resource=%lu, "
|
||||||
@ -4613,53 +4605,24 @@ static int doTunnelMigrate(virQEMUDriverPtr driver,
|
|||||||
cookieout, cookieoutlen, flags, resource,
|
cookieout, cookieoutlen, flags, resource,
|
||||||
NULLSTR(graphicsuri), nmigrate_disks, migrate_disks);
|
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.fwdType = MIGRATION_FWD_STREAM;
|
||||||
spec.fwd.stream = st;
|
spec.fwd.stream = st;
|
||||||
|
|
||||||
if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATE_QEMU_FD)) {
|
|
||||||
int fds[2];
|
|
||||||
|
|
||||||
spec.destType = MIGRATION_DEST_FD;
|
spec.destType = MIGRATION_DEST_FD;
|
||||||
spec.dest.fd.qemu = -1;
|
spec.dest.fd.qemu = -1;
|
||||||
spec.dest.fd.local = -1;
|
spec.dest.fd.local = -1;
|
||||||
|
|
||||||
if (pipe2(fds, O_CLOEXEC) == 0) {
|
if (pipe2(fds, O_CLOEXEC) == 0) {
|
||||||
spec.dest.fd.qemu = fds[1];
|
spec.dest.fd.qemu = fds[1];
|
||||||
spec.dest.fd.local = fds[0];
|
spec.dest.fd.local = fds[0];
|
||||||
}
|
}
|
||||||
if (spec.dest.fd.qemu == -1 ||
|
if (spec.dest.fd.qemu == -1 ||
|
||||||
virSecurityManagerSetImageFDLabel(driver->securityManager, vm->def,
|
virSecurityManagerSetImageFDLabel(driver->securityManager, vm->def,
|
||||||
spec.dest.fd.qemu) < 0) {
|
spec.dest.fd.qemu) < 0) {
|
||||||
virReportSystemError(errno, "%s",
|
virReportSystemError(errno, "%s",
|
||||||
_("cannot create pipe for tunnelled migration"));
|
_("cannot create pipe for tunnelled migration"));
|
||||||
goto cleanup;
|
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = qemuMigrationRun(driver, vm, cookiein, cookieinlen, cookieout,
|
ret = qemuMigrationRun(driver, vm, cookiein, cookieinlen, cookieout,
|
||||||
@ -5943,8 +5906,7 @@ qemuMigrationToFile(virQEMUDriverPtr driver, virDomainObjPtr vm,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATE_QEMU_FD) &&
|
if ((!compressor || pipe(pipeFD) == 0)) {
|
||||||
(!compressor || pipe(pipeFD) == 0)) {
|
|
||||||
/* All right! We can use fd migration, which means that qemu
|
/* All right! We can use fd migration, which means that qemu
|
||||||
* doesn't have to open() the file, so while we still have to
|
* 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
|
* grant SELinux access, we can do it on fd and avoid cleanup
|
||||||
@ -5983,8 +5945,7 @@ qemuMigrationToFile(virQEMUDriverPtr driver, virDomainObjPtr vm,
|
|||||||
if (!compressor) {
|
if (!compressor) {
|
||||||
const char *args[] = { "cat", NULL };
|
const char *args[] = { "cat", NULL };
|
||||||
|
|
||||||
if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATE_QEMU_FD) &&
|
if (priv->monConfig->type == VIR_DOMAIN_CHR_TYPE_UNIX) {
|
||||||
priv->monConfig->type == VIR_DOMAIN_CHR_TYPE_UNIX) {
|
|
||||||
rc = qemuMonitorMigrateToFd(priv->mon,
|
rc = qemuMonitorMigrateToFd(priv->mon,
|
||||||
QEMU_MONITOR_MIGRATE_BACKGROUND,
|
QEMU_MONITOR_MIGRATE_BACKGROUND,
|
||||||
fd);
|
fd);
|
||||||
|
@ -275,7 +275,6 @@ mymain(void)
|
|||||||
|
|
||||||
DO_TEST("nosharepages");
|
DO_TEST("nosharepages");
|
||||||
|
|
||||||
DO_TEST("restore-v1");
|
|
||||||
DO_TEST("restore-v2");
|
DO_TEST("restore-v2");
|
||||||
DO_TEST("migrate");
|
DO_TEST("migrate");
|
||||||
|
|
||||||
|
@ -1,13 +1,10 @@
|
|||||||
<qemuCaps>
|
<qemuCaps>
|
||||||
<flag name='migrate-qemu-tcp'/>
|
|
||||||
<flag name='migrate-qemu-exec'/>
|
|
||||||
<flag name='drive-cache-v2'/>
|
<flag name='drive-cache-v2'/>
|
||||||
<flag name='drive-format'/>
|
<flag name='drive-format'/>
|
||||||
<flag name='vga'/>
|
<flag name='vga'/>
|
||||||
<flag name='0.10'/>
|
<flag name='0.10'/>
|
||||||
<flag name='mem-path'/>
|
<flag name='mem-path'/>
|
||||||
<flag name='drive-serial'/>
|
<flag name='drive-serial'/>
|
||||||
<flag name='migrate-qemu-unix'/>
|
|
||||||
<flag name='chardev'/>
|
<flag name='chardev'/>
|
||||||
<flag name='enable-kvm'/>
|
<flag name='enable-kvm'/>
|
||||||
<flag name='monitor-json'/>
|
<flag name='monitor-json'/>
|
||||||
@ -29,7 +26,6 @@
|
|||||||
<flag name='vga-qxl'/>
|
<flag name='vga-qxl'/>
|
||||||
<flag name='spice'/>
|
<flag name='spice'/>
|
||||||
<flag name='vga-none'/>
|
<flag name='vga-none'/>
|
||||||
<flag name='migrate-qemu-fd'/>
|
|
||||||
<flag name='boot-index'/>
|
<flag name='boot-index'/>
|
||||||
<flag name='hda-duplex'/>
|
<flag name='hda-duplex'/>
|
||||||
<flag name='drive-aio'/>
|
<flag name='drive-aio'/>
|
||||||
|
@ -1,13 +1,10 @@
|
|||||||
<qemuCaps>
|
<qemuCaps>
|
||||||
<flag name='migrate-qemu-tcp'/>
|
|
||||||
<flag name='migrate-qemu-exec'/>
|
|
||||||
<flag name='drive-cache-v2'/>
|
<flag name='drive-cache-v2'/>
|
||||||
<flag name='drive-format'/>
|
<flag name='drive-format'/>
|
||||||
<flag name='vga'/>
|
<flag name='vga'/>
|
||||||
<flag name='0.10'/>
|
<flag name='0.10'/>
|
||||||
<flag name='mem-path'/>
|
<flag name='mem-path'/>
|
||||||
<flag name='drive-serial'/>
|
<flag name='drive-serial'/>
|
||||||
<flag name='migrate-qemu-unix'/>
|
|
||||||
<flag name='chardev'/>
|
<flag name='chardev'/>
|
||||||
<flag name='enable-kvm'/>
|
<flag name='enable-kvm'/>
|
||||||
<flag name='monitor-json'/>
|
<flag name='monitor-json'/>
|
||||||
@ -30,7 +27,6 @@
|
|||||||
<flag name='vga-qxl'/>
|
<flag name='vga-qxl'/>
|
||||||
<flag name='spice'/>
|
<flag name='spice'/>
|
||||||
<flag name='vga-none'/>
|
<flag name='vga-none'/>
|
||||||
<flag name='migrate-qemu-fd'/>
|
|
||||||
<flag name='boot-index'/>
|
<flag name='boot-index'/>
|
||||||
<flag name='hda-duplex'/>
|
<flag name='hda-duplex'/>
|
||||||
<flag name='drive-aio'/>
|
<flag name='drive-aio'/>
|
||||||
|
@ -1,13 +1,10 @@
|
|||||||
<qemuCaps>
|
<qemuCaps>
|
||||||
<flag name='migrate-qemu-tcp'/>
|
|
||||||
<flag name='migrate-qemu-exec'/>
|
|
||||||
<flag name='drive-cache-v2'/>
|
<flag name='drive-cache-v2'/>
|
||||||
<flag name='drive-format'/>
|
<flag name='drive-format'/>
|
||||||
<flag name='vga'/>
|
<flag name='vga'/>
|
||||||
<flag name='0.10'/>
|
<flag name='0.10'/>
|
||||||
<flag name='mem-path'/>
|
<flag name='mem-path'/>
|
||||||
<flag name='drive-serial'/>
|
<flag name='drive-serial'/>
|
||||||
<flag name='migrate-qemu-unix'/>
|
|
||||||
<flag name='chardev'/>
|
<flag name='chardev'/>
|
||||||
<flag name='enable-kvm'/>
|
<flag name='enable-kvm'/>
|
||||||
<flag name='monitor-json'/>
|
<flag name='monitor-json'/>
|
||||||
@ -30,7 +27,6 @@
|
|||||||
<flag name='vga-qxl'/>
|
<flag name='vga-qxl'/>
|
||||||
<flag name='spice'/>
|
<flag name='spice'/>
|
||||||
<flag name='vga-none'/>
|
<flag name='vga-none'/>
|
||||||
<flag name='migrate-qemu-fd'/>
|
|
||||||
<flag name='boot-index'/>
|
<flag name='boot-index'/>
|
||||||
<flag name='hda-duplex'/>
|
<flag name='hda-duplex'/>
|
||||||
<flag name='drive-aio'/>
|
<flag name='drive-aio'/>
|
||||||
|
@ -1,13 +1,10 @@
|
|||||||
<qemuCaps>
|
<qemuCaps>
|
||||||
<flag name='migrate-qemu-tcp'/>
|
|
||||||
<flag name='migrate-qemu-exec'/>
|
|
||||||
<flag name='drive-cache-v2'/>
|
<flag name='drive-cache-v2'/>
|
||||||
<flag name='drive-format'/>
|
<flag name='drive-format'/>
|
||||||
<flag name='vga'/>
|
<flag name='vga'/>
|
||||||
<flag name='0.10'/>
|
<flag name='0.10'/>
|
||||||
<flag name='mem-path'/>
|
<flag name='mem-path'/>
|
||||||
<flag name='drive-serial'/>
|
<flag name='drive-serial'/>
|
||||||
<flag name='migrate-qemu-unix'/>
|
|
||||||
<flag name='chardev'/>
|
<flag name='chardev'/>
|
||||||
<flag name='enable-kvm'/>
|
<flag name='enable-kvm'/>
|
||||||
<flag name='monitor-json'/>
|
<flag name='monitor-json'/>
|
||||||
@ -30,7 +27,6 @@
|
|||||||
<flag name='vga-qxl'/>
|
<flag name='vga-qxl'/>
|
||||||
<flag name='spice'/>
|
<flag name='spice'/>
|
||||||
<flag name='vga-none'/>
|
<flag name='vga-none'/>
|
||||||
<flag name='migrate-qemu-fd'/>
|
|
||||||
<flag name='boot-index'/>
|
<flag name='boot-index'/>
|
||||||
<flag name='hda-duplex'/>
|
<flag name='hda-duplex'/>
|
||||||
<flag name='drive-aio'/>
|
<flag name='drive-aio'/>
|
||||||
|
@ -1,13 +1,10 @@
|
|||||||
<qemuCaps>
|
<qemuCaps>
|
||||||
<flag name='migrate-qemu-tcp'/>
|
|
||||||
<flag name='migrate-qemu-exec'/>
|
|
||||||
<flag name='drive-cache-v2'/>
|
<flag name='drive-cache-v2'/>
|
||||||
<flag name='drive-format'/>
|
<flag name='drive-format'/>
|
||||||
<flag name='vga'/>
|
<flag name='vga'/>
|
||||||
<flag name='0.10'/>
|
<flag name='0.10'/>
|
||||||
<flag name='mem-path'/>
|
<flag name='mem-path'/>
|
||||||
<flag name='drive-serial'/>
|
<flag name='drive-serial'/>
|
||||||
<flag name='migrate-qemu-unix'/>
|
|
||||||
<flag name='chardev'/>
|
<flag name='chardev'/>
|
||||||
<flag name='enable-kvm'/>
|
<flag name='enable-kvm'/>
|
||||||
<flag name='monitor-json'/>
|
<flag name='monitor-json'/>
|
||||||
@ -30,7 +27,6 @@
|
|||||||
<flag name='vga-qxl'/>
|
<flag name='vga-qxl'/>
|
||||||
<flag name='spice'/>
|
<flag name='spice'/>
|
||||||
<flag name='vga-none'/>
|
<flag name='vga-none'/>
|
||||||
<flag name='migrate-qemu-fd'/>
|
|
||||||
<flag name='boot-index'/>
|
<flag name='boot-index'/>
|
||||||
<flag name='hda-duplex'/>
|
<flag name='hda-duplex'/>
|
||||||
<flag name='drive-aio'/>
|
<flag name='drive-aio'/>
|
||||||
|
@ -1,13 +1,10 @@
|
|||||||
<qemuCaps>
|
<qemuCaps>
|
||||||
<flag name='migrate-qemu-tcp'/>
|
|
||||||
<flag name='migrate-qemu-exec'/>
|
|
||||||
<flag name='drive-cache-v2'/>
|
<flag name='drive-cache-v2'/>
|
||||||
<flag name='drive-format'/>
|
<flag name='drive-format'/>
|
||||||
<flag name='vga'/>
|
<flag name='vga'/>
|
||||||
<flag name='0.10'/>
|
<flag name='0.10'/>
|
||||||
<flag name='mem-path'/>
|
<flag name='mem-path'/>
|
||||||
<flag name='drive-serial'/>
|
<flag name='drive-serial'/>
|
||||||
<flag name='migrate-qemu-unix'/>
|
|
||||||
<flag name='chardev'/>
|
<flag name='chardev'/>
|
||||||
<flag name='enable-kvm'/>
|
<flag name='enable-kvm'/>
|
||||||
<flag name='monitor-json'/>
|
<flag name='monitor-json'/>
|
||||||
@ -30,7 +27,6 @@
|
|||||||
<flag name='vga-qxl'/>
|
<flag name='vga-qxl'/>
|
||||||
<flag name='spice'/>
|
<flag name='spice'/>
|
||||||
<flag name='vga-none'/>
|
<flag name='vga-none'/>
|
||||||
<flag name='migrate-qemu-fd'/>
|
|
||||||
<flag name='boot-index'/>
|
<flag name='boot-index'/>
|
||||||
<flag name='hda-duplex'/>
|
<flag name='hda-duplex'/>
|
||||||
<flag name='drive-aio'/>
|
<flag name='drive-aio'/>
|
||||||
|
@ -1,13 +1,10 @@
|
|||||||
<qemuCaps>
|
<qemuCaps>
|
||||||
<flag name='migrate-qemu-tcp'/>
|
|
||||||
<flag name='migrate-qemu-exec'/>
|
|
||||||
<flag name='drive-cache-v2'/>
|
<flag name='drive-cache-v2'/>
|
||||||
<flag name='drive-format'/>
|
<flag name='drive-format'/>
|
||||||
<flag name='vga'/>
|
<flag name='vga'/>
|
||||||
<flag name='0.10'/>
|
<flag name='0.10'/>
|
||||||
<flag name='mem-path'/>
|
<flag name='mem-path'/>
|
||||||
<flag name='drive-serial'/>
|
<flag name='drive-serial'/>
|
||||||
<flag name='migrate-qemu-unix'/>
|
|
||||||
<flag name='chardev'/>
|
<flag name='chardev'/>
|
||||||
<flag name='enable-kvm'/>
|
<flag name='enable-kvm'/>
|
||||||
<flag name='monitor-json'/>
|
<flag name='monitor-json'/>
|
||||||
@ -30,7 +27,6 @@
|
|||||||
<flag name='vga-qxl'/>
|
<flag name='vga-qxl'/>
|
||||||
<flag name='spice'/>
|
<flag name='spice'/>
|
||||||
<flag name='vga-none'/>
|
<flag name='vga-none'/>
|
||||||
<flag name='migrate-qemu-fd'/>
|
|
||||||
<flag name='boot-index'/>
|
<flag name='boot-index'/>
|
||||||
<flag name='hda-duplex'/>
|
<flag name='hda-duplex'/>
|
||||||
<flag name='drive-aio'/>
|
<flag name='drive-aio'/>
|
||||||
|
@ -1,13 +1,10 @@
|
|||||||
<qemuCaps>
|
<qemuCaps>
|
||||||
<flag name='migrate-qemu-tcp'/>
|
|
||||||
<flag name='migrate-qemu-exec'/>
|
|
||||||
<flag name='drive-cache-v2'/>
|
<flag name='drive-cache-v2'/>
|
||||||
<flag name='drive-format'/>
|
<flag name='drive-format'/>
|
||||||
<flag name='vga'/>
|
<flag name='vga'/>
|
||||||
<flag name='0.10'/>
|
<flag name='0.10'/>
|
||||||
<flag name='mem-path'/>
|
<flag name='mem-path'/>
|
||||||
<flag name='drive-serial'/>
|
<flag name='drive-serial'/>
|
||||||
<flag name='migrate-qemu-unix'/>
|
|
||||||
<flag name='chardev'/>
|
<flag name='chardev'/>
|
||||||
<flag name='enable-kvm'/>
|
<flag name='enable-kvm'/>
|
||||||
<flag name='monitor-json'/>
|
<flag name='monitor-json'/>
|
||||||
@ -30,7 +27,6 @@
|
|||||||
<flag name='vga-qxl'/>
|
<flag name='vga-qxl'/>
|
||||||
<flag name='spice'/>
|
<flag name='spice'/>
|
||||||
<flag name='vga-none'/>
|
<flag name='vga-none'/>
|
||||||
<flag name='migrate-qemu-fd'/>
|
|
||||||
<flag name='boot-index'/>
|
<flag name='boot-index'/>
|
||||||
<flag name='hda-duplex'/>
|
<flag name='hda-duplex'/>
|
||||||
<flag name='drive-aio'/>
|
<flag name='drive-aio'/>
|
||||||
|
@ -1,13 +1,10 @@
|
|||||||
<qemuCaps>
|
<qemuCaps>
|
||||||
<flag name='migrate-qemu-tcp'/>
|
|
||||||
<flag name='migrate-qemu-exec'/>
|
|
||||||
<flag name='drive-cache-v2'/>
|
<flag name='drive-cache-v2'/>
|
||||||
<flag name='drive-format'/>
|
<flag name='drive-format'/>
|
||||||
<flag name='vga'/>
|
<flag name='vga'/>
|
||||||
<flag name='0.10'/>
|
<flag name='0.10'/>
|
||||||
<flag name='mem-path'/>
|
<flag name='mem-path'/>
|
||||||
<flag name='drive-serial'/>
|
<flag name='drive-serial'/>
|
||||||
<flag name='migrate-qemu-unix'/>
|
|
||||||
<flag name='chardev'/>
|
<flag name='chardev'/>
|
||||||
<flag name='enable-kvm'/>
|
<flag name='enable-kvm'/>
|
||||||
<flag name='monitor-json'/>
|
<flag name='monitor-json'/>
|
||||||
@ -30,7 +27,6 @@
|
|||||||
<flag name='vga-qxl'/>
|
<flag name='vga-qxl'/>
|
||||||
<flag name='spice'/>
|
<flag name='spice'/>
|
||||||
<flag name='vga-none'/>
|
<flag name='vga-none'/>
|
||||||
<flag name='migrate-qemu-fd'/>
|
|
||||||
<flag name='boot-index'/>
|
<flag name='boot-index'/>
|
||||||
<flag name='hda-duplex'/>
|
<flag name='hda-duplex'/>
|
||||||
<flag name='drive-aio'/>
|
<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_FULL(name, version, is_kvm, kvm_version, VIR_ERR_OK, __VA_ARGS__)
|
||||||
|
|
||||||
DO_TEST("qemu-0.12.1", 12001, 0, 0,
|
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_CACHE_V2,
|
||||||
QEMU_CAPS_DRIVE_FORMAT,
|
QEMU_CAPS_DRIVE_FORMAT,
|
||||||
QEMU_CAPS_DRIVE_SERIAL,
|
QEMU_CAPS_DRIVE_SERIAL,
|
||||||
@ -162,7 +160,6 @@ mymain(void)
|
|||||||
QEMU_CAPS_0_10,
|
QEMU_CAPS_0_10,
|
||||||
QEMU_CAPS_ENABLE_KVM,
|
QEMU_CAPS_ENABLE_KVM,
|
||||||
QEMU_CAPS_SDL,
|
QEMU_CAPS_SDL,
|
||||||
QEMU_CAPS_MIGRATE_QEMU_UNIX,
|
|
||||||
QEMU_CAPS_CHARDEV,
|
QEMU_CAPS_CHARDEV,
|
||||||
QEMU_CAPS_BALLOON,
|
QEMU_CAPS_BALLOON,
|
||||||
QEMU_CAPS_DEVICE,
|
QEMU_CAPS_DEVICE,
|
||||||
@ -173,7 +170,6 @@ mymain(void)
|
|||||||
QEMU_CAPS_NAME_PROCESS,
|
QEMU_CAPS_NAME_PROCESS,
|
||||||
QEMU_CAPS_SMBIOS_TYPE,
|
QEMU_CAPS_SMBIOS_TYPE,
|
||||||
QEMU_CAPS_VGA_NONE,
|
QEMU_CAPS_VGA_NONE,
|
||||||
QEMU_CAPS_MIGRATE_QEMU_FD,
|
|
||||||
QEMU_CAPS_DRIVE_AIO,
|
QEMU_CAPS_DRIVE_AIO,
|
||||||
QEMU_CAPS_NO_SHUTDOWN,
|
QEMU_CAPS_NO_SHUTDOWN,
|
||||||
QEMU_CAPS_PCI_ROMBAR,
|
QEMU_CAPS_PCI_ROMBAR,
|
||||||
@ -183,8 +179,6 @@ mymain(void)
|
|||||||
QEMU_CAPS_VNC);
|
QEMU_CAPS_VNC);
|
||||||
DO_TEST("qemu-kvm-0.12.1.2-rhel60", 12001, 1, 0,
|
DO_TEST("qemu-kvm-0.12.1.2-rhel60", 12001, 1, 0,
|
||||||
QEMU_CAPS_DRIVE_BOOT,
|
QEMU_CAPS_DRIVE_BOOT,
|
||||||
QEMU_CAPS_MIGRATE_QEMU_TCP,
|
|
||||||
QEMU_CAPS_MIGRATE_QEMU_EXEC,
|
|
||||||
QEMU_CAPS_DRIVE_CACHE_V2,
|
QEMU_CAPS_DRIVE_CACHE_V2,
|
||||||
QEMU_CAPS_KVM,
|
QEMU_CAPS_KVM,
|
||||||
QEMU_CAPS_DRIVE_FORMAT,
|
QEMU_CAPS_DRIVE_FORMAT,
|
||||||
@ -194,7 +188,6 @@ mymain(void)
|
|||||||
QEMU_CAPS_0_10,
|
QEMU_CAPS_0_10,
|
||||||
QEMU_CAPS_PCIDEVICE,
|
QEMU_CAPS_PCIDEVICE,
|
||||||
QEMU_CAPS_MEM_PATH,
|
QEMU_CAPS_MEM_PATH,
|
||||||
QEMU_CAPS_MIGRATE_QEMU_UNIX,
|
|
||||||
QEMU_CAPS_CHARDEV,
|
QEMU_CAPS_CHARDEV,
|
||||||
QEMU_CAPS_ENABLE_KVM,
|
QEMU_CAPS_ENABLE_KVM,
|
||||||
QEMU_CAPS_MONITOR_JSON,
|
QEMU_CAPS_MONITOR_JSON,
|
||||||
@ -215,7 +208,6 @@ mymain(void)
|
|||||||
QEMU_CAPS_VGA_QXL,
|
QEMU_CAPS_VGA_QXL,
|
||||||
QEMU_CAPS_SPICE,
|
QEMU_CAPS_SPICE,
|
||||||
QEMU_CAPS_VGA_NONE,
|
QEMU_CAPS_VGA_NONE,
|
||||||
QEMU_CAPS_MIGRATE_QEMU_FD,
|
|
||||||
QEMU_CAPS_DRIVE_AIO,
|
QEMU_CAPS_DRIVE_AIO,
|
||||||
QEMU_CAPS_DEVICE_SPICEVMC,
|
QEMU_CAPS_DEVICE_SPICEVMC,
|
||||||
QEMU_CAPS_PIIX3_USB_UHCI,
|
QEMU_CAPS_PIIX3_USB_UHCI,
|
||||||
@ -240,8 +232,6 @@ mymain(void)
|
|||||||
QEMU_CAPS_DEVICE_VIRTIO_NET);
|
QEMU_CAPS_DEVICE_VIRTIO_NET);
|
||||||
DO_TEST("qemu-kvm-0.12.3", 12003, 1, 0,
|
DO_TEST("qemu-kvm-0.12.3", 12003, 1, 0,
|
||||||
QEMU_CAPS_DRIVE_BOOT,
|
QEMU_CAPS_DRIVE_BOOT,
|
||||||
QEMU_CAPS_MIGRATE_QEMU_TCP,
|
|
||||||
QEMU_CAPS_MIGRATE_QEMU_EXEC,
|
|
||||||
QEMU_CAPS_DRIVE_CACHE_V2,
|
QEMU_CAPS_DRIVE_CACHE_V2,
|
||||||
QEMU_CAPS_KVM,
|
QEMU_CAPS_KVM,
|
||||||
QEMU_CAPS_DRIVE_FORMAT,
|
QEMU_CAPS_DRIVE_FORMAT,
|
||||||
@ -252,7 +242,6 @@ mymain(void)
|
|||||||
QEMU_CAPS_PCIDEVICE,
|
QEMU_CAPS_PCIDEVICE,
|
||||||
QEMU_CAPS_MEM_PATH,
|
QEMU_CAPS_MEM_PATH,
|
||||||
QEMU_CAPS_SDL,
|
QEMU_CAPS_SDL,
|
||||||
QEMU_CAPS_MIGRATE_QEMU_UNIX,
|
|
||||||
QEMU_CAPS_CHARDEV,
|
QEMU_CAPS_CHARDEV,
|
||||||
QEMU_CAPS_BALLOON,
|
QEMU_CAPS_BALLOON,
|
||||||
QEMU_CAPS_DEVICE,
|
QEMU_CAPS_DEVICE,
|
||||||
@ -267,7 +256,6 @@ mymain(void)
|
|||||||
QEMU_CAPS_NAME_PROCESS,
|
QEMU_CAPS_NAME_PROCESS,
|
||||||
QEMU_CAPS_SMBIOS_TYPE,
|
QEMU_CAPS_SMBIOS_TYPE,
|
||||||
QEMU_CAPS_VGA_NONE,
|
QEMU_CAPS_VGA_NONE,
|
||||||
QEMU_CAPS_MIGRATE_QEMU_FD,
|
|
||||||
QEMU_CAPS_DRIVE_AIO,
|
QEMU_CAPS_DRIVE_AIO,
|
||||||
QEMU_CAPS_NO_SHUTDOWN,
|
QEMU_CAPS_NO_SHUTDOWN,
|
||||||
QEMU_CAPS_PCI_ROMBAR,
|
QEMU_CAPS_PCI_ROMBAR,
|
||||||
@ -277,8 +265,6 @@ mymain(void)
|
|||||||
QEMU_CAPS_VNC);
|
QEMU_CAPS_VNC);
|
||||||
DO_TEST("qemu-kvm-0.13.0", 13000, 1, 0,
|
DO_TEST("qemu-kvm-0.13.0", 13000, 1, 0,
|
||||||
QEMU_CAPS_DRIVE_BOOT,
|
QEMU_CAPS_DRIVE_BOOT,
|
||||||
QEMU_CAPS_MIGRATE_QEMU_TCP,
|
|
||||||
QEMU_CAPS_MIGRATE_QEMU_EXEC,
|
|
||||||
QEMU_CAPS_DRIVE_CACHE_V2,
|
QEMU_CAPS_DRIVE_CACHE_V2,
|
||||||
QEMU_CAPS_DRIVE_CACHE_UNSAFE,
|
QEMU_CAPS_DRIVE_CACHE_UNSAFE,
|
||||||
QEMU_CAPS_KVM,
|
QEMU_CAPS_KVM,
|
||||||
@ -290,7 +276,6 @@ mymain(void)
|
|||||||
QEMU_CAPS_PCIDEVICE,
|
QEMU_CAPS_PCIDEVICE,
|
||||||
QEMU_CAPS_MEM_PATH,
|
QEMU_CAPS_MEM_PATH,
|
||||||
QEMU_CAPS_SDL,
|
QEMU_CAPS_SDL,
|
||||||
QEMU_CAPS_MIGRATE_QEMU_UNIX,
|
|
||||||
QEMU_CAPS_CHARDEV,
|
QEMU_CAPS_CHARDEV,
|
||||||
QEMU_CAPS_ENABLE_KVM,
|
QEMU_CAPS_ENABLE_KVM,
|
||||||
QEMU_CAPS_MONITOR_JSON,
|
QEMU_CAPS_MONITOR_JSON,
|
||||||
@ -312,7 +297,6 @@ mymain(void)
|
|||||||
QEMU_CAPS_SMBIOS_TYPE,
|
QEMU_CAPS_SMBIOS_TYPE,
|
||||||
QEMU_CAPS_SPICE,
|
QEMU_CAPS_SPICE,
|
||||||
QEMU_CAPS_VGA_NONE,
|
QEMU_CAPS_VGA_NONE,
|
||||||
QEMU_CAPS_MIGRATE_QEMU_FD,
|
|
||||||
QEMU_CAPS_DRIVE_AIO,
|
QEMU_CAPS_DRIVE_AIO,
|
||||||
QEMU_CAPS_DEVICE_SPICEVMC,
|
QEMU_CAPS_DEVICE_SPICEVMC,
|
||||||
QEMU_CAPS_PCI_MULTIFUNCTION,
|
QEMU_CAPS_PCI_MULTIFUNCTION,
|
||||||
@ -344,8 +328,6 @@ mymain(void)
|
|||||||
QEMU_CAPS_DEVICE_E1000,
|
QEMU_CAPS_DEVICE_E1000,
|
||||||
QEMU_CAPS_DEVICE_VIRTIO_NET);
|
QEMU_CAPS_DEVICE_VIRTIO_NET);
|
||||||
DO_TEST("qemu-kvm-0.12.1.2-rhel61", 12001, 1, 0,
|
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_V2,
|
||||||
QEMU_CAPS_DRIVE_CACHE_UNSAFE,
|
QEMU_CAPS_DRIVE_CACHE_UNSAFE,
|
||||||
QEMU_CAPS_KVM,
|
QEMU_CAPS_KVM,
|
||||||
@ -356,7 +338,6 @@ mymain(void)
|
|||||||
QEMU_CAPS_0_10,
|
QEMU_CAPS_0_10,
|
||||||
QEMU_CAPS_PCIDEVICE,
|
QEMU_CAPS_PCIDEVICE,
|
||||||
QEMU_CAPS_MEM_PATH,
|
QEMU_CAPS_MEM_PATH,
|
||||||
QEMU_CAPS_MIGRATE_QEMU_UNIX,
|
|
||||||
QEMU_CAPS_CHARDEV,
|
QEMU_CAPS_CHARDEV,
|
||||||
QEMU_CAPS_ENABLE_KVM,
|
QEMU_CAPS_ENABLE_KVM,
|
||||||
QEMU_CAPS_MONITOR_JSON,
|
QEMU_CAPS_MONITOR_JSON,
|
||||||
@ -377,7 +358,6 @@ mymain(void)
|
|||||||
QEMU_CAPS_VGA_QXL,
|
QEMU_CAPS_VGA_QXL,
|
||||||
QEMU_CAPS_SPICE,
|
QEMU_CAPS_SPICE,
|
||||||
QEMU_CAPS_VGA_NONE,
|
QEMU_CAPS_VGA_NONE,
|
||||||
QEMU_CAPS_MIGRATE_QEMU_FD,
|
|
||||||
QEMU_CAPS_HDA_DUPLEX,
|
QEMU_CAPS_HDA_DUPLEX,
|
||||||
QEMU_CAPS_DRIVE_AIO,
|
QEMU_CAPS_DRIVE_AIO,
|
||||||
QEMU_CAPS_CCID_PASSTHRU,
|
QEMU_CAPS_CCID_PASSTHRU,
|
||||||
@ -408,8 +388,6 @@ mymain(void)
|
|||||||
QEMU_CAPS_DEVICE_E1000,
|
QEMU_CAPS_DEVICE_E1000,
|
||||||
QEMU_CAPS_DEVICE_VIRTIO_NET);
|
QEMU_CAPS_DEVICE_VIRTIO_NET);
|
||||||
DO_TEST("qemu-kvm-0.12.1.2-rhel62-beta", 12001, 1, 0,
|
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_V2,
|
||||||
QEMU_CAPS_DRIVE_CACHE_UNSAFE,
|
QEMU_CAPS_DRIVE_CACHE_UNSAFE,
|
||||||
QEMU_CAPS_KVM,
|
QEMU_CAPS_KVM,
|
||||||
@ -420,7 +398,6 @@ mymain(void)
|
|||||||
QEMU_CAPS_0_10,
|
QEMU_CAPS_0_10,
|
||||||
QEMU_CAPS_PCIDEVICE,
|
QEMU_CAPS_PCIDEVICE,
|
||||||
QEMU_CAPS_MEM_PATH,
|
QEMU_CAPS_MEM_PATH,
|
||||||
QEMU_CAPS_MIGRATE_QEMU_UNIX,
|
|
||||||
QEMU_CAPS_CHARDEV,
|
QEMU_CAPS_CHARDEV,
|
||||||
QEMU_CAPS_ENABLE_KVM,
|
QEMU_CAPS_ENABLE_KVM,
|
||||||
QEMU_CAPS_BALLOON,
|
QEMU_CAPS_BALLOON,
|
||||||
@ -440,7 +417,6 @@ mymain(void)
|
|||||||
QEMU_CAPS_VGA_QXL,
|
QEMU_CAPS_VGA_QXL,
|
||||||
QEMU_CAPS_SPICE,
|
QEMU_CAPS_SPICE,
|
||||||
QEMU_CAPS_VGA_NONE,
|
QEMU_CAPS_VGA_NONE,
|
||||||
QEMU_CAPS_MIGRATE_QEMU_FD,
|
|
||||||
QEMU_CAPS_BOOTINDEX,
|
QEMU_CAPS_BOOTINDEX,
|
||||||
QEMU_CAPS_HDA_DUPLEX,
|
QEMU_CAPS_HDA_DUPLEX,
|
||||||
QEMU_CAPS_DRIVE_AIO,
|
QEMU_CAPS_DRIVE_AIO,
|
||||||
@ -480,8 +456,6 @@ mymain(void)
|
|||||||
QEMU_CAPS_DEVICE_E1000,
|
QEMU_CAPS_DEVICE_E1000,
|
||||||
QEMU_CAPS_DEVICE_VIRTIO_NET);
|
QEMU_CAPS_DEVICE_VIRTIO_NET);
|
||||||
DO_TEST("qemu-1.0", 1000000, 0, 0,
|
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_V2,
|
||||||
QEMU_CAPS_DRIVE_CACHE_UNSAFE,
|
QEMU_CAPS_DRIVE_CACHE_UNSAFE,
|
||||||
QEMU_CAPS_DRIVE_FORMAT,
|
QEMU_CAPS_DRIVE_FORMAT,
|
||||||
@ -491,7 +465,6 @@ mymain(void)
|
|||||||
QEMU_CAPS_0_10,
|
QEMU_CAPS_0_10,
|
||||||
QEMU_CAPS_MEM_PATH,
|
QEMU_CAPS_MEM_PATH,
|
||||||
QEMU_CAPS_SDL,
|
QEMU_CAPS_SDL,
|
||||||
QEMU_CAPS_MIGRATE_QEMU_UNIX,
|
|
||||||
QEMU_CAPS_CHARDEV,
|
QEMU_CAPS_CHARDEV,
|
||||||
QEMU_CAPS_ENABLE_KVM,
|
QEMU_CAPS_ENABLE_KVM,
|
||||||
QEMU_CAPS_MONITOR_JSON,
|
QEMU_CAPS_MONITOR_JSON,
|
||||||
@ -510,7 +483,6 @@ mymain(void)
|
|||||||
QEMU_CAPS_VGA_QXL,
|
QEMU_CAPS_VGA_QXL,
|
||||||
QEMU_CAPS_SPICE,
|
QEMU_CAPS_SPICE,
|
||||||
QEMU_CAPS_VGA_NONE,
|
QEMU_CAPS_VGA_NONE,
|
||||||
QEMU_CAPS_MIGRATE_QEMU_FD,
|
|
||||||
QEMU_CAPS_BOOTINDEX,
|
QEMU_CAPS_BOOTINDEX,
|
||||||
QEMU_CAPS_HDA_DUPLEX,
|
QEMU_CAPS_HDA_DUPLEX,
|
||||||
QEMU_CAPS_DRIVE_AIO,
|
QEMU_CAPS_DRIVE_AIO,
|
||||||
@ -567,8 +539,6 @@ mymain(void)
|
|||||||
QEMU_CAPS_DEVICE_E1000,
|
QEMU_CAPS_DEVICE_E1000,
|
||||||
QEMU_CAPS_DEVICE_VIRTIO_NET);
|
QEMU_CAPS_DEVICE_VIRTIO_NET);
|
||||||
DO_TEST("qemu-1.1.0", 1001000, 0, 0,
|
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_V2,
|
||||||
QEMU_CAPS_DRIVE_CACHE_UNSAFE,
|
QEMU_CAPS_DRIVE_CACHE_UNSAFE,
|
||||||
QEMU_CAPS_DRIVE_FORMAT,
|
QEMU_CAPS_DRIVE_FORMAT,
|
||||||
@ -578,7 +548,6 @@ mymain(void)
|
|||||||
QEMU_CAPS_0_10,
|
QEMU_CAPS_0_10,
|
||||||
QEMU_CAPS_MEM_PATH,
|
QEMU_CAPS_MEM_PATH,
|
||||||
QEMU_CAPS_SDL,
|
QEMU_CAPS_SDL,
|
||||||
QEMU_CAPS_MIGRATE_QEMU_UNIX,
|
|
||||||
QEMU_CAPS_CHARDEV,
|
QEMU_CAPS_CHARDEV,
|
||||||
QEMU_CAPS_ENABLE_KVM,
|
QEMU_CAPS_ENABLE_KVM,
|
||||||
QEMU_CAPS_MONITOR_JSON,
|
QEMU_CAPS_MONITOR_JSON,
|
||||||
@ -597,7 +566,6 @@ mymain(void)
|
|||||||
QEMU_CAPS_VGA_QXL,
|
QEMU_CAPS_VGA_QXL,
|
||||||
QEMU_CAPS_SPICE,
|
QEMU_CAPS_SPICE,
|
||||||
QEMU_CAPS_VGA_NONE,
|
QEMU_CAPS_VGA_NONE,
|
||||||
QEMU_CAPS_MIGRATE_QEMU_FD,
|
|
||||||
QEMU_CAPS_BOOTINDEX,
|
QEMU_CAPS_BOOTINDEX,
|
||||||
QEMU_CAPS_HDA_DUPLEX,
|
QEMU_CAPS_HDA_DUPLEX,
|
||||||
QEMU_CAPS_DRIVE_AIO,
|
QEMU_CAPS_DRIVE_AIO,
|
||||||
|
@ -28,4 +28,4 @@ host-nodes=5,host-nodes=7,policy=bind \
|
|||||||
-net none \
|
-net none \
|
||||||
-serial none \
|
-serial none \
|
||||||
-parallel 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_PCIDEVICE, QEMU_CAPS_DEVICE, QEMU_CAPS_NODEFCONFIG,
|
||||||
QEMU_CAPS_PCI_ROMBAR);
|
QEMU_CAPS_PCI_ROMBAR);
|
||||||
|
|
||||||
DO_TEST_FULL("restore-v1", "stdio", 7, 0, QEMU_CAPS_MIGRATE_KVM_STDIO);
|
DO_TEST_FULL("restore-v2", "exec:cat", 7, 0, NONE);
|
||||||
DO_TEST_FULL("restore-v2", "stdio", 7, 0, QEMU_CAPS_MIGRATE_QEMU_EXEC);
|
DO_TEST_FULL("restore-v2-fd", "stdio", 7, 0, NONE);
|
||||||
DO_TEST_FULL("restore-v2", "exec:cat", 7, 0, QEMU_CAPS_MIGRATE_QEMU_EXEC);
|
DO_TEST_FULL("restore-v2-fd", "fd:7", 7, 0, NONE);
|
||||||
DO_TEST_FULL("restore-v2-fd", "stdio", 7, 0, QEMU_CAPS_MIGRATE_QEMU_FD);
|
DO_TEST_FULL("migrate", "tcp:10.0.0.1:5000", -1, 0, NONE);
|
||||||
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_LINUX_FULL("migrate-numa-unaligned", "stdio", 7, 0,
|
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);
|
QEMU_CAPS_OBJECT_MEMORY_RAM);
|
||||||
|
|
||||||
DO_TEST("qemu-ns", NONE);
|
DO_TEST("qemu-ns", NONE);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user