From: Juan Quintela <quintela@redhat.com>
To: Isaku Yamahata <yamahata@private.email.ne.jp>
Cc: owasserm@redhat.com, chegu_vinod@hp.com, mrhines@us.ibm.com,
qemu-devel@nongnu.org, pbonzini@redhat.com
Subject: Re: [Qemu-devel] [PATCH] migration: ram_handle_compressed
Date: Wed, 18 Sep 2013 14:08:40 +0200 [thread overview]
Message-ID: <877geexrg7.fsf@elfo.elfo> (raw)
In-Reply-To: <63cb8b20f633a6abe56d384e3c3a5151ee6f422d.1379498467.git.yamahata@private.email.ne.jp> (Isaku Yamahata's message of "Wed, 18 Sep 2013 19:07:04 +0900")
Isaku Yamahata <yamahata@private.email.ne.jp> wrote:
> ram_handle_compressed() should be aware size > TARGET_PAGE_SIZE
> migration-rdma can call it with larger size.
>
> Signed-off-by: Isaku Yamahata <yamahata@private.email.ne.jp>
> ---
> arch_init.c | 21 ++++++++++++++-------
> 1 file changed, 14 insertions(+), 7 deletions(-)
>
> diff --git a/arch_init.c b/arch_init.c
> index e47e139..64c81b0 100644
> --- a/arch_init.c
> +++ b/arch_init.c
> @@ -844,15 +844,22 @@ static inline void *host_from_stream_offset(QEMUFile *f,
> */
> void ram_handle_compressed(void *host, uint8_t ch, uint64_t size)
> {
> - if (ch != 0 || !is_zero_page(host)) {
> - memset(host, ch, size);
I assume that size is always a multiple of pagesize, right?
> + uint64_t pagesize = getpagesize();
> + while (size > 0) {
> + uint64_t length = MIN(pagesize, size);
> +
> + if (ch !=0 || buffer_find_nonzero_offset(host, length) != length) {
This is a different optimization, we were't doing this before.
> + memset(host, ch, length);
> #ifndef _WIN32
> - if (ch == 0 &&
> - (!kvm_enabled() || kvm_has_sync_mmu()) &&
> - getpagesize() <= TARGET_PAGE_SIZE) {
> - qemu_madvise(host, TARGET_PAGE_SIZE, QEMU_MADV_DONTNEED);
> - }
> + if (ch == 0 &&
> + (!kvm_enabled() || kvm_has_sync_mmu()) && pagesize <= length) {
> + qemu_madvise(host, size, QEMU_MADV_DONTNEED);
Here don't we need s/size/length/?
> + }
> #endif
> + }
> +
> + size -= length;
> + host += length;
> }
> }
next prev parent reply other threads:[~2013-09-18 12:08 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-18 10:07 [Qemu-devel] [PATCH] migration: ram_handle_compressed Isaku Yamahata
2013-09-18 12:08 ` Juan Quintela [this message]
2013-09-20 7:43 ` Isaku Yamahata
2013-09-18 12:30 ` Michael R. Hines
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=877geexrg7.fsf@elfo.elfo \
--to=quintela@redhat.com \
--cc=chegu_vinod@hp.com \
--cc=mrhines@us.ibm.com \
--cc=owasserm@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=yamahata@private.email.ne.jp \
/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.