From: Orit Wasserman <owasserm@redhat.com>
To: qemu-devel@nongnu.org
Cc: peter.maydell@linaro.org, aliguori@us.ibm.com,
quintela@redhat.com, stefanha@gmail.com,
mdroth@linux.vnet.ibm.com, lcapitulino@redhat.com,
blauwirbel@gmail.com, chegu_vinod@hp.com, avi@redhat.com,
pbonzini@redhat.com, eblake@redhat.com
Subject: [Qemu-devel] [PATCH 12/12] Restart optimization on stage3 update version
Date: Mon, 6 Aug 2012 20:51:29 +0300 [thread overview]
Message-ID: <1344275489-28789-13-git-send-email-owasserm@redhat.com> (raw)
In-Reply-To: <1344275489-28789-1-git-send-email-owasserm@redhat.com>
From: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
---
arch_init.c | 24 +++++++++++++++---------
1 files changed, 15 insertions(+), 9 deletions(-)
diff --git a/arch_init.c b/arch_init.c
index 5f864a6..5181953 100644
--- a/arch_init.c
+++ b/arch_init.c
@@ -273,14 +273,16 @@ static void save_block_hdr(QEMUFile *f, RAMBlock *block, ram_addr_t offset,
static int save_xbzrle_page(QEMUFile *f, uint8_t *current_data,
ram_addr_t current_addr, RAMBlock *block,
- ram_addr_t offset, int cont)
+ ram_addr_t offset, int cont, bool last_stage)
{
int encoded_len = 0, bytes_sent = -1;
uint8_t *prev_cached_page;
if (!cache_is_cached(XBZRLE.cache, current_addr)) {
- cache_insert(XBZRLE.cache, current_addr,
- g_memdup(current_data, TARGET_PAGE_SIZE));
+ if (!last_stage) {
+ cache_insert(XBZRLE.cache, current_addr,
+ g_memdup(current_data, TARGET_PAGE_SIZE));
+ }
acct_info.xbzrle_cache_miss++;
return -1;
}
@@ -306,7 +308,9 @@ static int save_xbzrle_page(QEMUFile *f, uint8_t *current_data,
}
/* we need to update the data in the cache, in order to get the same data */
- memcpy(prev_cached_page, XBZRLE.current_buf, TARGET_PAGE_SIZE);
+ if (!last_stage) {
+ memcpy(prev_cached_page, XBZRLE.current_buf, TARGET_PAGE_SIZE);
+ }
/* Send XBZRLE based compressed page */
save_block_hdr(f, block, offset, cont, RAM_SAVE_FLAG_XBZRLE);
@@ -331,7 +335,7 @@ static ram_addr_t last_offset;
* n: the amount of bytes written in other case
*/
-static int ram_save_block(QEMUFile *f)
+static int ram_save_block(QEMUFile *f, bool last_stage)
{
RAMBlock *block = last_block;
ram_addr_t offset = last_offset;
@@ -362,8 +366,10 @@ static int ram_save_block(QEMUFile *f)
} else if (migrate_use_xbzrle()) {
current_addr = block->offset + offset;
bytes_sent = save_xbzrle_page(f, p, current_addr, block,
- offset, cont);
- p = get_cached_data(XBZRLE.cache, current_addr);
+ offset, cont, last_stage);
+ if (!last_stage) {
+ p = get_cached_data(XBZRLE.cache, current_addr);
+ }
}
/* either we didn't send yet (we may have had XBZRLE overflow) */
@@ -536,7 +542,7 @@ static int ram_save_iterate(QEMUFile *f, void *opaque)
while ((ret = qemu_file_rate_limit(f)) == 0) {
int bytes_sent;
- bytes_sent = ram_save_block(f);
+ bytes_sent = ram_save_block(f, false);
/* no more blocks to sent */
if (bytes_sent < 0) {
break;
@@ -598,7 +604,7 @@ static int ram_save_complete(QEMUFile *f, void *opaque)
while (true) {
int bytes_sent;
- bytes_sent = ram_save_block(f);
+ bytes_sent = ram_save_block(f, true);
/* no more blocks to sent */
if (bytes_sent < 0) {
break;
--
1.7.7.6
next prev parent reply other threads:[~2012-08-06 18:40 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-06 17:51 [Qemu-devel] [PATCH 00/12] Migration next v11 Orit Wasserman
2012-08-06 17:51 ` [Qemu-devel] [PATCH 01/12] Add migration capabilities Orit Wasserman
2012-08-06 17:51 ` [Qemu-devel] [PATCH 02/12] Add migrate-set-capabilities Orit Wasserman
2012-08-06 17:51 ` [Qemu-devel] [PATCH 03/12] Add XBZRLE documentation Orit Wasserman
2012-08-06 17:51 ` [Qemu-devel] [PATCH 04/12] Add cache handling functions Orit Wasserman
2012-08-06 17:51 ` [Qemu-devel] [PATCH 05/12] Add uleb encoding/decoding functions Orit Wasserman
2012-08-06 17:51 ` [Qemu-devel] [PATCH 06/12] Add xbzrle_encode_buffer and xbzrle_decode_buffer functions Orit Wasserman
2012-08-06 17:51 ` [Qemu-devel] [PATCH 07/12] Add XBZRLE to ram_save_block and ram_save_live Orit Wasserman
2012-08-06 17:51 ` [Qemu-devel] [PATCH 08/12] Add migrate_set_cache_size command Orit Wasserman
2012-08-06 18:13 ` Eric Blake
2012-08-06 18:24 ` Orit Wasserman
2012-08-06 17:51 ` [Qemu-devel] [PATCH 09/12] Add migration accounting for normal and duplicate pages Orit Wasserman
2012-08-06 17:51 ` [Qemu-devel] [PATCH 10/12] Change total_time to total-time in MigrationStats Orit Wasserman
2012-08-06 18:15 ` Eric Blake
2012-08-06 17:51 ` [Qemu-devel] [PATCH 11/12] Add XBZRLE statistics Orit Wasserman
2012-08-06 17:51 ` Orit Wasserman [this message]
-- strict thread matches above, loose matches on Subject: below --
2012-08-06 18:42 [Qemu-devel] [PATCH 00/12] Migration next v12 Orit Wasserman
2012-08-06 18:42 ` [Qemu-devel] [PATCH 12/12] Restart optimization on stage3 update version Orit Wasserman
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=1344275489-28789-13-git-send-email-owasserm@redhat.com \
--to=owasserm@redhat.com \
--cc=aliguori@us.ibm.com \
--cc=avi@redhat.com \
--cc=blauwirbel@gmail.com \
--cc=chegu_vinod@hp.com \
--cc=eblake@redhat.com \
--cc=lcapitulino@redhat.com \
--cc=mdroth@linux.vnet.ibm.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
--cc=stefanha@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).