@ -89,6 +89,8 @@
# define DEFAULT_MIGRATE_X_CHECKPOINT_DELAY (200 * 100)
# define DEFAULT_MIGRATE_MULTIFD_CHANNELS 2
# define DEFAULT_MIGRATE_MULTIFD_COMPRESSION MULTIFD_COMPRESSION_NONE
/* 0: means nocompress, 1: best speed, ... 9: best compress ratio */
# define DEFAULT_MIGRATE_MULTIFD_ZLIB_LEVEL 1
/* Background transfer rate for postcopy, 0 means unlimited, note
* that page requests can still exceed this limit .
@ -801,6 +803,8 @@ MigrationParameters *qmp_query_migrate_parameters(Error **errp)
params - > multifd_channels = s - > parameters . multifd_channels ;
params - > has_multifd_compression = true ;
params - > multifd_compression = s - > parameters . multifd_compression ;
params - > has_multifd_zlib_level = true ;
params - > multifd_zlib_level = s - > parameters . multifd_zlib_level ;
params - > has_xbzrle_cache_size = true ;
params - > xbzrle_cache_size = s - > parameters . xbzrle_cache_size ;
params - > has_max_postcopy_bandwidth = true ;
@ -1208,6 +1212,13 @@ static bool migrate_params_check(MigrationParameters *params, Error **errp)
return false ;
}
if ( params - > has_multifd_zlib_level & &
( params - > multifd_zlib_level > 9 ) ) {
error_setg ( errp , QERR_INVALID_PARAMETER_VALUE , " multifd_zlib_level " ,
" is invalid, it should be in the range of 0 to 9 " ) ;
return false ;
}
if ( params - > has_xbzrle_cache_size & &
( params - > xbzrle_cache_size < qemu_target_page_size ( ) | |
! is_power_of_2 ( params - > xbzrle_cache_size ) ) ) {
@ -2254,6 +2265,15 @@ MultiFDCompression migrate_multifd_compression(void)
return s - > parameters . multifd_compression ;
}
int migrate_multifd_zlib_level ( void )
{
MigrationState * s ;
s = migrate_get_current ( ) ;
return s - > parameters . multifd_zlib_level ;
}
int migrate_use_xbzrle ( void )
{
MigrationState * s ;
@ -3544,6 +3564,9 @@ static Property migration_properties[] = {
DEFINE_PROP_MULTIFD_COMPRESSION ( " multifd-compression " , MigrationState ,
parameters . multifd_compression ,
DEFAULT_MIGRATE_MULTIFD_COMPRESSION ) ,
DEFINE_PROP_UINT8 ( " multifd-zlib-level " , MigrationState ,
parameters . multifd_zlib_level ,
DEFAULT_MIGRATE_MULTIFD_ZLIB_LEVEL ) ,
DEFINE_PROP_SIZE ( " xbzrle-cache-size " , MigrationState ,
parameters . xbzrle_cache_size ,
DEFAULT_MIGRATE_XBZRLE_CACHE_SIZE ) ,
@ -3635,6 +3658,7 @@ static void migration_instance_init(Object *obj)
params - > has_block_incremental = true ;
params - > has_multifd_channels = true ;
params - > has_multifd_compression = true ;
params - > has_multifd_zlib_level = true ;
params - > has_xbzrle_cache_size = true ;
params - > has_max_postcopy_bandwidth = true ;
params - > has_max_cpu_throttle = true ;