Message ID | 20151109110302.GB2513@work-vm |
---|---|
State | New |
Headers | show |
On Mon, Nov 09, 2015 at 11:03:02AM +0000, Dr. David Alan Gilbert wrote: > <snip> > > Oh, I think I see it; the following is untested, I'll grab a machine to > try it on but it will take a little while: > > diff --git a/migration/ram.c b/migration/ram.c > index 62cf42b..e6db965 100644 > --- a/migration/ram.c > +++ b/migration/ram.c > @@ -2273,6 +2274,7 @@ static int ram_load_postcopy(QEMUFile *f) > /* Temporary page that is later 'placed' */ > void *postcopy_host_page = postcopy_get_tmp_page(mis); > void *last_host = NULL; > + bool all_zero = false; > > while (!ret && !(flags & RAM_SAVE_FLAG_EOS)) { > ram_addr_t addr; > @@ -2280,7 +2282,6 @@ static int ram_load_postcopy(QEMUFile *f) > void *page_buffer = NULL; > void *place_source = NULL; > uint8_t ch; > - bool all_zero = false; > > addr = qemu_get_be64(f); > flags = addr & ~TARGET_PAGE_MASK; So with the above fix on top of the previous one you sent, I am able to do back and forth postcopy migration of pseries guest within the same host while switching to postcopy mode immediately after starting the migration. And btw I can see lots of hits to postcopy_place_page_zero now! Regards, Bharata.
* Bharata B Rao (bharata@linux.vnet.ibm.com) wrote: > On Mon, Nov 09, 2015 at 11:03:02AM +0000, Dr. David Alan Gilbert wrote: > > <snip> > > > > Oh, I think I see it; the following is untested, I'll grab a machine to > > try it on but it will take a little while: > > > > diff --git a/migration/ram.c b/migration/ram.c > > index 62cf42b..e6db965 100644 > > --- a/migration/ram.c > > +++ b/migration/ram.c > > @@ -2273,6 +2274,7 @@ static int ram_load_postcopy(QEMUFile *f) > > /* Temporary page that is later 'placed' */ > > void *postcopy_host_page = postcopy_get_tmp_page(mis); > > void *last_host = NULL; > > + bool all_zero = false; > > > > while (!ret && !(flags & RAM_SAVE_FLAG_EOS)) { > > ram_addr_t addr; > > @@ -2280,7 +2282,6 @@ static int ram_load_postcopy(QEMUFile *f) > > void *page_buffer = NULL; > > void *place_source = NULL; > > uint8_t ch; > > - bool all_zero = false; > > > > addr = qemu_get_be64(f); > > flags = addr & ~TARGET_PAGE_MASK; > > So with the above fix on top of the previous one you sent, I am able to > do back and forth postcopy migration of pseries guest within the > same host while switching to postcopy mode immediately after starting > the migration. > > And btw I can see lots of hits to postcopy_place_page_zero now! Excellent! Thanks for finding that; that misplaced line has been in there for about a year :-) Dave > > Regards, > Bharata. > -- Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
diff --git a/migration/ram.c b/migration/ram.c index 62cf42b..e6db965 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -2273,6 +2274,7 @@ static int ram_load_postcopy(QEMUFile *f) /* Temporary page that is later 'placed' */ void *postcopy_host_page = postcopy_get_tmp_page(mis); void *last_host = NULL; + bool all_zero = false; while (!ret && !(flags & RAM_SAVE_FLAG_EOS)) { ram_addr_t addr; @@ -2280,7 +2282,6 @@ static int ram_load_postcopy(QEMUFile *f) void *page_buffer = NULL; void *place_source = NULL; uint8_t ch; - bool all_zero = false; addr = qemu_get_be64(f); flags = addr & ~TARGET_PAGE_MASK;