Message ID | 20191018004850.9888-2-richardw.yang@linux.intel.com |
---|---|
State | New |
Headers | show |
Series | migration/postcopy: enable compress during postcopy | expand |
* Wei Yang (richardw.yang@linux.intel.com) wrote: > In this case, page_buffer content would not be used. > > Skip this to save some time. > > Signed-off-by: Wei Yang <richardw.yang@linux.intel.com> > --- > migration/ram.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/migration/ram.c b/migration/ram.c > index 99a98b2da4..7938a643d9 100644 > --- a/migration/ram.c > +++ b/migration/ram.c > @@ -4091,7 +4091,13 @@ static int ram_load_postcopy(QEMUFile *f) > switch (flags & ~RAM_SAVE_FLAG_CONTINUE) { > case RAM_SAVE_FLAG_ZERO: > ch = qemu_get_byte(f); > - memset(page_buffer, ch, TARGET_PAGE_SIZE); > + /* > + * Can skip to set page_buffer when > + * this is a zero page and (block->page_size == TARGET_PAGE_SIZE). > + */ When it's zero we will use place_page_zero which doesn't need to page_buffer; so yes that's OK; and you're right, the gotcha is with mismatched page sizes where one subpage might be zero but not all of them; so yes it's right that we need that check. SO yes, Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> > + if (ch || !matches_target_page_size) { > + memset(page_buffer, ch, TARGET_PAGE_SIZE); > + } > if (ch) { > all_zero = false; > } > -- > 2.17.1 > -- Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
diff --git a/migration/ram.c b/migration/ram.c index 99a98b2da4..7938a643d9 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -4091,7 +4091,13 @@ static int ram_load_postcopy(QEMUFile *f) switch (flags & ~RAM_SAVE_FLAG_CONTINUE) { case RAM_SAVE_FLAG_ZERO: ch = qemu_get_byte(f); - memset(page_buffer, ch, TARGET_PAGE_SIZE); + /* + * Can skip to set page_buffer when + * this is a zero page and (block->page_size == TARGET_PAGE_SIZE). + */ + if (ch || !matches_target_page_size) { + memset(page_buffer, ch, TARGET_PAGE_SIZE); + } if (ch) { all_zero = false; }
In this case, page_buffer content would not be used. Skip this to save some time. Signed-off-by: Wei Yang <richardw.yang@linux.intel.com> --- migration/ram.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)