migration: Deprecate block migration
It is obsolete. It is better to use driver-mirror with NBD instead. CC: Kevin Wolf <kwolf@redhat.com> CC: Eric Blake <eblake@redhat.com> CC: Stefan Hajnoczi <stefanha@redhat.com> CC: Hanna Czenczek <hreitz@redhat.com> Acked-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Juan Quintela <quintela@redhat.com> Message-ID: <20231018115513.2163-5-quintela@redhat.com>
This commit is contained in:
parent
8846b5bfca
commit
66db46ca83
@ -486,3 +486,13 @@ Use blockdev-mirror with NBD instead.
|
||||
As an intermediate step the ``blk`` functionality can be achieved by
|
||||
setting the ``block`` migration capability to ``true``. But this
|
||||
capability is also deprecated.
|
||||
|
||||
block migration (since 8.2)
|
||||
'''''''''''''''''''''''''''
|
||||
|
||||
Block migration is too inflexible. It needs to migrate all block
|
||||
devices or none.
|
||||
|
||||
Please see "QMP invocation for live storage migration with
|
||||
``blockdev-mirror`` + NBD" in docs/interop/live-block-operations.rst
|
||||
for a detailed explanation.
|
||||
|
@ -731,6 +731,9 @@ static int block_save_setup(QEMUFile *f, void *opaque)
|
||||
trace_migration_block_save("setup", block_mig_state.submitted,
|
||||
block_mig_state.transferred);
|
||||
|
||||
warn_report("block migration is deprecated;"
|
||||
" use blockdev-mirror with NBD instead");
|
||||
|
||||
ret = init_blk_migration(f);
|
||||
if (ret < 0) {
|
||||
return ret;
|
||||
|
@ -12,6 +12,7 @@
|
||||
*/
|
||||
|
||||
#include "qemu/osdep.h"
|
||||
#include "qemu/error-report.h"
|
||||
#include "exec/target_page.h"
|
||||
#include "qapi/clone-visitor.h"
|
||||
#include "qapi/error.h"
|
||||
@ -473,10 +474,14 @@ bool migrate_caps_check(bool *old_caps, bool *new_caps, Error **errp)
|
||||
if (new_caps[MIGRATION_CAPABILITY_BLOCK]) {
|
||||
error_setg(errp, "QEMU compiled without old-style (blk/-b, inc/-i) "
|
||||
"block migration");
|
||||
error_append_hint(errp, "Use drive_mirror+NBD instead.\n");
|
||||
error_append_hint(errp, "Use blockdev-mirror with NBD instead.\n");
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
if (new_caps[MIGRATION_CAPABILITY_BLOCK]) {
|
||||
warn_report("block migration is deprecated;"
|
||||
" use blockdev-mirror with NBD instead");
|
||||
}
|
||||
|
||||
#ifndef CONFIG_REPLICATION
|
||||
if (new_caps[MIGRATION_CAPABILITY_X_COLO]) {
|
||||
@ -1400,6 +1405,8 @@ static void migrate_params_apply(MigrateSetParameters *params, Error **errp)
|
||||
}
|
||||
|
||||
if (params->has_block_incremental) {
|
||||
warn_report("block migration is deprecated;"
|
||||
" use blockdev-mirror with NBD instead");
|
||||
s->parameters.block_incremental = params->block_incremental;
|
||||
}
|
||||
if (params->has_multifd_channels) {
|
||||
|
@ -269,11 +269,15 @@
|
||||
# average memory load of the virtual CPU indirectly. Note that
|
||||
# zero means guest doesn't dirty memory. (Since 8.1)
|
||||
#
|
||||
# Features:
|
||||
#
|
||||
# @deprecated: Member @disk is deprecated because block migration is.
|
||||
#
|
||||
# Since: 0.14
|
||||
##
|
||||
{ 'struct': 'MigrationInfo',
|
||||
'data': {'*status': 'MigrationStatus', '*ram': 'MigrationStats',
|
||||
'*disk': 'MigrationStats',
|
||||
'*disk': { 'type': 'MigrationStats', 'features': [ 'deprecated' ] },
|
||||
'*vfio': 'VfioStats',
|
||||
'*xbzrle-cache': 'XBZRLECacheStats',
|
||||
'*total-time': 'int',
|
||||
@ -525,6 +529,9 @@
|
||||
#
|
||||
# Features:
|
||||
#
|
||||
# @deprecated: Member @block is deprecated. Use blockdev-mirror with
|
||||
# NBD instead.
|
||||
#
|
||||
# @unstable: Members @x-colo and @x-ignore-shared are experimental.
|
||||
#
|
||||
# Since: 1.2
|
||||
@ -534,7 +541,8 @@
|
||||
'compress', 'events', 'postcopy-ram',
|
||||
{ 'name': 'x-colo', 'features': [ 'unstable' ] },
|
||||
'release-ram',
|
||||
'block', 'return-path', 'pause-before-switchover', 'multifd',
|
||||
{ 'name': 'block', 'features': [ 'deprecated' ] },
|
||||
'return-path', 'pause-before-switchover', 'multifd',
|
||||
'dirty-bitmaps', 'postcopy-blocktime', 'late-block-activate',
|
||||
{ 'name': 'x-ignore-shared', 'features': [ 'unstable' ] },
|
||||
'validate-uuid', 'background-snapshot',
|
||||
@ -835,6 +843,9 @@
|
||||
#
|
||||
# Features:
|
||||
#
|
||||
# @deprecated: Member @block-incremental is deprecated. Use
|
||||
# blockdev-mirror with NBD instead.
|
||||
#
|
||||
# @unstable: Members @x-checkpoint-delay and @x-vcpu-dirty-limit-period
|
||||
# are experimental.
|
||||
#
|
||||
@ -850,7 +861,7 @@
|
||||
'tls-creds', 'tls-hostname', 'tls-authz', 'max-bandwidth',
|
||||
'avail-switchover-bandwidth', 'downtime-limit',
|
||||
{ 'name': 'x-checkpoint-delay', 'features': [ 'unstable' ] },
|
||||
'block-incremental',
|
||||
{ 'name': 'block-incremental', 'features': [ 'deprecated' ] },
|
||||
'multifd-channels',
|
||||
'xbzrle-cache-size', 'max-postcopy-bandwidth',
|
||||
'max-cpu-throttle', 'multifd-compression',
|
||||
@ -1011,6 +1022,9 @@
|
||||
#
|
||||
# Features:
|
||||
#
|
||||
# @deprecated: Member @block-incremental is deprecated. Use
|
||||
# blockdev-mirror with NBD instead.
|
||||
#
|
||||
# @unstable: Members @x-checkpoint-delay and @x-vcpu-dirty-limit-period
|
||||
# are experimental.
|
||||
#
|
||||
@ -1040,7 +1054,8 @@
|
||||
'*downtime-limit': 'uint64',
|
||||
'*x-checkpoint-delay': { 'type': 'uint32',
|
||||
'features': [ 'unstable' ] },
|
||||
'*block-incremental': 'bool',
|
||||
'*block-incremental': { 'type': 'bool',
|
||||
'features': [ 'deprecated' ] },
|
||||
'*multifd-channels': 'uint8',
|
||||
'*xbzrle-cache-size': 'size',
|
||||
'*max-postcopy-bandwidth': 'size',
|
||||
@ -1225,6 +1240,9 @@
|
||||
#
|
||||
# Features:
|
||||
#
|
||||
# @deprecated: Member @block-incremental is deprecated. Use
|
||||
# blockdev-mirror with NBD instead.
|
||||
#
|
||||
# @unstable: Members @x-checkpoint-delay and @x-vcpu-dirty-limit-period
|
||||
# are experimental.
|
||||
#
|
||||
@ -1251,7 +1269,8 @@
|
||||
'*downtime-limit': 'uint64',
|
||||
'*x-checkpoint-delay': { 'type': 'uint32',
|
||||
'features': [ 'unstable' ] },
|
||||
'*block-incremental': 'bool',
|
||||
'*block-incremental': { 'type': 'bool',
|
||||
'features': [ 'deprecated' ] },
|
||||
'*multifd-channels': 'uint8',
|
||||
'*xbzrle-cache-size': 'size',
|
||||
'*max-postcopy-bandwidth': 'size',
|
||||
|
Loading…
Reference in New Issue
Block a user