* Juan Quintela (quint...@redhat.com) wrote: > 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 <quint...@redhat.com> > --- > include/migration/migration.h | 2 -- > migration/migration.c | 1 - > migration/ram.c | 6 ++++-- > 3 files changed, 4 insertions(+), 5 deletions(-) > > diff --git a/include/migration/migration.h b/include/migration/migration.h > index 84cef4b..e032fb0 100644 > --- a/include/migration/migration.h > +++ b/include/migration/migration.h > @@ -189,8 +189,6 @@ struct MigrationState > /* Queue of outstanding page requests from the destination */ > QemuMutex src_page_req_mutex; > QSIMPLEQ_HEAD(src_page_requests, MigrationSrcPageRequest) > src_page_requests; > - /* The RAMBlock used in the last src_page_request */ > - RAMBlock *last_req_rb;
Should this be kept together with src_page_req_mutex and src_page_requests? Dave > /* The semaphore is used to notify COLO thread that failover is finished > */ > QemuSemaphore colo_exit_sem; > > diff --git a/migration/migration.c b/migration/migration.c > index 46645b6..4f19382 100644 > --- a/migration/migration.c > +++ b/migration/migration.c > @@ -1114,7 +1114,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 e7db39c..50ca1da 100644 > --- a/migration/ram.c > +++ b/migration/ram.c > @@ -197,6 +197,8 @@ struct RAMState { > QemuMutex bitmap_mutex; > /* Ram Bitmap protected by RCU */ > RAMBitmap *ram_bitmap; > + /* The RAMBlock used in the last src_page_request */ > + RAMBlock *last_req_rb; > }; > typedef struct RAMState RAMState; > > @@ -1190,7 +1192,7 @@ int ram_save_queue_pages(MigrationState *ms, const char > *rbname, > rcu_read_lock(); > if (!rbname) { > /* Reuse last RAMBlock */ > - ramblock = ms->last_req_rb; > + ramblock = ram_state.last_req_rb; > > if (!ramblock) { > /* > @@ -1208,7 +1210,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; > + ram_state.last_req_rb = ramblock; > } > trace_ram_save_queue_pages(ramblock->idstr, start, len); > if (start+len > ramblock->used_length) { > -- > 2.9.3 > -- Dr. David Alan Gilbert / dgilb...@redhat.com / Manchester, UK