From: Juan Quintela <quintela@redhat.com>
To: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
Cc: qemu-devel@nongnu.org, Thomas Huth <thuth@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Eric Blake <eblake@redhat.com>,
Laurent Vivier <lvivier@redhat.com>,
Markus Armbruster <armbru@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v2 5/8] multifd: Be flexible about packet size
Date: Wed, 27 Feb 2019 12:06:55 +0100 [thread overview]
Message-ID: <874l8psd68.fsf@trasno.org> (raw)
In-Reply-To: <20190221183020.GO2605@work-vm> (David Alan Gilbert's message of "Thu, 21 Feb 2019 18:30:21 +0000")
"Dr. David Alan Gilbert" <dgilbert@redhat.com> wrote:
> * Juan Quintela (quintela@redhat.com) wrote:
>> This way we can change the packet size in the future and everything
>> will work. We choose an arbitrary big number (100 times configured
>> size) as a limit about how big we will reallocate.
>>
>> Signed-off-by: Juan Quintela <quintela@redhat.com>
>> ---
>> migration/ram.c | 24 ++++++++++++++++++------
>> 1 file changed, 18 insertions(+), 6 deletions(-)
>>
>> diff --git a/migration/ram.c b/migration/ram.c
>> index e22d02760b..75a8fc21f8 100644
>> --- a/migration/ram.c
>> +++ b/migration/ram.c
>> @@ -723,13 +723,13 @@ static void multifd_pages_clear(MultiFDPages_t *pages)
>> static void multifd_send_fill_packet(MultiFDSendParams *p)
>> {
>> MultiFDPacket_t *packet = p->packet;
>> - uint32_t page_count = MULTIFD_PACKET_SIZE / qemu_target_page_size();
>> + uint32_t page_max = MULTIFD_PACKET_SIZE / qemu_target_page_size();
>> int i;
>>
>> packet->magic = cpu_to_be32(MULTIFD_MAGIC);
>> packet->version = cpu_to_be32(MULTIFD_VERSION);
>> packet->flags = cpu_to_be32(p->flags);
>> - packet->pages_alloc = cpu_to_be32(page_count);
>> + packet->pages_alloc = cpu_to_be32(page_max);
>> packet->pages_used = cpu_to_be32(p->pages->used);
>> packet->next_packet_size = cpu_to_be32(p->next_packet_size);
>> packet->packet_num = cpu_to_be64(p->packet_num);
>> @@ -746,7 +746,7 @@ static void multifd_send_fill_packet(MultiFDSendParams *p)
>> static int multifd_recv_unfill_packet(MultiFDRecvParams *p, Error **errp)
>> {
>> MultiFDPacket_t *packet = p->packet;
>> - uint32_t page_count = MULTIFD_PACKET_SIZE / qemu_target_page_size();
>> + uint32_t pages_max = MULTIFD_PACKET_SIZE / qemu_target_page_size();
>> RAMBlock *block;
>> int i;
>>
>> @@ -769,12 +769,24 @@ static int multifd_recv_unfill_packet(MultiFDRecvParams *p, Error **errp)
>> p->flags = be32_to_cpu(packet->flags);
>>
>> packet->pages_alloc = be32_to_cpu(packet->pages_alloc);
>> - if (packet->pages_alloc > page_count) {
>> + /*
>> + * If we recevied a packet that is 100 times bigger than expected
>> + * just stop migration. It is a magic number.
>> + */
>> + if (packet->pages_alloc > pages_max * 100) {
>> error_setg(errp, "multifd: received packet "
>> - "with size %d and expected maximum size %d",
>> - packet->pages_alloc, page_count) ;
>> + "with size %d and expected size %d",
>> + packet->pages_alloc, pages_max) ;
>
> Should that end with pages_max * 100 ?
Not sure.
The *allocated* by defaault size is pages_max. If we receive
bigger packets, we update it, but until a limit (arbitrary, I am open to
other limits).
So, what multifd is expecting here is pages_max. But it will cope with
anything that is smaller than pages_max * 100. So, what I should put on
the error message? 100 * pages_max or pages_max?
It appears that for you it is simpler to understand pages_max * 100, and
as I don't care, I am just changing it.
>> return -1;
>> }
>> + /*
>> + * We received a packet that is bigger than expected but inside
>> + * reasonable limits (see previous comment). Just reallocate.
>> + */
>> + if (packet->pages_alloc > p->pages->allocated) {
>> + multifd_pages_clear(p->pages);
>> + multifd_pages_init(packet->pages_alloc);
>> + }
>>
>> p->pages->used = be32_to_cpu(packet->pages_used);
>> if (p->pages->used > packet->pages_alloc) {
>
> Other than that error message, I think it's OK, although the names get
> very confusing (max, alloc, allocated)
I am open to suggestions. I just got out of names :-(
>
>
> Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Thanks.
next prev parent reply other threads:[~2019-02-27 11:03 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-20 11:56 [Qemu-devel] [PATCH v2 0/8] migration: Make multifd not experimental Juan Quintela
2019-02-20 11:56 ` [Qemu-devel] [PATCH v2 1/8] multifd: Only send pages when packet are not empty Juan Quintela
2019-02-21 17:43 ` Dr. David Alan Gilbert
2019-02-20 11:56 ` [Qemu-devel] [PATCH v2 2/8] multifd: Rename "size" member to pages_alloc Juan Quintela
2019-02-21 17:48 ` Dr. David Alan Gilbert
2019-02-20 11:56 ` [Qemu-devel] [PATCH v2 3/8] multifd: Create new next_packet_size field Juan Quintela
2019-02-21 18:45 ` Dr. David Alan Gilbert
2019-02-27 11:02 ` Juan Quintela
2019-02-20 11:56 ` [Qemu-devel] [PATCH v2 4/8] multifd: Drop x-multifd-page-count parameter Juan Quintela
2019-02-21 17:51 ` Dr. David Alan Gilbert
2019-02-20 11:56 ` [Qemu-devel] [PATCH v2 5/8] multifd: Be flexible about packet size Juan Quintela
2019-02-21 18:30 ` Dr. David Alan Gilbert
2019-02-27 11:06 ` Juan Quintela [this message]
2019-02-20 11:56 ` [Qemu-devel] [PATCH v2 6/8] multifd: Change default " Juan Quintela
2019-02-21 18:40 ` Dr. David Alan Gilbert
2019-02-20 11:56 ` [Qemu-devel] [PATCH v2 7/8] multifd: Drop x- Juan Quintela
2019-02-20 11:56 ` [Qemu-devel] [PATCH v2 8/8] tests: Add migration multifd test Juan Quintela
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=874l8psd68.fsf@trasno.org \
--to=quintela@redhat.com \
--cc=armbru@redhat.com \
--cc=dgilbert@redhat.com \
--cc=eblake@redhat.com \
--cc=lvivier@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=thuth@redhat.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.