mirror of https://gitee.com/openkylin/qemu.git
migration: Remove use of old MigrationParams
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. For savevm, one can't do a: savevm -b/-i foo but now one can do: migrate_set_capability block on savevm foo And we can't use block migration. We could disable block capability unconditionally, but it would not be much better. Signed-off-by: Juan Quintela <quintela@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> --- - Maintain shared/enabled dependency (Xu suggestion) - Now we maintain the dependency on the setter functions - improve error messages
This commit is contained in:
parent
2833c59b94
commit
ce7c817c85
|
@ -39,8 +39,7 @@
|
|||
#define QEMU_VM_SECTION_FOOTER 0x7e
|
||||
|
||||
struct MigrationParams {
|
||||
bool blk;
|
||||
bool shared;
|
||||
bool unused; /* C doesn't allow empty structs */
|
||||
};
|
||||
|
||||
/* Messages sent on the return path from destination to source */
|
||||
|
|
|
@ -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_incremental();
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
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,
|
||||
|
|
|
@ -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,7 @@ static int colo_do_checkpoint_transaction(MigrationState *s,
|
|||
}
|
||||
|
||||
/* Disable block migration */
|
||||
s->params.blk = 0;
|
||||
s->params.shared = 0;
|
||||
migrate_set_block_enabled(false, &local_err);
|
||||
qemu_savevm_state_header(fb);
|
||||
qemu_savevm_state_begin(fb, &s->params);
|
||||
qemu_mutex_lock_iothread();
|
||||
|
|
|
@ -1224,9 +1224,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) {
|
||||
|
|
|
@ -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;
|
||||
|
@ -1245,6 +1243,12 @@ static int qemu_savevm_state(QEMUFile *f, Error **errp)
|
|||
goto done;
|
||||
}
|
||||
|
||||
if (migrate_use_block()) {
|
||||
error_setg(errp, "Block migration and snapshots are incompatible");
|
||||
ret = -EINVAL;
|
||||
goto done;
|
||||
}
|
||||
|
||||
qemu_mutex_unlock_iothread();
|
||||
qemu_savevm_state_header(f);
|
||||
qemu_savevm_state_begin(f, ¶ms);
|
||||
|
|
Loading…
Reference in New Issue