diff options
author | Juan Quintela <quintela@redhat.com> | 2016-01-15 08:56:17 +0100 |
---|---|---|
committer | Juan Quintela <quintela@redhat.com> | 2017-09-22 14:11:21 +0200 |
commit | 4075fb1ca4ed673ff93d09936da014c1d2c6d2ca (patch) | |
tree | 18126dcdb4b7aff15d239d7d0258fbec7cbcbab8 /migration | |
parent | 30126bbf1f7fcad0bf4c65b01a21ff22a36a9759 (diff) |
migration: Create x-multifd-channels parameter
Indicates the number of channels that we will create. By default we
create 2 channels.
Signed-off-by: Juan Quintela <quintela@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
--
Catch inconsistent defaults (eric).
Improve comment stating that number of threads is the same than number
of sockets
Use new DEFIN_PROP_*
Rename x-multifd-threads to x-multifd-threads
Diffstat (limited to 'migration')
-rw-r--r-- | migration/migration.c | 26 | ||||
-rw-r--r-- | migration/migration.h | 1 |
2 files changed, 27 insertions, 0 deletions
diff --git a/migration/migration.c b/migration/migration.c index 958b783bcf..7e79310d03 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -77,6 +77,7 @@ * Note: Please change this default value to 10000 when we support hybrid mode. */ #define DEFAULT_MIGRATE_X_CHECKPOINT_DELAY 200 +#define DEFAULT_MIGRATE_MULTIFD_CHANNELS 2 static NotifierList migration_state_notifiers = NOTIFIER_LIST_INITIALIZER(migration_state_notifiers); @@ -481,6 +482,8 @@ MigrationParameters *qmp_query_migrate_parameters(Error **errp) params->x_checkpoint_delay = s->parameters.x_checkpoint_delay; params->has_block_incremental = true; params->block_incremental = s->parameters.block_incremental; + params->has_x_multifd_channels = true; + params->x_multifd_channels = s->parameters.x_multifd_channels; return params; } @@ -762,6 +765,13 @@ static bool migrate_params_check(MigrationParameters *params, Error **errp) "is invalid, it should be positive"); return false; } + if (params->has_x_multifd_channels && + (params->x_multifd_channels < 1 || params->x_multifd_channels > 255)) { + error_setg(errp, QERR_INVALID_PARAMETER_VALUE, + "multifd_channels", + "is invalid, it should be in the range of 1 to 255"); + return false; + } return true; } @@ -880,6 +890,9 @@ static void migrate_params_apply(MigrateSetParameters *params) if (params->has_block_incremental) { s->parameters.block_incremental = params->block_incremental; } + if (params->has_x_multifd_channels) { + s->parameters.x_multifd_channels = params->x_multifd_channels; + } } void qmp_migrate_set_parameters(MigrateSetParameters *params, Error **errp) @@ -1458,6 +1471,15 @@ bool migrate_use_multifd(void) return s->enabled_capabilities[MIGRATION_CAPABILITY_X_MULTIFD]; } +int migrate_multifd_channels(void) +{ + MigrationState *s; + + s = migrate_get_current(); + + return s->parameters.x_multifd_channels; +} + int migrate_use_xbzrle(void) { MigrationState *s; @@ -2223,6 +2245,9 @@ static Property migration_properties[] = { DEFINE_PROP_INT64("x-checkpoint-delay", MigrationState, parameters.x_checkpoint_delay, DEFAULT_MIGRATE_X_CHECKPOINT_DELAY), + DEFINE_PROP_INT64("x-multifd-channels", MigrationState, + parameters.x_multifd_channels, + DEFAULT_MIGRATE_MULTIFD_CHANNELS), /* Migration capabilities */ DEFINE_PROP_MIG_CAP("x-xbzrle", MIGRATION_CAPABILITY_XBZRLE), @@ -2280,6 +2305,7 @@ static void migration_instance_init(Object *obj) params->has_downtime_limit = true; params->has_x_checkpoint_delay = true; params->has_block_incremental = true; + params->has_x_multifd_channels = true; } /* diff --git a/migration/migration.h b/migration/migration.h index b7437f16ce..3060cbc374 100644 --- a/migration/migration.h +++ b/migration/migration.h @@ -175,6 +175,7 @@ bool migrate_zero_blocks(void); bool migrate_auto_converge(void); bool migrate_use_multifd(void); +int migrate_multifd_channels(void); int migrate_use_xbzrle(void); int64_t migrate_xbzrle_cache_size(void); |