[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4 12/14] libxc/save: reuse send_dirty_pages() in send_all_pages()
On 12/05/15 12:25, Yang Hongyang wrote: > introduce bitmap_set() to set the entire bitmap. > in send_all_pages(), set the entire bitmap and call send_dirty_pages(). > > Signed-off-by: Yang Hongyang <yanghy@xxxxxxxxxxxxxx> > Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> > CC: Ian Campbell <Ian.Campbell@xxxxxxxxxx> > CC: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx> > CC: Wei Liu <wei.liu2@xxxxxxxxxx> > --- > tools/libxc/xc_bitops.h | 5 +++++ > tools/libxc/xc_sr_save.c | 44 ++++++++++++++------------------------------ > 2 files changed, 19 insertions(+), 30 deletions(-) > > diff --git a/tools/libxc/xc_bitops.h b/tools/libxc/xc_bitops.h > index dfce3b8..cd749f4 100644 > --- a/tools/libxc/xc_bitops.h > +++ b/tools/libxc/xc_bitops.h > @@ -26,6 +26,11 @@ static inline unsigned long *bitmap_alloc(int nr_bits) > return calloc(1, bitmap_size(nr_bits)); > } > > +static inline void bitmap_set(unsigned long *addr, int nr_bits) > +{ > + memset(addr, 0xff, bitmap_size(nr_bits)); > +} > + > static inline void bitmap_clear(unsigned long *addr, int nr_bits) > { > memset(addr, 0, bitmap_size(nr_bits)); > diff --git a/tools/libxc/xc_sr_save.c b/tools/libxc/xc_sr_save.c > index 8273a9b..0007085 100644 > --- a/tools/libxc/xc_sr_save.c > +++ b/tools/libxc/xc_sr_save.c > @@ -344,36 +344,6 @@ static int suspend_domain(struct xc_sr_context *ctx) > } > > /* > - * Send all pages in the guests p2m. Used as the first iteration of the live > - * migration loop, and for a non-live save. > - */ > -static int send_all_pages(struct xc_sr_context *ctx) > -{ > - xc_interface *xch = ctx->xch; > - xen_pfn_t p; > - int rc; > - > - for ( p = 0; p < ctx->save.p2m_size; ++p ) > - { > - rc = add_to_batch(ctx, p); > - if ( rc ) > - return rc; > - > - /* Update progress every 4MB worth of memory sent. */ > - if ( (p & ((1U << (22 - 12)) - 1)) == 0 ) > - xc_report_progress_step(xch, p, ctx->save.p2m_size); > - } > - > - rc = flush_batch(ctx); > - if ( rc ) > - return rc; > - > - xc_report_progress_step(xch, ctx->save.p2m_size, > - ctx->save.p2m_size); > - return 0; > -} > - > -/* > * Send a subset of pages in the guests p2m, according to the dirty bitmap. > * Used for each subsequent iteration of the live migration loop. > * > @@ -416,6 +386,20 @@ static int send_dirty_pages(struct xc_sr_context *ctx, > return 0; > } > > +/* > + * Send all pages in the guests p2m. Used as the first iteration of the live > + * migration loop, and for a non-live save. > + */ > +static int send_all_pages(struct xc_sr_context *ctx) > +{ > + DECLARE_HYPERCALL_BUFFER_SHADOW(unsigned long, dirty_bitmap, > + (&ctx->save.dirty_bitmap_hbuf)); Can drop this bracketing as well. > + > + bitmap_set(dirty_bitmap, ctx->save.p2m_size); > + > + return send_dirty_pages(ctx, ctx->save.p2m_size); > +} > + > static int enable_logdirty(struct xc_sr_context *ctx) > { > xc_interface *xch = ctx->xch; _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |