qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v3 23/27] migration: don't use an array for stor


From: Dr. David Alan Gilbert
Subject: Re: [Qemu-devel] [PATCH v3 23/27] migration: don't use an array for storing migrate parameters
Date: Thu, 10 Mar 2016 17:25:00 +0000
User-agent: Mutt/1.5.24 (2015-08-30)

* Daniel P. Berrange (address@hidden) wrote:
> The MigrateState struct uses an array for storing migration
> parameters. This presumes that all future parameters will
> be integers too, which is not going to be the case. There
> is no functional reason why an array is used, if anything
> it makes the code less clear. The QAPI schema already
> defines a struct - MigrationParameters - capable of storing
> all the individual parameters, so just use that instead of
> an array.

Reviewed-by: Dr. David Alan Gilbert <address@hidden>

(You could have done this as a separate patch rather than put
it in this big series)


> Signed-off-by: Daniel P. Berrange <address@hidden>
> ---
>  include/migration/migration.h |  5 +++-
>  migration/migration.c         | 56 
> +++++++++++++++++++------------------------
>  migration/ram.c               |  6 ++---
>  3 files changed, 30 insertions(+), 37 deletions(-)
> 
> diff --git a/include/migration/migration.h b/include/migration/migration.h
> index 5d44b07..999a5ee 100644
> --- a/include/migration/migration.h
> +++ b/include/migration/migration.h
> @@ -133,9 +133,12 @@ struct MigrationState
>      QemuThread thread;
>      QEMUBH *cleanup_bh;
>      QEMUFile *to_dst_file;
> -    int parameters[MIGRATION_PARAMETER__MAX];
> +
> +    /* New style params from 'migrate-set-parameters' */
> +    MigrationParameters parameters;
>  
>      int state;
> +    /* Old style params from 'migrate' command */
>      MigrationParams params;
>  
>      /* State related to return path */
> diff --git a/migration/migration.c b/migration/migration.c
> index e90a14f..b3bdc31 100644
> --- a/migration/migration.c
> +++ b/migration/migration.c
> @@ -82,16 +82,14 @@ MigrationState *migrate_get_current(void)
>          .bandwidth_limit = MAX_THROTTLE,
>          .xbzrle_cache_size = DEFAULT_MIGRATE_CACHE_SIZE,
>          .mbps = -1,
> -        .parameters[MIGRATION_PARAMETER_COMPRESS_LEVEL] =
> -                DEFAULT_MIGRATE_COMPRESS_LEVEL,
> -        .parameters[MIGRATION_PARAMETER_COMPRESS_THREADS] =
> -                DEFAULT_MIGRATE_COMPRESS_THREAD_COUNT,
> -        .parameters[MIGRATION_PARAMETER_DECOMPRESS_THREADS] =
> -                DEFAULT_MIGRATE_DECOMPRESS_THREAD_COUNT,
> -        .parameters[MIGRATION_PARAMETER_X_CPU_THROTTLE_INITIAL] =
> -                DEFAULT_MIGRATE_X_CPU_THROTTLE_INITIAL,
> -        .parameters[MIGRATION_PARAMETER_X_CPU_THROTTLE_INCREMENT] =
> -                DEFAULT_MIGRATE_X_CPU_THROTTLE_INCREMENT,
> +        .parameters = {
> +            .compress_level = DEFAULT_MIGRATE_COMPRESS_LEVEL,
> +            .compress_threads = DEFAULT_MIGRATE_COMPRESS_THREAD_COUNT,
> +            .decompress_threads = DEFAULT_MIGRATE_DECOMPRESS_THREAD_COUNT,
> +            .x_cpu_throttle_initial = DEFAULT_MIGRATE_X_CPU_THROTTLE_INITIAL,
> +            .x_cpu_throttle_increment =
> +              DEFAULT_MIGRATE_X_CPU_THROTTLE_INCREMENT,
> +        },
>      };
>  
>      if (!once) {
> @@ -525,15 +523,11 @@ MigrationParameters *qmp_query_migrate_parameters(Error 
> **errp)
>      MigrationState *s = migrate_get_current();
>  
>      params = g_malloc0(sizeof(*params));
> -    params->compress_level = 
> s->parameters[MIGRATION_PARAMETER_COMPRESS_LEVEL];
> -    params->compress_threads =
> -            s->parameters[MIGRATION_PARAMETER_COMPRESS_THREADS];
> -    params->decompress_threads =
> -            s->parameters[MIGRATION_PARAMETER_DECOMPRESS_THREADS];
> -    params->x_cpu_throttle_initial =
> -            s->parameters[MIGRATION_PARAMETER_X_CPU_THROTTLE_INITIAL];
> -    params->x_cpu_throttle_increment =
> -            s->parameters[MIGRATION_PARAMETER_X_CPU_THROTTLE_INCREMENT];
> +    params->compress_level = s->parameters.compress_level;
> +    params->compress_threads = s->parameters.compress_threads;
> +    params->decompress_threads = s->parameters.decompress_threads;
> +    params->x_cpu_throttle_initial = s->parameters.x_cpu_throttle_initial;
> +    params->x_cpu_throttle_increment = 
> s->parameters.x_cpu_throttle_increment;
>  
>      return params;
>  }
> @@ -733,7 +727,8 @@ void qmp_migrate_set_parameters(bool has_compress_level,
>                                  bool has_x_cpu_throttle_initial,
>                                  int64_t x_cpu_throttle_initial,
>                                  bool has_x_cpu_throttle_increment,
> -                                int64_t x_cpu_throttle_increment, Error 
> **errp)
> +                                int64_t x_cpu_throttle_increment,
> +                                Error **errp)
>  {
>      MigrationState *s = migrate_get_current();
>  
> @@ -770,26 +765,23 @@ void qmp_migrate_set_parameters(bool has_compress_level,
>      }
>  
>      if (has_compress_level) {
> -        s->parameters[MIGRATION_PARAMETER_COMPRESS_LEVEL] = compress_level;
> +        s->parameters.compress_level = compress_level;
>      }
>      if (has_compress_threads) {
> -        s->parameters[MIGRATION_PARAMETER_COMPRESS_THREADS] = 
> compress_threads;
> +        s->parameters.compress_threads = compress_threads;
>      }
>      if (has_decompress_threads) {
> -        s->parameters[MIGRATION_PARAMETER_DECOMPRESS_THREADS] =
> -                                                    decompress_threads;
> +        s->parameters.decompress_threads = decompress_threads;
>      }
>      if (has_x_cpu_throttle_initial) {
> -        s->parameters[MIGRATION_PARAMETER_X_CPU_THROTTLE_INITIAL] =
> -                                                    x_cpu_throttle_initial;
> +        s->parameters.x_cpu_throttle_initial = x_cpu_throttle_initial;
>      }
> -
>      if (has_x_cpu_throttle_increment) {
> -        s->parameters[MIGRATION_PARAMETER_X_CPU_THROTTLE_INCREMENT] =
> -                                                    x_cpu_throttle_increment;
> +        s->parameters.x_cpu_throttle_increment = x_cpu_throttle_increment;
>      }
>  }
>  
> +
>  void qmp_migrate_start_postcopy(Error **errp)
>  {
>      MigrationState *s = migrate_get_current();
> @@ -1173,7 +1165,7 @@ int migrate_compress_level(void)
>  
>      s = migrate_get_current();
>  
> -    return s->parameters[MIGRATION_PARAMETER_COMPRESS_LEVEL];
> +    return s->parameters.compress_level;
>  }
>  
>  int migrate_compress_threads(void)
> @@ -1182,7 +1174,7 @@ int migrate_compress_threads(void)
>  
>      s = migrate_get_current();
>  
> -    return s->parameters[MIGRATION_PARAMETER_COMPRESS_THREADS];
> +    return s->parameters.compress_threads;
>  }
>  
>  int migrate_decompress_threads(void)
> @@ -1191,7 +1183,7 @@ int migrate_decompress_threads(void)
>  
>      s = migrate_get_current();
>  
> -    return s->parameters[MIGRATION_PARAMETER_DECOMPRESS_THREADS];
> +    return s->parameters.decompress_threads;
>  }
>  
>  bool migrate_use_events(void)
> diff --git a/migration/ram.c b/migration/ram.c
> index 704f6a9..42957bd 100644
> --- a/migration/ram.c
> +++ b/migration/ram.c
> @@ -426,10 +426,8 @@ static size_t save_page_header(QEMUFile *f, RAMBlock 
> *block, ram_addr_t offset)
>  static void mig_throttle_guest_down(void)
>  {
>      MigrationState *s = migrate_get_current();
> -    uint64_t pct_initial =
> -            s->parameters[MIGRATION_PARAMETER_X_CPU_THROTTLE_INITIAL];
> -    uint64_t pct_icrement =
> -            s->parameters[MIGRATION_PARAMETER_X_CPU_THROTTLE_INCREMENT];
> +    uint64_t pct_initial = s->parameters.x_cpu_throttle_initial;
> +    uint64_t pct_icrement = s->parameters.x_cpu_throttle_increment;
>  
>      /* We have not started throttling yet. Let's start it. */
>      if (!cpu_throttle_active()) {
> -- 
> 2.5.0
> 
--
Dr. David Alan Gilbert / address@hidden / Manchester, UK



reply via email to

[Prev in Thread] Current Thread [Next in Thread]