diff options
author | Juan Quintela <quintela@redhat.com> | 2017-03-14 13:48:42 +0100 |
---|---|---|
committer | Juan Quintela <quintela@redhat.com> | 2017-04-21 12:25:37 +0200 |
commit | 68a098f38652ad7f4883de7beeba0c3dae9b2a0b (patch) | |
tree | 450b35265c9380f7d047c5bccb79b9fcb75a3daf /migration | |
parent | 9edabd4de6babf36f110c99a05b1558834535ec8 (diff) | |
download | qemu-68a098f38652ad7f4883de7beeba0c3dae9b2a0b.zip qemu-68a098f38652ad7f4883de7beeba0c3dae9b2a0b.tar.gz qemu-68a098f38652ad7f4883de7beeba0c3dae9b2a0b.tar.bz2 |
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>
Diffstat (limited to 'migration')
-rw-r--r-- | migration/migration.c | 1 | ||||
-rw-r--r-- | migration/ram.c | 7 |
2 files changed, 5 insertions, 3 deletions
diff --git a/migration/migration.c b/migration/migration.c index 7f7bab9..c1730a0 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -1126,7 +1126,6 @@ MigrationState *migrate_init(const MigrationParams *params) s->postcopy_after_devices = false; s->postcopy_requests = 0; s->migration_thread_running = false; - s->last_req_rb = NULL; error_free(s->error); s->error = NULL; diff --git a/migration/ram.c b/migration/ram.c index 2f5cbd1..cec51b4 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -204,6 +204,8 @@ struct RAMState { QemuMutex bitmap_mutex; /* Ram Bitmap protected by RCU */ RAMBitmap *ram_bitmap; + /* The RAMBlock used in the last src_page_requests */ + RAMBlock *last_req_rb; }; 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) { RAMBlock *ramblock; + RAMState *rs = &ram_state; ms->postcopy_requests++; rcu_read_lock(); if (!rbname) { /* Reuse last RAMBlock */ - ramblock = ms->last_req_rb; + ramblock = rs->last_req_rb; 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); goto err; } - ms->last_req_rb = ramblock; + rs->last_req_rb = ramblock; } trace_ram_save_queue_pages(ramblock->idstr, start, len); if (start+len > ramblock->used_length) { |