From: Eric Blake <eblake@redhat.com>
To: Liang Li <liang.z.li@intel.com>, qemu-devel@nongnu.org
Cc: yang.z.zhang@intel.com, lcapitulino@redhat.com,
armbru@redhat.com, dgilbert@redhat.com, quintela@redhat.com
Subject: Re: [Qemu-devel] [v3 03/13] migration: Add the framework of muti-thread decompression
Date: Fri, 23 Jan 2015 09:22:48 -0700 [thread overview]
Message-ID: <54C27558.1080503@redhat.com> (raw)
In-Reply-To: <1418347746-15829-4-git-send-email-liang.z.li@intel.com>
[-- Attachment #1: Type: text/plain, Size: 2173 bytes --]
On 12/11/2014 06:28 PM, Liang Li wrote:
In addition to David's catches:
s/muti/multi/ in the subject line.
Commit message feels sparse - is the one subject line really all we need
to know about this framework?
> Signed-off-by: Liang Li <liang.z.li@intel.com>
> Signed-off-by: Yang Zhang <yang.z.zhang@intel.com>
> ---
> arch_init.c | 70 +++++++++++++++++++++++++++++++++++++++++++
> include/migration/migration.h | 4 +++
> migration.c | 15 ++++++++++
> 3 files changed, 89 insertions(+)
>
>
> +/* using compressBound() to calculate the buffer size needed to save the
> + * compressed data, to support the maximun TARGET_PAGE_SIZE bytes of
> + * data, we need more 15 bytes, use 16 to align the data.
> + */
> +#define COMPRESS_BUF_SIZE (TARGET_PAGE_SIZE + 16)
> +
> static int ram_load(QEMUFile *f, void *opaque, int version_id)
> {
> int flags = 0, ret = 0;
> static uint64_t seq_iter;
> + int len = 0;
> + uint8_t compbuf[COMPRESS_BUF_SIZE];
>
Ouch - you stack-allocated more than a page of data. This is in general
bad practice (and you should use the heap for any function that requires
more than 4k of data) because there are some architectures (cough:
windows) where exceeding the stack by more than a page risks silent
termination of the application rather than a graceful SIGSEGV (if you
can even call a stack overflow SIGSEGV graceful). Especially true when
using helper threads, which typically have smaller stacks than the main
application.
> seq_iter++;
>
> @@ -1201,6 +1259,18 @@ static int ram_load(QEMUFile *f, void *opaque, int version_id)
>
> qemu_get_buffer(f, host, TARGET_PAGE_SIZE);
> break;
> + case RAM_SAVE_FLAG_COMPRESS_PAGE:
> + host = host_from_stream_offset(f, addr, flags);
> + if (!host) {
> + error_report("Illegal RAM offset " RAM_ADDR_FMT, addr);
s/Illegal/Invalid/ (the user isn't breaking a law, merely a constraint).
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 604 bytes --]
next prev parent reply other threads:[~2015-01-23 16:23 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-12 1:28 [Qemu-devel] [PATCH v3 0/13] migration: Add a new feature to do live migration Liang Li
2014-12-12 1:28 ` [Qemu-devel] [v3 01/13] docs: Add a doc about multiple thread compression Liang Li
2015-01-23 13:17 ` Dr. David Alan Gilbert
2015-01-23 15:24 ` Eric Blake
2014-12-12 1:28 ` [Qemu-devel] [v3 02/13] migration: Add the framework of multi-thread compression Liang Li
2015-01-23 13:23 ` Dr. David Alan Gilbert
2015-01-23 16:09 ` Eric Blake
2014-12-12 1:28 ` [Qemu-devel] [v3 03/13] migration: Add the framework of muti-thread decompression Liang Li
2015-01-23 13:26 ` Dr. David Alan Gilbert
2015-01-23 16:22 ` Eric Blake [this message]
2014-12-12 1:28 ` [Qemu-devel] [v3 04/13] qemu-file: Add tow function will be used in migration Liang Li
2015-01-23 13:31 ` Dr. David Alan Gilbert
2015-01-24 13:42 ` Li, Liang Z
2014-12-12 1:28 ` [Qemu-devel] [v3 05/13] arch_init: alloc and free data struct in multi-thread compression Liang Li
2015-01-23 13:35 ` Dr. David Alan Gilbert
2015-01-24 13:46 ` Li, Liang Z
2014-12-12 1:28 ` [Qemu-devel] [v3 06/13] arch_init: Add data struct used by decompression Liang Li
2014-12-12 1:29 ` [Qemu-devel] [v3 07/13] migraion: Rewrite the function ram_save_page() Liang Li
2015-01-23 13:38 ` Dr. David Alan Gilbert
2014-12-12 1:29 ` [Qemu-devel] [v3 08/13] migration: Add the core code of multi-thread compresion Liang Li
2015-01-23 13:39 ` Dr. David Alan Gilbert
2015-01-24 13:51 ` Li, Liang Z
2014-12-12 1:29 ` [Qemu-devel] [v3 09/13] migration: Make compression co-work with xbzrle Liang Li
2015-01-23 13:40 ` Dr. David Alan Gilbert
2014-12-12 1:29 ` [Qemu-devel] [v3 10/13] migration: Add the core code of multi-thread decompression Liang Li
2015-01-23 13:42 ` Dr. David Alan Gilbert
2014-12-12 1:29 ` [Qemu-devel] [v3 11/13] migration: Add interface to control compression Liang Li
2015-01-23 13:44 ` Dr. David Alan Gilbert
2015-01-23 15:26 ` Eric Blake
2014-12-12 1:29 ` [Qemu-devel] [v3 12/13] migration: Add command to set migration parameter Liang Li
2015-01-23 13:48 ` Dr. David Alan Gilbert
2015-01-23 15:42 ` Eric Blake
2015-01-23 15:59 ` Dr. David Alan Gilbert
2015-01-23 16:06 ` Eric Blake
2015-01-24 14:14 ` Li, Liang Z
2015-01-26 9:22 ` Dr. David Alan Gilbert
2015-01-23 15:39 ` Eric Blake
2014-12-12 1:29 ` [Qemu-devel] [v3 13/13] migration: Add command to query " Liang Li
2015-01-23 13:49 ` Dr. David Alan Gilbert
2015-01-23 15:47 ` Eric Blake
2014-12-24 5:08 ` [Qemu-devel] [PATCH v3 0/13] migration: Add a new feature to do live migration Li, Liang Z
2015-01-07 3:12 ` Li, Liang Z
2015-01-23 13:10 ` Dr. David Alan Gilbert
2015-01-24 13:25 ` Li, Liang Z
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=54C27558.1080503@redhat.com \
--to=eblake@redhat.com \
--cc=armbru@redhat.com \
--cc=dgilbert@redhat.com \
--cc=lcapitulino@redhat.com \
--cc=liang.z.li@intel.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
--cc=yang.z.zhang@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 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).