On Thu, Mar 23, 2017 at 09:45:23PM +0100, Juan Quintela wrote: > This are the last postcopy fields still at MigrationState. Once there
s/This/These/ > Move MigrationSrcPageRequest to ram.c and remove MigrationState > parameters where appropiate. > > Signed-off-by: Juan Quintela <quint...@redhat.com> Reviewed-by: Peter Xu <pet...@redhat.com> One question below though... [...] > @@ -1191,19 +1204,18 @@ static bool get_queued_page(RAMState *rs, > MigrationState *ms, > * > * It should be empty at the end anyway, but in error cases there may > * xbe some left. > - * > - * @ms: current migration state > */ > -void flush_page_queue(MigrationState *ms) > +void flush_page_queue(void) > { > - struct MigrationSrcPageRequest *mspr, *next_mspr; > + struct RAMSrcPageRequest *mspr, *next_mspr; > + RAMState *rs = &ram_state; > /* This queue generally should be empty - but in the case of a failed > * migration might have some droppings in. > */ > rcu_read_lock(); Could I ask why we are taking the RCU read lock rather than the mutex here? > - QSIMPLEQ_FOREACH_SAFE(mspr, &ms->src_page_requests, next_req, next_mspr) > { > + QSIMPLEQ_FOREACH_SAFE(mspr, &rs->src_page_requests, next_req, next_mspr) > { > memory_region_unref(mspr->rb->mr); > - QSIMPLEQ_REMOVE_HEAD(&ms->src_page_requests, next_req); > + QSIMPLEQ_REMOVE_HEAD(&rs->src_page_requests, next_req); > g_free(mspr); > } > rcu_read_unlock(); Thanks, -- peterx