* Alexey Perevalov (a.pereva...@samsung.com) wrote: > Need to mark copied pages as closer as possible to the place where it > tracks down. That will be necessary in futher patch. > > Reviewed-by: Juan Quintela <quint...@redhat.com> > Signed-off-by: Alexey Perevalov <a.pereva...@samsung.com>
Reviewed-by: Dr. David Alan Gilbert <dgilb...@redhat.com> > --- > migration/postcopy-ram.c | 13 ++++++++----- > migration/postcopy-ram.h | 4 ++-- > migration/ram.c | 4 ++-- > 3 files changed, 12 insertions(+), 9 deletions(-) > > diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c > index c8c4500..743ca6c 100644 > --- a/migration/postcopy-ram.c > +++ b/migration/postcopy-ram.c > @@ -566,9 +566,10 @@ int postcopy_ram_enable_notify(MigrationIncomingState > *mis) > * returns 0 on success > */ > int postcopy_place_page(MigrationIncomingState *mis, void *host, void *from, > - size_t pagesize) > + RAMBlock *rb) > { > struct uffdio_copy copy_struct; > + size_t pagesize = qemu_ram_pagesize(rb); > > copy_struct.dst = (uint64_t)(uintptr_t)host; > copy_struct.src = (uint64_t)(uintptr_t)from; > @@ -597,10 +598,12 @@ int postcopy_place_page(MigrationIncomingState *mis, > void *host, void *from, > * returns 0 on success > */ > int postcopy_place_page_zero(MigrationIncomingState *mis, void *host, > - size_t pagesize) > + RAMBlock *rb) > { > + size_t pagesize; > trace_postcopy_place_page_zero(host); > > + pagesize = qemu_ram_pagesize(rb); > if (pagesize == getpagesize()) { > struct uffdio_zeropage zero_struct; > zero_struct.range.start = (uint64_t)(uintptr_t)host; > @@ -631,7 +634,7 @@ int postcopy_place_page_zero(MigrationIncomingState *mis, > void *host, > memset(mis->postcopy_tmp_zero_page, '\0', > mis->largest_page_size); > } > return postcopy_place_page(mis, host, mis->postcopy_tmp_zero_page, > - pagesize); > + rb); > } > > return 0; > @@ -694,14 +697,14 @@ int postcopy_ram_enable_notify(MigrationIncomingState > *mis) > } > > int postcopy_place_page(MigrationIncomingState *mis, void *host, void *from, > - size_t pagesize) > + RAMBlock *rb) > { > assert(0); > return -1; > } > > int postcopy_place_page_zero(MigrationIncomingState *mis, void *host, > - size_t pagesize) > + RAMBlock *rb) > { > assert(0); > return -1; > diff --git a/migration/postcopy-ram.h b/migration/postcopy-ram.h > index 52d51e8..78a3591 100644 > --- a/migration/postcopy-ram.h > +++ b/migration/postcopy-ram.h > @@ -72,14 +72,14 @@ void postcopy_discard_send_finish(MigrationState *ms, > * returns 0 on success > */ > int postcopy_place_page(MigrationIncomingState *mis, void *host, void *from, > - size_t pagesize); > + RAMBlock *rb); > > /* > * Place a zero page at (host) atomically > * returns 0 on success > */ > int postcopy_place_page_zero(MigrationIncomingState *mis, void *host, > - size_t pagesize); > + RAMBlock *rb); > > /* The current postcopy state is read/set by postcopy_state_get/set > * which update it atomically. > diff --git a/migration/ram.c b/migration/ram.c > index 8dbdfdb..f50479d 100644 > --- a/migration/ram.c > +++ b/migration/ram.c > @@ -2465,10 +2465,10 @@ static int ram_load_postcopy(QEMUFile *f) > > if (all_zero) { > ret = postcopy_place_page_zero(mis, place_dest, > - block->page_size); > + block); > } else { > ret = postcopy_place_page(mis, place_dest, > - place_source, block->page_size); > + place_source, block); > } > } > if (!ret) { > -- > 1.9.1 > -- Dr. David Alan Gilbert / dgilb...@redhat.com / Manchester, UK