aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xconfigure11
-rw-r--r--include/migration/block.h24
-rw-r--r--migration/Makefile.objs2
-rw-r--r--migration/migration.c14
4 files changed, 49 insertions, 2 deletions
diff --git a/configure b/configure
index 139638e922..1a5ee4b909 100755
--- a/configure
+++ b/configure
@@ -316,6 +316,7 @@ vte=""
virglrenderer=""
tpm="yes"
libssh2=""
+live_block_migration="yes"
numa=""
tcmalloc="no"
jemalloc="no"
@@ -1169,6 +1170,10 @@ for opt do
;;
--enable-libssh2) libssh2="yes"
;;
+ --disable-live-block-migration) live_block_migration="no"
+ ;;
+ --enable-live-block-migration) live_block_migration="yes"
+ ;;
--disable-numa) numa="no"
;;
--enable-numa) numa="yes"
@@ -1401,6 +1406,7 @@ disabled with --disable-FEATURE, default is enabled if available:
libnfs nfs support
smartcard smartcard support (libcacard)
libusb libusb (for usb passthrough)
+ live-block-migration Block migration in the main migration stream
usb-redir usb network redirection support
lzo support of lzo compression library
snappy support of snappy compression library
@@ -5216,6 +5222,7 @@ echo "TPM support $tpm"
echo "libssh2 support $libssh2"
echo "TPM passthrough $tpm_passthrough"
echo "QOM debugging $qom_cast_debug"
+echo "Live block migration $live_block_migration"
echo "lzo support $lzo"
echo "snappy support $snappy"
echo "bzip2 support $bzip2"
@@ -5782,6 +5789,10 @@ if test "$libssh2" = "yes" ; then
echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
fi
+if test "$live_block_migration" = "yes" ; then
+ echo "CONFIG_LIVE_BLOCK_MIGRATION=y" >> $config_host_mak
+fi
+
# USB host support
if test "$libusb" = "yes"; then
echo "HOST_USB=libusb legacy" >> $config_host_mak
diff --git a/include/migration/block.h b/include/migration/block.h
index 5225af9d2b..28cff53a23 100644
--- a/include/migration/block.h
+++ b/include/migration/block.h
@@ -14,12 +14,34 @@
#ifndef MIGRATION_BLOCK_H
#define MIGRATION_BLOCK_H
+#ifdef CONFIG_LIVE_BLOCK_MIGRATION
void blk_mig_init(void);
int blk_mig_active(void);
uint64_t blk_mig_bytes_transferred(void);
uint64_t blk_mig_bytes_remaining(void);
uint64_t blk_mig_bytes_total(void);
-void migrate_set_block_enabled(bool value, Error **errp);
+#else
+static inline void blk_mig_init(void) { }
+static inline int blk_mig_active(void)
+{
+ return false;
+}
+static inline uint64_t blk_mig_bytes_transferred(void)
+{
+ return 0;
+}
+
+static inline uint64_t blk_mig_bytes_remaining(void)
+{
+ return 0;
+}
+static inline uint64_t blk_mig_bytes_total(void)
+{
+ return 0;
+}
+#endif /* CONFIG_LIVE_BLOCK_MIGRATION */
+
+void migrate_set_block_enabled(bool value, Error **errp);
#endif /* MIGRATION_BLOCK_H */
diff --git a/migration/Makefile.objs b/migration/Makefile.objs
index c1920b6fc0..00a3f4a1d9 100644
--- a/migration/Makefile.objs
+++ b/migration/Makefile.objs
@@ -9,5 +9,5 @@ common-obj-y += qjson.o
common-obj-$(CONFIG_RDMA) += rdma.o
-common-obj-y += block.o
+common-obj-$(CONFIG_LIVE_BLOCK_MIGRATION) += block.o
diff --git a/migration/migration.c b/migration/migration.c
index ed66158377..2feeee8787 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -547,6 +547,11 @@ MigrationCapabilityStatusList *qmp_query_migrate_capabilities(Error **errp)
caps = NULL; /* silence compiler warning */
for (i = 0; i < MIGRATION_CAPABILITY__MAX; i++) {
+#ifndef CONFIG_LIVE_BLOCK_MIGRATION
+ if (i == MIGRATION_CAPABILITY_BLOCK) {
+ continue;
+ }
+#endif
if (i == MIGRATION_CAPABILITY_X_COLO && !colo_supported()) {
continue;
}
@@ -763,6 +768,15 @@ void qmp_migrate_set_capabilities(MigrationCapabilityStatusList *params,
}
for (cap = params; cap; cap = cap->next) {
+#ifndef CONFIG_LIVE_BLOCK_MIGRATION
+ if (cap->value->capability == MIGRATION_CAPABILITY_BLOCK
+ && cap->value->state) {
+ error_setg(errp, "QEMU compiled without old-style (blk/-b, inc/-i) "
+ "block migration");
+ error_append_hint(errp, "Use drive_mirror+NBD instead.\n");
+ continue;
+ }
+#endif
if (cap->value->capability == MIGRATION_CAPABILITY_X_COLO) {
if (!colo_supported()) {
error_setg(errp, "COLO is not currently supported, please"