Peter Xu <pet...@redhat.com> wrote: > 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?
I will let this one for dave. > >> - 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