ram: Move last_req_rb to RAMState
It was on MigrationState when it is only used inside ram.c for postcopy. Problem is that we need to access it without being able to pass it RAMState directly. Signed-off-by: Juan Quintela <quintela@redhat.com> Reviewed-by: Peter Xu <peterx@redhat.com>
This commit is contained in:
parent
9edabd4de6
commit
68a098f386
|
@ -189,8 +189,6 @@ struct MigrationState
|
||||||
/* Queue of outstanding page requests from the destination */
|
/* Queue of outstanding page requests from the destination */
|
||||||
QemuMutex src_page_req_mutex;
|
QemuMutex src_page_req_mutex;
|
||||||
QSIMPLEQ_HEAD(src_page_requests, MigrationSrcPageRequest) src_page_requests;
|
QSIMPLEQ_HEAD(src_page_requests, MigrationSrcPageRequest) src_page_requests;
|
||||||
/* The RAMBlock used in the last src_page_request */
|
|
||||||
RAMBlock *last_req_rb;
|
|
||||||
/* The semaphore is used to notify COLO thread that failover is finished */
|
/* The semaphore is used to notify COLO thread that failover is finished */
|
||||||
QemuSemaphore colo_exit_sem;
|
QemuSemaphore colo_exit_sem;
|
||||||
|
|
||||||
|
|
|
@ -1126,7 +1126,6 @@ MigrationState *migrate_init(const MigrationParams *params)
|
||||||
s->postcopy_after_devices = false;
|
s->postcopy_after_devices = false;
|
||||||
s->postcopy_requests = 0;
|
s->postcopy_requests = 0;
|
||||||
s->migration_thread_running = false;
|
s->migration_thread_running = false;
|
||||||
s->last_req_rb = NULL;
|
|
||||||
error_free(s->error);
|
error_free(s->error);
|
||||||
s->error = NULL;
|
s->error = NULL;
|
||||||
|
|
||||||
|
|
|
@ -204,6 +204,8 @@ struct RAMState {
|
||||||
QemuMutex bitmap_mutex;
|
QemuMutex bitmap_mutex;
|
||||||
/* Ram Bitmap protected by RCU */
|
/* Ram Bitmap protected by RCU */
|
||||||
RAMBitmap *ram_bitmap;
|
RAMBitmap *ram_bitmap;
|
||||||
|
/* The RAMBlock used in the last src_page_requests */
|
||||||
|
RAMBlock *last_req_rb;
|
||||||
};
|
};
|
||||||
typedef struct RAMState RAMState;
|
typedef struct RAMState RAMState;
|
||||||
|
|
||||||
|
@ -1226,12 +1228,13 @@ int ram_save_queue_pages(MigrationState *ms, const char *rbname,
|
||||||
ram_addr_t start, ram_addr_t len)
|
ram_addr_t start, ram_addr_t len)
|
||||||
{
|
{
|
||||||
RAMBlock *ramblock;
|
RAMBlock *ramblock;
|
||||||
|
RAMState *rs = &ram_state;
|
||||||
|
|
||||||
ms->postcopy_requests++;
|
ms->postcopy_requests++;
|
||||||
rcu_read_lock();
|
rcu_read_lock();
|
||||||
if (!rbname) {
|
if (!rbname) {
|
||||||
/* Reuse last RAMBlock */
|
/* Reuse last RAMBlock */
|
||||||
ramblock = ms->last_req_rb;
|
ramblock = rs->last_req_rb;
|
||||||
|
|
||||||
if (!ramblock) {
|
if (!ramblock) {
|
||||||
/*
|
/*
|
||||||
|
@ -1249,7 +1252,7 @@ int ram_save_queue_pages(MigrationState *ms, const char *rbname,
|
||||||
error_report("ram_save_queue_pages no block '%s'", rbname);
|
error_report("ram_save_queue_pages no block '%s'", rbname);
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
ms->last_req_rb = ramblock;
|
rs->last_req_rb = ramblock;
|
||||||
}
|
}
|
||||||
trace_ram_save_queue_pages(ramblock->idstr, start, len);
|
trace_ram_save_queue_pages(ramblock->idstr, start, len);
|
||||||
if (start+len > ramblock->used_length) {
|
if (start+len > ramblock->used_length) {
|
||||||
|
|
Loading…
Reference in a new issue