#include "hw/boards.h"
#include "hw/sysbus.h"
#include "qapi-event.h"
-#include "migration/migration.h"
+#include "migration/vmstate.h"
bool qdev_hotplug = false;
static bool qdev_hot_added = false;
return dev->realized;
}
+static bool check_only_migratable(Object *obj, Error **err)
+{
+ DeviceClass *dc = DEVICE_GET_CLASS(obj);
+
+ if (!vmstate_check_only_migratable(dc->vmsd)) {
+ error_setg(err, "Device %s is not migratable, but "
+ "--only-migratable was specified",
+ object_get_typename(obj));
+ return false;
+ }
+
+ return true;
+}
+
static void device_set_realized(Object *obj, bool value, Error **errp)
{
DeviceState *dev = DEVICE(obj);
Error *local_err = NULL;
bool unattached_parent = false;
static int unattached_count;
- int ret;
if (dev->hotplugged && !dc->hotpluggable) {
error_setg(errp, QERR_DEVICE_NO_HOTPLUG, object_get_typename(obj));
}
if (value && !dev->realized) {
- ret = check_migratable(obj, &local_err);
- if (ret < 0) {
+ if (!check_only_migratable(obj, &local_err)) {
goto fail;
}
#include "qapi-types.h"
#include "exec/cpu-common.h"
#include "qemu/coroutine_int.h"
-#include "qom/object.h"
#define QEMU_VM_FILE_MAGIC 0x5145564d
#define QEMU_VM_FILE_VERSION_COMPAT 0x00000002
#define QEMU_VM_COMMAND 0x08
#define QEMU_VM_SECTION_FOOTER 0x7e
-/* for vl.c */
-extern int only_migratable;
-
struct MigrationParams {
bool blk;
bool shared;
int ram_postcopy_incoming_init(MigrationIncomingState *mis);
void ram_postcopy_migrated_memory_release(MigrationState *ms);
-int check_migratable(Object *obj, Error **err);
-
bool migrate_release_ram(void);
bool migrate_postcopy_ram(void);
bool migrate_zero_blocks(void);
void dump_vmstate_json_to_file(FILE *out_fp);
+bool vmstate_check_only_migratable(const VMStateDescription *vmsd);
+
#endif
/* vl.c */
extern const char *bios_name;
-
+extern int only_migratable;
extern const char *qemu_name;
extern QemuUUID qemu_uuid;
extern bool qemu_uuid_set;
migration_blockers = g_slist_remove(migration_blockers, reason);
}
-int check_migratable(Object *obj, Error **err)
-{
- DeviceClass *dc = DEVICE_GET_CLASS(obj);
- if (only_migratable && dc->vmsd) {
- if (dc->vmsd->unmigratable) {
- error_setg(err, "Device %s is not migratable, but "
- "--only-migratable was specified",
- object_get_typename(obj));
- return -1;
- }
- }
-
- return 0;
-}
-
void qmp_migrate_incoming(const char *uri, Error **errp)
{
Error *local_err = NULL;
{
vmstate_register_ram(mr, NULL);
}
+
+bool vmstate_check_only_migratable(const VMStateDescription *vmsd)
+{
+ /* check needed if --only-migratable is specified */
+ if (!only_migratable) {
+ return true;
+ }
+
+ return !(vmsd && vmsd->unmigratable);
+}
#include "qemu/osdep.h"
#include "qemu-common.h"
#include "migration/vmstate.h"
-#include "migration/migration.h"
const VMStateDescription vmstate_dummy = {};
{
}
-int check_migratable(Object *obj, Error **err)
+bool vmstate_check_only_migratable(const VMStateDescription *vmsd)
{
- return 0;
+ return true;
}