migration: Use proper types in json

We use int for everything (int64_t), and then we check that value is
between 0 and 255.  Change it to the valid types.

This change only happens for HMP.  QMP always use bytes and similar.

Signed-off-by: Juan Quintela <quintela@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
Juan Quintela 2017-12-01 13:08:38 +01:00
parent fd06527b80
commit 741d4086c8
3 changed files with 41 additions and 50 deletions

22
hmp.c
View File

@ -293,23 +293,23 @@ void hmp_info_migrate_parameters(Monitor *mon, const QDict *qdict)
if (params) { if (params) {
assert(params->has_compress_level); assert(params->has_compress_level);
monitor_printf(mon, "%s: %" PRId64 "\n", monitor_printf(mon, "%s: %u\n",
MigrationParameter_str(MIGRATION_PARAMETER_COMPRESS_LEVEL), MigrationParameter_str(MIGRATION_PARAMETER_COMPRESS_LEVEL),
params->compress_level); params->compress_level);
assert(params->has_compress_threads); assert(params->has_compress_threads);
monitor_printf(mon, "%s: %" PRId64 "\n", monitor_printf(mon, "%s: %u\n",
MigrationParameter_str(MIGRATION_PARAMETER_COMPRESS_THREADS), MigrationParameter_str(MIGRATION_PARAMETER_COMPRESS_THREADS),
params->compress_threads); params->compress_threads);
assert(params->has_decompress_threads); assert(params->has_decompress_threads);
monitor_printf(mon, "%s: %" PRId64 "\n", monitor_printf(mon, "%s: %u\n",
MigrationParameter_str(MIGRATION_PARAMETER_DECOMPRESS_THREADS), MigrationParameter_str(MIGRATION_PARAMETER_DECOMPRESS_THREADS),
params->decompress_threads); params->decompress_threads);
assert(params->has_cpu_throttle_initial); assert(params->has_cpu_throttle_initial);
monitor_printf(mon, "%s: %" PRId64 "\n", monitor_printf(mon, "%s: %u\n",
MigrationParameter_str(MIGRATION_PARAMETER_CPU_THROTTLE_INITIAL), MigrationParameter_str(MIGRATION_PARAMETER_CPU_THROTTLE_INITIAL),
params->cpu_throttle_initial); params->cpu_throttle_initial);
assert(params->has_cpu_throttle_increment); assert(params->has_cpu_throttle_increment);
monitor_printf(mon, "%s: %" PRId64 "\n", monitor_printf(mon, "%s: %u\n",
MigrationParameter_str(MIGRATION_PARAMETER_CPU_THROTTLE_INCREMENT), MigrationParameter_str(MIGRATION_PARAMETER_CPU_THROTTLE_INCREMENT),
params->cpu_throttle_increment); params->cpu_throttle_increment);
assert(params->has_tls_creds); assert(params->has_tls_creds);
@ -321,28 +321,28 @@ void hmp_info_migrate_parameters(Monitor *mon, const QDict *qdict)
MigrationParameter_str(MIGRATION_PARAMETER_TLS_HOSTNAME), MigrationParameter_str(MIGRATION_PARAMETER_TLS_HOSTNAME),
params->tls_hostname); params->tls_hostname);
assert(params->has_max_bandwidth); assert(params->has_max_bandwidth);
monitor_printf(mon, "%s: %" PRId64 " bytes/second\n", monitor_printf(mon, "%s: %" PRIu64 " bytes/second\n",
MigrationParameter_str(MIGRATION_PARAMETER_MAX_BANDWIDTH), MigrationParameter_str(MIGRATION_PARAMETER_MAX_BANDWIDTH),
params->max_bandwidth); params->max_bandwidth);
assert(params->has_downtime_limit); assert(params->has_downtime_limit);
monitor_printf(mon, "%s: %" PRId64 " milliseconds\n", monitor_printf(mon, "%s: %" PRIu64 " milliseconds\n",
MigrationParameter_str(MIGRATION_PARAMETER_DOWNTIME_LIMIT), MigrationParameter_str(MIGRATION_PARAMETER_DOWNTIME_LIMIT),
params->downtime_limit); params->downtime_limit);
assert(params->has_x_checkpoint_delay); assert(params->has_x_checkpoint_delay);
monitor_printf(mon, "%s: %" PRId64 "\n", monitor_printf(mon, "%s: %u\n",
MigrationParameter_str(MIGRATION_PARAMETER_X_CHECKPOINT_DELAY), MigrationParameter_str(MIGRATION_PARAMETER_X_CHECKPOINT_DELAY),
params->x_checkpoint_delay); params->x_checkpoint_delay);
assert(params->has_block_incremental); assert(params->has_block_incremental);
monitor_printf(mon, "%s: %s\n", monitor_printf(mon, "%s: %s\n",
MigrationParameter_str(MIGRATION_PARAMETER_BLOCK_INCREMENTAL), MigrationParameter_str(MIGRATION_PARAMETER_BLOCK_INCREMENTAL),
params->block_incremental ? "on" : "off"); params->block_incremental ? "on" : "off");
monitor_printf(mon, "%s: %" PRId64 "\n", monitor_printf(mon, "%s: %u\n",
MigrationParameter_str(MIGRATION_PARAMETER_X_MULTIFD_CHANNELS), MigrationParameter_str(MIGRATION_PARAMETER_X_MULTIFD_CHANNELS),
params->x_multifd_channels); params->x_multifd_channels);
monitor_printf(mon, "%s: %" PRId64 "\n", monitor_printf(mon, "%s: %u\n",
MigrationParameter_str(MIGRATION_PARAMETER_X_MULTIFD_PAGE_COUNT), MigrationParameter_str(MIGRATION_PARAMETER_X_MULTIFD_PAGE_COUNT),
params->x_multifd_page_count); params->x_multifd_page_count);
monitor_printf(mon, "%s: %" PRId64 "\n", monitor_printf(mon, "%s: %" PRIu64 "\n",
MigrationParameter_str(MIGRATION_PARAMETER_XBZRLE_CACHE_SIZE), MigrationParameter_str(MIGRATION_PARAMETER_XBZRLE_CACHE_SIZE),
params->xbzrle_cache_size); params->xbzrle_cache_size);
} }

View File

@ -741,22 +741,20 @@ void qmp_migrate_set_capabilities(MigrationCapabilityStatusList *params,
static bool migrate_params_check(MigrationParameters *params, Error **errp) static bool migrate_params_check(MigrationParameters *params, Error **errp)
{ {
if (params->has_compress_level && if (params->has_compress_level &&
(params->compress_level < 0 || params->compress_level > 9)) { (params->compress_level > 9)) {
error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "compress_level", error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "compress_level",
"is invalid, it should be in the range of 0 to 9"); "is invalid, it should be in the range of 0 to 9");
return false; return false;
} }
if (params->has_compress_threads && if (params->has_compress_threads && (params->compress_threads < 1)) {
(params->compress_threads < 1 || params->compress_threads > 255)) {
error_setg(errp, QERR_INVALID_PARAMETER_VALUE, error_setg(errp, QERR_INVALID_PARAMETER_VALUE,
"compress_threads", "compress_threads",
"is invalid, it should be in the range of 1 to 255"); "is invalid, it should be in the range of 1 to 255");
return false; return false;
} }
if (params->has_decompress_threads && if (params->has_decompress_threads && (params->decompress_threads < 1)) {
(params->decompress_threads < 1 || params->decompress_threads > 255)) {
error_setg(errp, QERR_INVALID_PARAMETER_VALUE, error_setg(errp, QERR_INVALID_PARAMETER_VALUE,
"decompress_threads", "decompress_threads",
"is invalid, it should be in the range of 1 to 255"); "is invalid, it should be in the range of 1 to 255");
@ -781,38 +779,31 @@ static bool migrate_params_check(MigrationParameters *params, Error **errp)
return false; return false;
} }
if (params->has_max_bandwidth && if (params->has_max_bandwidth && (params->max_bandwidth > SIZE_MAX)) {
(params->max_bandwidth < 0 || params->max_bandwidth > SIZE_MAX)) {
error_setg(errp, "Parameter 'max_bandwidth' expects an integer in the" error_setg(errp, "Parameter 'max_bandwidth' expects an integer in the"
" range of 0 to %zu bytes/second", SIZE_MAX); " range of 0 to %zu bytes/second", SIZE_MAX);
return false; return false;
} }
if (params->has_downtime_limit && if (params->has_downtime_limit &&
(params->downtime_limit < 0 || (params->downtime_limit > MAX_MIGRATE_DOWNTIME)) {
params->downtime_limit > MAX_MIGRATE_DOWNTIME)) {
error_setg(errp, "Parameter 'downtime_limit' expects an integer in " error_setg(errp, "Parameter 'downtime_limit' expects an integer in "
"the range of 0 to %d milliseconds", "the range of 0 to %d milliseconds",
MAX_MIGRATE_DOWNTIME); MAX_MIGRATE_DOWNTIME);
return false; return false;
} }
if (params->has_x_checkpoint_delay && (params->x_checkpoint_delay < 0)) { /* x_checkpoint_delay is now always positive */
error_setg(errp, QERR_INVALID_PARAMETER_VALUE,
"x_checkpoint_delay", if (params->has_x_multifd_channels && (params->x_multifd_channels < 1)) {
"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, error_setg(errp, QERR_INVALID_PARAMETER_VALUE,
"multifd_channels", "multifd_channels",
"is invalid, it should be in the range of 1 to 255"); "is invalid, it should be in the range of 1 to 255");
return false; return false;
} }
if (params->has_x_multifd_page_count && if (params->has_x_multifd_page_count &&
(params->x_multifd_page_count < 1 || (params->x_multifd_page_count < 1 ||
params->x_multifd_page_count > 10000)) { params->x_multifd_page_count > 10000)) {
error_setg(errp, QERR_INVALID_PARAMETER_VALUE, error_setg(errp, QERR_INVALID_PARAMETER_VALUE,
"multifd_page_count", "multifd_page_count",
"is invalid, it should be in the range of 1 to 10000"); "is invalid, it should be in the range of 1 to 10000");
@ -2394,33 +2385,33 @@ static Property migration_properties[] = {
send_section_footer, true), send_section_footer, true),
/* Migration parameters */ /* Migration parameters */
DEFINE_PROP_INT64("x-compress-level", MigrationState, DEFINE_PROP_UINT8("x-compress-level", MigrationState,
parameters.compress_level, parameters.compress_level,
DEFAULT_MIGRATE_COMPRESS_LEVEL), DEFAULT_MIGRATE_COMPRESS_LEVEL),
DEFINE_PROP_INT64("x-compress-threads", MigrationState, DEFINE_PROP_UINT8("x-compress-threads", MigrationState,
parameters.compress_threads, parameters.compress_threads,
DEFAULT_MIGRATE_COMPRESS_THREAD_COUNT), DEFAULT_MIGRATE_COMPRESS_THREAD_COUNT),
DEFINE_PROP_INT64("x-decompress-threads", MigrationState, DEFINE_PROP_UINT8("x-decompress-threads", MigrationState,
parameters.decompress_threads, parameters.decompress_threads,
DEFAULT_MIGRATE_DECOMPRESS_THREAD_COUNT), DEFAULT_MIGRATE_DECOMPRESS_THREAD_COUNT),
DEFINE_PROP_INT64("x-cpu-throttle-initial", MigrationState, DEFINE_PROP_UINT8("x-cpu-throttle-initial", MigrationState,
parameters.cpu_throttle_initial, parameters.cpu_throttle_initial,
DEFAULT_MIGRATE_CPU_THROTTLE_INITIAL), DEFAULT_MIGRATE_CPU_THROTTLE_INITIAL),
DEFINE_PROP_INT64("x-cpu-throttle-increment", MigrationState, DEFINE_PROP_UINT8("x-cpu-throttle-increment", MigrationState,
parameters.cpu_throttle_increment, parameters.cpu_throttle_increment,
DEFAULT_MIGRATE_CPU_THROTTLE_INCREMENT), DEFAULT_MIGRATE_CPU_THROTTLE_INCREMENT),
DEFINE_PROP_INT64("x-max-bandwidth", MigrationState, DEFINE_PROP_SIZE("x-max-bandwidth", MigrationState,
parameters.max_bandwidth, MAX_THROTTLE), parameters.max_bandwidth, MAX_THROTTLE),
DEFINE_PROP_INT64("x-downtime-limit", MigrationState, DEFINE_PROP_UINT64("x-downtime-limit", MigrationState,
parameters.downtime_limit, parameters.downtime_limit,
DEFAULT_MIGRATE_SET_DOWNTIME), DEFAULT_MIGRATE_SET_DOWNTIME),
DEFINE_PROP_INT64("x-checkpoint-delay", MigrationState, DEFINE_PROP_UINT32("x-checkpoint-delay", MigrationState,
parameters.x_checkpoint_delay, parameters.x_checkpoint_delay,
DEFAULT_MIGRATE_X_CHECKPOINT_DELAY), DEFAULT_MIGRATE_X_CHECKPOINT_DELAY),
DEFINE_PROP_INT64("x-multifd-channels", MigrationState, DEFINE_PROP_UINT8("x-multifd-channels", MigrationState,
parameters.x_multifd_channels, parameters.x_multifd_channels,
DEFAULT_MIGRATE_MULTIFD_CHANNELS), DEFAULT_MIGRATE_MULTIFD_CHANNELS),
DEFINE_PROP_INT64("x-multifd-page-count", MigrationState, DEFINE_PROP_UINT32("x-multifd-page-count", MigrationState,
parameters.x_multifd_page_count, parameters.x_multifd_page_count,
DEFAULT_MIGRATE_MULTIFD_PAGE_COUNT), DEFAULT_MIGRATE_MULTIFD_PAGE_COUNT),
DEFINE_PROP_SIZE("xbzrle-cache-size", MigrationState, DEFINE_PROP_SIZE("xbzrle-cache-size", MigrationState,

View File

@ -668,19 +668,19 @@
# Since: 2.4 # Since: 2.4
## ##
{ 'struct': 'MigrationParameters', { 'struct': 'MigrationParameters',
'data': { '*compress-level': 'int', 'data': { '*compress-level': 'uint8',
'*compress-threads': 'int', '*compress-threads': 'uint8',
'*decompress-threads': 'int', '*decompress-threads': 'uint8',
'*cpu-throttle-initial': 'int', '*cpu-throttle-initial': 'uint8',
'*cpu-throttle-increment': 'int', '*cpu-throttle-increment': 'uint8',
'*tls-creds': 'str', '*tls-creds': 'str',
'*tls-hostname': 'str', '*tls-hostname': 'str',
'*max-bandwidth': 'int', '*max-bandwidth': 'size',
'*downtime-limit': 'int', '*downtime-limit': 'uint64',
'*x-checkpoint-delay': 'int', '*x-checkpoint-delay': 'uint32',
'*block-incremental': 'bool' , '*block-incremental': 'bool' ,
'*x-multifd-channels': 'int', '*x-multifd-channels': 'uint8',
'*x-multifd-page-count': 'int', '*x-multifd-page-count': 'uint32',
'*xbzrle-cache-size': 'size' } } '*xbzrle-cache-size': 'size' } }
## ##