On Fri, May 12, 2017 at 05:54:48PM +0200, Juan Quintela wrote: > We have change in the previous patch to use migration capabilities for > it. Notice that we continue using the old command line flags from > migrate command from the time being. Remove the set_params method as > now it is empty. > > Signed-off-by: Juan Quintela <quint...@redhat.com> > Reviewed-by: zhanghailiang <zhang.zhanghaili...@huawei.com> > > -- > - Maintain shared/enabled dependency (Xu suggestien) > --- > include/migration/migration.h | 3 +-- > migration/block.c | 17 ++--------------- > migration/colo.c | 5 +++-- > migration/migration.c | 14 +++++++++++--- > migration/savevm.c | 2 -- > 5 files changed, 17 insertions(+), 24 deletions(-) > > diff --git a/include/migration/migration.h b/include/migration/migration.h > index 258e4ff..d228f29 100644 > --- a/include/migration/migration.h > +++ b/include/migration/migration.h > @@ -43,8 +43,7 @@ > extern int only_migratable; > > struct MigrationParams { > - bool blk; > - bool shared; > + bool unused; /* C doesn't allow empty structs */ > }; > > /* Messages sent on the return path from destination to source */ > diff --git a/migration/block.c b/migration/block.c > index 060087f..fcfa823 100644 > --- a/migration/block.c > +++ b/migration/block.c > @@ -94,9 +94,6 @@ typedef struct BlkMigBlock { > } BlkMigBlock; > > typedef struct BlkMigState { > - /* Written during setup phase. Can be read without a lock. */ > - int blk_enable; > - int shared_base; > QSIMPLEQ_HEAD(bmds_list, BlkMigDevState) bmds_list; > int64_t total_sector_sum; > bool zero_blocks; > @@ -425,7 +422,7 @@ static int init_blk_migration(QEMUFile *f) > bmds->bulk_completed = 0; > bmds->total_sectors = sectors; > bmds->completed_sectors = 0; > - bmds->shared_base = block_mig_state.shared_base; > + bmds->shared_base = migrate_use_block_shared(); > > assert(i < num_bs); > bmds_bs[i].bmds = bmds; > @@ -994,22 +991,12 @@ static int block_load(QEMUFile *f, void *opaque, int > version_id) > return 0; > } > > -static void block_set_params(const MigrationParams *params, void *opaque) > -{ > - block_mig_state.blk_enable = params->blk; > - block_mig_state.shared_base = params->shared; > - > - /* shared base means that blk_enable = 1 */ > - block_mig_state.blk_enable |= params->shared; > -} > - > static bool block_is_active(void *opaque) > { > - return block_mig_state.blk_enable == 1; > + return migrate_use_block_enabled(); > } > > static SaveVMHandlers savevm_block_handlers = { > - .set_params = block_set_params, > .save_live_setup = block_save_setup, > .save_live_iterate = block_save_iterate, > .save_live_complete_precopy = block_save_complete, > diff --git a/migration/colo.c b/migration/colo.c > index 963c802..e772384 100644 > --- a/migration/colo.c > +++ b/migration/colo.c > @@ -14,6 +14,7 @@ > #include "qemu/timer.h" > #include "sysemu/sysemu.h" > #include "migration/colo.h" > +#include "migration/block.h" > #include "io/channel-buffer.h" > #include "trace.h" > #include "qemu/error-report.h" > @@ -345,8 +346,8 @@ static int colo_do_checkpoint_transaction(MigrationState > *s, > } > > /* Disable block migration */ > - s->params.blk = 0; > - s->params.shared = 0; > + migrate_set_block_enabled(s, false); > + migrate_set_block_shared(s, false); > qemu_savevm_state_header(fb); > qemu_savevm_state_begin(fb, &s->params); > qemu_mutex_lock_iothread(); > diff --git a/migration/migration.c b/migration/migration.c > index 78102eb..0c32609 100644 > --- a/migration/migration.c > +++ b/migration/migration.c > @@ -788,6 +788,10 @@ void > qmp_migrate_set_capabilities(MigrationCapabilityStatusList *params, > s->enabled_capabilities[cap->value->capability] = cap->value->state; > } > > + if (s->enabled_capabilities[MIGRATION_CAPABILITY_BLOCK_SHARED]) { > + s->enabled_capabilities[MIGRATION_CAPABILITY_BLOCK_ENABLED] = true; > + } > + > if (migrate_postcopy_ram()) { > if (migrate_use_compression()) { > /* The decompression threads asynchronously write into RAM > @@ -1214,11 +1218,17 @@ bool migration_is_blocked(Error **errp) > void migrate_set_block_shared(MigrationState *s, bool value) > { > s->enabled_capabilities[MIGRATION_CAPABILITY_BLOCK_SHARED] = value; > + if (value) { > + s->enabled_capabilities[MIGRATION_CAPABILITY_BLOCK_ENABLED] = true; > + } > } > > void migrate_set_block_enabled(MigrationState *s, bool value) > { > s->enabled_capabilities[MIGRATION_CAPABILITY_BLOCK_ENABLED] = value; > + if (!value) { > + s->enabled_capabilities[MIGRATION_CAPABILITY_BLOCK_SHARED] = false; > + } > } > > void qmp_migrate(const char *uri, bool has_blk, bool blk, > @@ -1230,9 +1240,6 @@ void qmp_migrate(const char *uri, bool has_blk, bool > blk, > MigrationParams params; > const char *p; > > - params.blk = has_blk && blk; > - params.shared = has_inc && inc; > - > if (migration_is_setup_or_active(s->state) || > s->state == MIGRATION_STATUS_CANCELLING || > s->state == MIGRATION_STATUS_COLO) { > @@ -1255,6 +1262,7 @@ void qmp_migrate(const char *uri, bool has_blk, bool > blk, > } > > if (has_inc && inc) { > + migrate_set_block_enabled(s, true);
nit: We don't need this line now? Either with/without above line: Reviewed-by: Peter Xu <pet...@redhat.com> Thanks, > migrate_set_block_shared(s, true); > } > > diff --git a/migration/savevm.c b/migration/savevm.c > index b2fd06f..8aaefe9 100644 > --- a/migration/savevm.c > +++ b/migration/savevm.c > @@ -1233,8 +1233,6 @@ static int qemu_savevm_state(QEMUFile *f, Error **errp) > { > int ret; > MigrationParams params = { > - .blk = 0, > - .shared = 0 > }; > MigrationState *ms = migrate_init(¶ms); > MigrationStatus status; > -- > 2.9.3 > -- Peter Xu