@@ -492,7 +492,8 @@ static int tpm_emulator_block_migration(TPMEmulator *tpm_emu)
error_setg(&tpm_emu->migration_blocker,
"Migration disabled: TPM emulator does not support "
"migration");
- if (migrate_add_blocker(&tpm_emu->migration_blocker, &err) < 0) {
+ if (migrate_add_blockers(&tpm_emu->migration_blocker, &err,
+ MIG_MODE_NORMAL, -1) < 0) {
error_report_err(err);
return -1;
}
@@ -878,7 +878,8 @@ static int parallels_open(BlockDriverState *bs, QDict *options, int flags,
error_setg(&s->migration_blocker, "The Parallels format used by node '%s' "
"does not support live migration",
bdrv_get_device_or_node_name(bs));
- ret = migrate_add_blocker(&s->migration_blocker, errp);
+ ret = migrate_add_blockers(&s->migration_blocker, errp, MIG_MODE_NORMAL,
+ -1);
if (ret < 0) {
goto fail;
}
@@ -305,7 +305,8 @@ static int qcow_open(BlockDriverState *bs, QDict *options, int flags,
error_setg(&s->migration_blocker, "The qcow format used by node '%s' "
"does not support live migration",
bdrv_get_device_or_node_name(bs));
- ret = migrate_add_blocker(&s->migration_blocker, errp);
+ ret = migrate_add_blockers(&s->migration_blocker, errp, MIG_MODE_NORMAL,
+ -1);
if (ret < 0) {
goto fail;
}
@@ -495,7 +495,8 @@ static int vdi_open(BlockDriverState *bs, QDict *options, int flags,
error_setg(&s->migration_blocker, "The vdi format used by node '%s' "
"does not support live migration",
bdrv_get_device_or_node_name(bs));
- ret = migrate_add_blocker(&s->migration_blocker, errp);
+ ret = migrate_add_blockers(&s->migration_blocker, errp, MIG_MODE_NORMAL,
+ -1);
if (ret < 0) {
goto fail_free_bmap;
}
@@ -1093,7 +1093,8 @@ static int vhdx_open(BlockDriverState *bs, QDict *options, int flags,
error_setg(&s->migration_blocker, "The vhdx format used by node '%s' "
"does not support live migration",
bdrv_get_device_or_node_name(bs));
- ret = migrate_add_blocker(&s->migration_blocker, errp);
+ ret = migrate_add_blockers(&s->migration_blocker, errp, MIG_MODE_NORMAL,
+ -1);
if (ret < 0) {
goto fail;
}
@@ -1360,7 +1360,8 @@ static int vmdk_open(BlockDriverState *bs, QDict *options, int flags,
error_setg(&s->migration_blocker, "The vmdk format used by node '%s' "
"does not support live migration",
bdrv_get_device_or_node_name(bs));
- ret = migrate_add_blocker(&s->migration_blocker, errp);
+ ret = migrate_add_blockers(&s->migration_blocker, errp, MIG_MODE_NORMAL,
+ -1);
if (ret < 0) {
goto fail;
}
@@ -450,7 +450,8 @@ static int vpc_open(BlockDriverState *bs, QDict *options, int flags,
error_setg(&s->migration_blocker, "The vpc format used by node '%s' "
"does not support live migration",
bdrv_get_device_or_node_name(bs));
- ret = migrate_add_blocker(&s->migration_blocker, errp);
+ ret = migrate_add_blockers(&s->migration_blocker, errp, MIG_MODE_NORMAL,
+ -1);
if (ret < 0) {
goto fail;
}
@@ -1265,7 +1265,8 @@ static int vvfat_open(BlockDriverState *bs, QDict *options, int flags,
"The vvfat (rw) format used by node '%s' "
"does not support live migration",
bdrv_get_device_or_node_name(bs));
- ret = migrate_add_blocker(&s->migration_blocker, errp);
+ ret = migrate_add_blockers(&s->migration_blocker, errp, MIG_MODE_NORMAL,
+ -1);
if (ret < 0) {
goto fail;
}
@@ -1487,7 +1487,8 @@ static void coroutine_fn v9fs_attach(void *opaque)
error_setg(&s->migration_blocker,
"Migration is disabled when VirtFS export path '%s' is mounted in the guest using mount_tag '%s'",
s->ctx.fs_root ? s->ctx.fs_root : "NULL", s->tag);
- err = migrate_add_blocker(&s->migration_blocker, NULL);
+ err = migrate_add_blockers(&s->migration_blocker, NULL, MIG_MODE_NORMAL,
+ -1);
if (err < 0) {
clunk_fid(s, fid);
goto out;
@@ -208,7 +208,8 @@ static void vhost_scsi_realize(DeviceState *dev, Error **errp)
"When external environment supports it (Orchestrator migrates "
"target SCSI device state or use shared storage over network), "
"set 'migratable' property to true to enable migration.");
- if (migrate_add_blocker(&vsc->migration_blocker, errp) < 0) {
+ if (migrate_add_blockers(&vsc->migration_blocker, errp, MIG_MODE_NORMAL,
+ -1) < 0) {
goto free_virtio;
}
}
@@ -1431,7 +1431,8 @@ int vhost_dev_init(struct vhost_dev *hdev, void *opaque,
}
if (hdev->migration_blocker != NULL) {
- r = migrate_add_blocker(&hdev->migration_blocker, errp);
+ r = migrate_add_blockers(&hdev->migration_blocker, errp,
+ MIG_MODE_NORMAL, -1);
if (r < 0) {
goto fail_busyloop;
}
@@ -935,7 +935,8 @@ nvmm_init_vcpu(CPUState *cpu)
error_setg(&nvmm_migration_blocker,
"NVMM: Migration not supported");
- if (migrate_add_blocker(&nvmm_migration_blocker, &local_error) < 0) {
+ if (migrate_add_blockers(&nvmm_migration_blocker, &local_error,
+ MIG_MODE_NORMAL, -1) < 0) {
error_report_err(local_error);
return -EINVAL;
}
Some devices block migration because they rely on local state that is not migrated to the target host, such as for local filesystems. These need not block cpr, which will restart qemu on the same host. Narrow the scope of these blockers so they only apply to normal mode. They will not block cpr modes when they are added in subsequent patches. No functional change until a new mode is added. Signed-off-by: Steve Sistare <steven.sistare@oracle.com> --- backends/tpm/tpm_emulator.c | 3 ++- block/parallels.c | 3 ++- block/qcow.c | 3 ++- block/vdi.c | 3 ++- block/vhdx.c | 3 ++- block/vmdk.c | 3 ++- block/vpc.c | 3 ++- block/vvfat.c | 3 ++- hw/9pfs/9p.c | 3 ++- hw/scsi/vhost-scsi.c | 3 ++- hw/virtio/vhost.c | 3 ++- target/i386/nvmm/nvmm-all.c | 3 ++- 12 files changed, 24 insertions(+), 12 deletions(-)