All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yang Hongyang <yanghy@cn.fujitsu.com>
To: xen-devel@lists.xen.org
Cc: wei.liu2@citrix.com, ian.campbell@citrix.com,
	wency@cn.fujitsu.com, andrew.cooper3@citrix.com,
	yunhong.jiang@intel.com, eddie.dong@intel.com,
	rshriram@cs.ubc.ca, ian.jackson@eu.citrix.com
Subject: [PATCH Remus v2 05/10] tools/libxc: reuse send_dirty_pages() in send_all_pages()
Date: Fri, 8 May 2015 17:33:25 +0800	[thread overview]
Message-ID: <1431077610-3366-6-git-send-email-yanghy@cn.fujitsu.com> (raw)
In-Reply-To: <1431077610-3366-1-git-send-email-yanghy@cn.fujitsu.com>

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@cn.fujitsu.com>
---
 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 9ca4336..7efffe6 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 provided bitmap.
  * Used for each subsequent iteration of the live migration loop.
  *
@@ -415,6 +385,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_USER_POINTER(unsigned long, dirty_bitmap,
+                                          (&ctx->save.dirty_bitmap_hbuf));
+
+    bitmap_set(dirty_bitmap, ctx->save.p2m_size);
+
+    return send_dirty_pages(ctx, dirty_bitmap, ctx->save.p2m_size);
+}
+
 static int enable_logdirty(struct xc_sr_context *ctx)
 {
     xc_interface *xch = ctx->xch;
-- 
1.9.1

  parent reply	other threads:[~2015-05-08  9:33 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-08  9:33 [PATCH Remus v2 00/10] Remus support for Migration-v2 Yang Hongyang
2015-05-08  9:33 ` [PATCH Remus v2 01/10] tools/libxc: adjust the memory allocation for migration Yang Hongyang
2015-05-08  9:51   ` Andrew Cooper
2015-05-11 11:50   ` Ian Campbell
2015-05-12  6:43     ` Hongyang Yang
2015-05-08  9:33 ` [PATCH Remus v2 02/10] tools/libxc: introduce setup() and cleanup() on save Yang Hongyang
2015-05-08  9:45   ` Andrew Cooper
2015-05-08  9:59     ` Hongyang Yang
2015-05-08 10:08       ` Andrew Cooper
2015-05-11  1:20         ` Hongyang Yang
2015-05-11 11:47           ` Ian Campbell
2015-05-11 11:49             ` Ian Campbell
2015-05-12  7:04               ` Yang Hongyang
2015-05-08  9:33 ` [PATCH Remus v2 03/10] tools/libxc: rename send_some_pages to send_dirty_pages Yang Hongyang
2015-05-08 10:11   ` Andrew Cooper
2015-05-11  1:21     ` Hongyang Yang
2015-05-08  9:33 ` [PATCH Remus v2 04/10] tools/libxc: introduce DECLARE_HYPERCALL_BUFFER_USER_POINTER Yang Hongyang
2015-05-08 10:16   ` Andrew Cooper
2015-05-11  1:22     ` Hongyang Yang
2015-05-11 11:53   ` Ian Campbell
2015-05-12  7:18     ` Yang Hongyang
2015-05-12  8:19       ` Ian Campbell
2015-05-12  9:24         ` Yang Hongyang
2015-05-12  9:43           ` Ian Campbell
2015-05-12  9:48             ` Yang Hongyang
2015-05-08  9:33 ` Yang Hongyang [this message]
2015-05-08 10:17   ` [PATCH Remus v2 05/10] tools/libxc: reuse send_dirty_pages() in send_all_pages() Andrew Cooper
2015-05-08  9:33 ` [PATCH Remus v2 06/10] tools/libxc: introduce process_record() Yang Hongyang
2015-05-08  9:33 ` [PATCH Remus v2 07/10] tools/libxc: split read/handle qemu info Yang Hongyang
2015-05-08  9:33 ` [PATCH Remus v2 08/10] tools/libxc: implement Remus checkpointed save Yang Hongyang
2015-05-08  9:33 ` [PATCH Remus v2 09/10] tools/libxc: implement Remus checkpointed restore Yang Hongyang
2015-05-08  9:33 ` [PATCH Remus v2 10/10] tools/libxc: X86_PV_INFO can be sent multiple times under Remus Yang Hongyang
2015-05-08 18:12 ` [PATCH Remus v2 00/10] Remus support for Migration-v2 Andrew Cooper
2015-05-11  6:28   ` Hongyang Yang
2015-05-11  9:00     ` Andrew Cooper
2015-05-11 10:48       ` Hongyang Yang
2015-05-11 11:01         ` Andrew Cooper
2015-05-12  8:12           ` Yang Hongyang
2015-05-12  9:40             ` Andrew Cooper
2015-05-12 10:02               ` Yang Hongyang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1431077610-3366-6-git-send-email-yanghy@cn.fujitsu.com \
    --to=yanghy@cn.fujitsu.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=eddie.dong@intel.com \
    --cc=ian.campbell@citrix.com \
    --cc=ian.jackson@eu.citrix.com \
    --cc=rshriram@cs.ubc.ca \
    --cc=wei.liu2@citrix.com \
    --cc=wency@cn.fujitsu.com \
    --cc=xen-devel@lists.xen.org \
    --cc=yunhong.jiang@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.