mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
qemu: Move incoming URI code to qemu_migration
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
This commit is contained in:
@@ -9088,45 +9088,6 @@ qemuBuildTPMCommandLine(virDomainDefPtr def,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
|
||||||
qemuBuildIncomingCheckProtocol(virQEMUCapsPtr qemuCaps,
|
|
||||||
const char *migrateFrom)
|
|
||||||
{
|
|
||||||
if (STRPREFIX(migrateFrom, "rdma")) {
|
|
||||||
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_MIGRATE_RDMA)) {
|
|
||||||
virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
|
|
||||||
_("incoming RDMA migration is not supported "
|
|
||||||
"with this QEMU binary"));
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
} else if (!STRPREFIX(migrateFrom, "tcp") &&
|
|
||||||
!STRPREFIX(migrateFrom, "exec") &&
|
|
||||||
!STRPREFIX(migrateFrom, "fd") &&
|
|
||||||
!STRPREFIX(migrateFrom, "unix") &&
|
|
||||||
STRNEQ(migrateFrom, "stdio")) {
|
|
||||||
virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
|
|
||||||
_("unknown migration protocol"));
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
char *
|
|
||||||
qemuBuildIncomingURI(const char *migrateFrom,
|
|
||||||
int migrateFd)
|
|
||||||
{
|
|
||||||
char *uri = NULL;
|
|
||||||
|
|
||||||
if (STREQ(migrateFrom, "stdio"))
|
|
||||||
ignore_value(virAsprintf(&uri, "fd:%d", migrateFd));
|
|
||||||
else
|
|
||||||
ignore_value(VIR_STRDUP(uri, migrateFrom));
|
|
||||||
|
|
||||||
return uri;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
qemuBuildCommandLineCallbacks buildCommandLineCallbacks = {
|
qemuBuildCommandLineCallbacks buildCommandLineCallbacks = {
|
||||||
.qemuGetSCSIDeviceSgName = virSCSIDeviceGetSgName,
|
.qemuGetSCSIDeviceSgName = virSCSIDeviceGetSgName,
|
||||||
|
|||||||
@@ -319,10 +319,5 @@ bool qemuCheckCCWS390AddressSupport(virDomainDefPtr def,
|
|||||||
virDomainDeviceInfo info,
|
virDomainDeviceInfo info,
|
||||||
virQEMUCapsPtr qemuCaps,
|
virQEMUCapsPtr qemuCaps,
|
||||||
const char *devicename);
|
const char *devicename);
|
||||||
int qemuBuildIncomingCheckProtocol(virQEMUCapsPtr qemuCaps,
|
|
||||||
const char *migrateFrom);
|
|
||||||
|
|
||||||
char *qemuBuildIncomingURI(const char *migrateFrom,
|
|
||||||
int migrateFd);
|
|
||||||
|
|
||||||
#endif /* __QEMU_COMMAND_H__*/
|
#endif /* __QEMU_COMMAND_H__*/
|
||||||
|
|||||||
@@ -2911,6 +2911,46 @@ qemuDomainMigrateOPDRelocate(virQEMUDriverPtr driver ATTRIBUTE_UNUSED,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int
|
||||||
|
qemuMigrationCheckIncoming(virQEMUCapsPtr qemuCaps,
|
||||||
|
const char *migrateFrom)
|
||||||
|
{
|
||||||
|
if (STRPREFIX(migrateFrom, "rdma")) {
|
||||||
|
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_MIGRATE_RDMA)) {
|
||||||
|
virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
|
||||||
|
_("incoming RDMA migration is not supported "
|
||||||
|
"with this QEMU binary"));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
} else if (!STRPREFIX(migrateFrom, "tcp") &&
|
||||||
|
!STRPREFIX(migrateFrom, "exec") &&
|
||||||
|
!STRPREFIX(migrateFrom, "fd") &&
|
||||||
|
!STRPREFIX(migrateFrom, "unix") &&
|
||||||
|
STRNEQ(migrateFrom, "stdio")) {
|
||||||
|
virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
|
||||||
|
_("unknown migration protocol"));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
char *
|
||||||
|
qemuMigrationIncomingURI(const char *migrateFrom,
|
||||||
|
int migrateFd)
|
||||||
|
{
|
||||||
|
char *uri = NULL;
|
||||||
|
|
||||||
|
if (STREQ(migrateFrom, "stdio"))
|
||||||
|
ignore_value(virAsprintf(&uri, "fd:%d", migrateFd));
|
||||||
|
else
|
||||||
|
ignore_value(VIR_STRDUP(uri, migrateFrom));
|
||||||
|
|
||||||
|
return uri;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* This is called for outgoing non-p2p migrations when a connection to the
|
/* This is called for outgoing non-p2p migrations when a connection to the
|
||||||
* client which initiated the migration was closed but we were waiting for it
|
* client which initiated the migration was closed but we were waiting for it
|
||||||
* to follow up with the next phase, that is, in between
|
* to follow up with the next phase, that is, in between
|
||||||
|
|||||||
@@ -199,4 +199,10 @@ void qemuMigrationErrorSave(virQEMUDriverPtr driver,
|
|||||||
void qemuMigrationErrorReport(virQEMUDriverPtr driver,
|
void qemuMigrationErrorReport(virQEMUDriverPtr driver,
|
||||||
const char *name);
|
const char *name);
|
||||||
|
|
||||||
|
int qemuMigrationCheckIncoming(virQEMUCapsPtr qemuCaps,
|
||||||
|
const char *migrateFrom);
|
||||||
|
|
||||||
|
char *qemuMigrationIncomingURI(const char *migrateFrom,
|
||||||
|
int migrateFd);
|
||||||
|
|
||||||
#endif /* __QEMU_MIGRATION_H__ */
|
#endif /* __QEMU_MIGRATION_H__ */
|
||||||
|
|||||||
@@ -4514,10 +4514,10 @@ int qemuProcessStart(virConnectPtr conn,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (migrateFrom) {
|
if (migrateFrom) {
|
||||||
if (qemuBuildIncomingCheckProtocol(priv->qemuCaps, migrateFrom) < 0)
|
if (qemuMigrationCheckIncoming(priv->qemuCaps, migrateFrom) < 0)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
if (!(migrateURI = qemuBuildIncomingURI(migrateFrom, stdin_fd)))
|
if (!(migrateURI = qemuMigrationIncomingURI(migrateFrom, stdin_fd)))
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
# include "qemu/qemu_capabilities.h"
|
# include "qemu/qemu_capabilities.h"
|
||||||
# include "qemu/qemu_command.h"
|
# include "qemu/qemu_command.h"
|
||||||
# include "qemu/qemu_domain.h"
|
# include "qemu/qemu_domain.h"
|
||||||
|
# include "qemu/qemu_migration.h"
|
||||||
# include "datatypes.h"
|
# include "datatypes.h"
|
||||||
# include "conf/storage_conf.h"
|
# include "conf/storage_conf.h"
|
||||||
# include "cpu/cpu_map.h"
|
# include "cpu/cpu_map.h"
|
||||||
@@ -410,8 +411,8 @@ testCompareXMLToArgvHelper(const void *data)
|
|||||||
char *migrateURI = NULL;
|
char *migrateURI = NULL;
|
||||||
|
|
||||||
if (info->migrateFrom &&
|
if (info->migrateFrom &&
|
||||||
!(migrateURI = qemuBuildIncomingURI(info->migrateFrom,
|
!(migrateURI = qemuMigrationIncomingURI(info->migrateFrom,
|
||||||
info->migrateFd)))
|
info->migrateFd)))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (virAsprintf(&xml, "%s/qemuxml2argvdata/qemuxml2argv-%s.xml",
|
if (virAsprintf(&xml, "%s/qemuxml2argvdata/qemuxml2argv-%s.xml",
|
||||||
|
|||||||
Reference in New Issue
Block a user