migration/colo: Use ram_block_discard_disable()
COLO will copy all memory in a RAM block, disable discarding of RAM. Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Tested-by: Lukas Straub <lukasstraub2@web.de> Cc: "Michael S. Tsirkin" <mst@redhat.com> Cc: Hailiang Zhang <zhang.zhanghailiang@huawei.com> Cc: Juan Quintela <quintela@redhat.com> Cc: "Dr. David Alan Gilbert" <dgilbert@redhat.com> Signed-off-by: David Hildenbrand <david@redhat.com> Message-Id: <20200626072248.78761-10-david@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
5f1f1902f8
commit
18b1d3c952
@ -25,7 +25,7 @@ void migrate_start_colo_process(MigrationState *s);
|
|||||||
bool migration_in_colo_state(void);
|
bool migration_in_colo_state(void);
|
||||||
|
|
||||||
/* loadvm */
|
/* loadvm */
|
||||||
void migration_incoming_enable_colo(void);
|
int migration_incoming_enable_colo(void);
|
||||||
void migration_incoming_disable_colo(void);
|
void migration_incoming_disable_colo(void);
|
||||||
bool migration_incoming_colo_enabled(void);
|
bool migration_incoming_colo_enabled(void);
|
||||||
void *colo_process_incoming_thread(void *opaque);
|
void *colo_process_incoming_thread(void *opaque);
|
||||||
|
@ -338,12 +338,18 @@ bool migration_incoming_colo_enabled(void)
|
|||||||
|
|
||||||
void migration_incoming_disable_colo(void)
|
void migration_incoming_disable_colo(void)
|
||||||
{
|
{
|
||||||
|
ram_block_discard_disable(false);
|
||||||
migration_colo_enabled = false;
|
migration_colo_enabled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void migration_incoming_enable_colo(void)
|
int migration_incoming_enable_colo(void)
|
||||||
{
|
{
|
||||||
|
if (ram_block_discard_disable(true)) {
|
||||||
|
error_report("COLO: cannot disable RAM discard");
|
||||||
|
return -EBUSY;
|
||||||
|
}
|
||||||
migration_colo_enabled = true;
|
migration_colo_enabled = true;
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void migrate_add_address(SocketAddress *address)
|
void migrate_add_address(SocketAddress *address)
|
||||||
|
@ -2111,8 +2111,15 @@ static int loadvm_handle_recv_bitmap(MigrationIncomingState *mis,
|
|||||||
|
|
||||||
static int loadvm_process_enable_colo(MigrationIncomingState *mis)
|
static int loadvm_process_enable_colo(MigrationIncomingState *mis)
|
||||||
{
|
{
|
||||||
migration_incoming_enable_colo();
|
int ret = migration_incoming_enable_colo();
|
||||||
return colo_init_ram_cache();
|
|
||||||
|
if (!ret) {
|
||||||
|
ret = colo_init_ram_cache();
|
||||||
|
if (ret) {
|
||||||
|
migration_incoming_disable_colo();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user