[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 05/18] migration: Remove use of old MigrationParams
From: |
Juan Quintela |
Subject: |
[Qemu-devel] [PULL 05/18] migration: Remove use of old MigrationParams |
Date: |
Thu, 18 May 2017 19:24:49 +0200 |
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 <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
---
- Maintain shared/enabled dependency (Xu suggestion)
- Now we maintain the dependency on the setter functions
- improve error messages
---
include/migration/migration.h | 3 +--
migration/block.c | 17 ++---------------
migration/colo.c | 4 ++--
migration/migration.c | 3 ---
migration/savevm.c | 8 ++++++--
5 files changed, 11 insertions(+), 24 deletions(-)
diff --git a/include/migration/migration.h b/include/migration/migration.h
index 024a048..4dedc66 100644
--- a/include/migration/migration.h
+++ b/include/migration/migration.h
@@ -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 */
diff --git a/migration/block.c b/migration/block.c
index 060087f..5d22926 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_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,
diff --git a/migration/colo.c b/migration/colo.c
index 963c802..8c86892 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,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();
diff --git a/migration/migration.c b/migration/migration.c
index c13c0a2..b3d300d 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -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) {
diff --git a/migration/savevm.c b/migration/savevm.c
index f5e8194..2f1f4eb 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;
@@ -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);
--
2.9.3
- [Qemu-devel] [PULL 00/18] Migration pull request, Juan Quintela, 2017/05/18
- [Qemu-devel] [PULL 01/18] migration: Fix non-multiple of page size migration, Juan Quintela, 2017/05/18
- [Qemu-devel] [PULL 02/18] postcopy: Require RAMBlocks that are whole pages, Juan Quintela, 2017/05/18
- [Qemu-devel] [PULL 03/18] hmp: Use visitor api for hmp_migrate_set_parameter(), Juan Quintela, 2017/05/18
- [Qemu-devel] [PULL 04/18] migration: Create block capability, Juan Quintela, 2017/05/18
- [Qemu-devel] [PULL 05/18] migration: Remove use of old MigrationParams,
Juan Quintela <=
- [Qemu-devel] [PULL 06/18] migration: Remove old MigrationParams, Juan Quintela, 2017/05/18
- [Qemu-devel] [PULL 07/18] block migration: Allow compile time disable, Juan Quintela, 2017/05/18
- [Qemu-devel] [PULL 08/18] migration: Create migration/xbzrle.h, Juan Quintela, 2017/05/18
- [Qemu-devel] [PULL 09/18] migration: Split migration/channel.c for channel operations, Juan Quintela, 2017/05/18
- Re: [Qemu-devel] [PULL 00/18] Migration pull request, Stefan Hajnoczi, 2017/05/19