All of lore.kernel.org
 help / color / mirror / Atom feed
From: Juan Quintela <quintela@redhat.com>
To: "Daniel P. Berrange" <berrange@redhat.com>
Cc: qemu-devel@nongnu.org, lvivier@redhat.com, dgilbert@redhat.com,
	peterx@redhat.com
Subject: Re: [Qemu-devel] [PATCH v9 04/12] migration: Start of multiple fd work
Date: Mon, 09 Oct 2017 14:32:05 +0200	[thread overview]
Message-ID: <87d15w1oze.fsf@secure.laptop> (raw)
In-Reply-To: <20171009101504.GF2954@redhat.com> (Daniel P. Berrange's message of "Mon, 9 Oct 2017 11:15:04 +0100")

"Daniel P. Berrange" <berrange@redhat.com> wrote:
> On Wed, Oct 04, 2017 at 12:46:28PM +0200, Juan Quintela wrote:
>> We create new channels for each new thread created. We send through
>> them a string containing <uuid> multifd <channel number> so we are
>> sure that we connect the right channels in both sides.
>
> This message needs updating now that we send a struct.
>
>
>> diff --git a/migration/ram.c b/migration/ram.c
>> index b83f8977c5..b57006594b 100644
>> --- a/migration/ram.c
>> +++ b/migration/ram.c
>> @@ -414,9 +425,27 @@ int multifd_save_cleanup(Error **errp)
>>      return ret;
>>  }
>>  
>> +typedef struct {
>> +    uint32_t version;
>> +    uint8_t id;
>> +    char uuid[UUID_FMT_LEN];
>> +} MigrateMultiFDInit_t;
>
> We add an __attribute__((packed)) here since we send it directly
> on the wire. Perhaps put 'uuid' field before 'id' when doing that
> so 'uuid' gets a more natural alignment.

ok.

> If we use 'unsigned char uuid[16]' then you don't need to convert
> from string format either...

I was looking at the "exported" commands in uuid.h, but I can use the
memcopy without problem.  Just feel like using a "detail" of the
implementation.



>
>>  static void *multifd_send_thread(void *opaque)
>>  {
>>      MultiFDSendParams *p = opaque;
>> +    MigrateMultiFDInit_t msg;
>> +    Error *local_err = NULL;
>> +    size_t ret;
>> +
>> +    msg.version = 1;
>> +    msg.id = p->id;
>> +    qemu_uuid_unparse(&qemu_uuid, (char *)&msg.uuid);
>
> eg this could be   memcpy(msg.uuid, qemu_uuid.data, sizeof(msg.uuid))
>
>> +    ret = qio_channel_write_all(p->c, (char *)&msg, sizeof(msg), &local_err);
>> +    if (ret != 0) {
>> +        terminate_multifd_send_threads(local_err);
>> +        return NULL;
>> +    }
>>  
>>      while (true) {
>>          qemu_mutex_lock(&p->mutex);
>> @@ -431,6 +460,27 @@ static void *multifd_send_thread(void *opaque)
>>      return NULL;
>>  }
>
>> +void multifd_new_channel(QIOChannel *ioc)
>> +{
>> +    MultiFDRecvParams *p;
>> +    MigrateMultiFDInit_t msg;
>> +    Error *local_err = NULL;
>> +    char *uuid;
>> +    size_t ret;
>> +
>> +    ret = qio_channel_read_all(ioc, (char *)&msg, sizeof(msg), &local_err);
>> +    if (ret != 0) {
>> +        terminate_multifd_recv_threads(local_err);
>> +        return;
>> +    }
>> +
>> +    uuid = qemu_uuid_unparse_strdup(&qemu_uuid);
>
> ...and here we would avoid need to unparse, instead..
>
>> +
>> +    if (strcmp(msg.uuid, uuid)) {
>
>   memcmp(msg.uuid, qemu_uuid.data, sizeof(msg.uuid) != 0
>
>> +        g_free(uuid);
>> +        error_setg(&local_err, "multifd: received uuid '%s' and expected "
>> +                   "uuid '%s' for channel %hhd", msg.uuid, uuid, msg.id);
>> +        terminate_multifd_recv_threads(local_err);
>> +        return;
>> +    }
>> +    g_free(uuid);

Thanks, Juan.

  reply	other threads:[~2017-10-09 12:32 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-04 10:46 [Qemu-devel] [PATCH v9 00/12] Multifd Juan Quintela
2017-10-04 10:46 ` [Qemu-devel] [PATCH v9 01/12] qapi: Fix grammar in x-multifd-page-count descriptions Juan Quintela
2017-10-16 16:53   ` Dr. David Alan Gilbert
2017-10-04 10:46 ` [Qemu-devel] [PATCH v9 02/12] migration: Improve migration thread error handling Juan Quintela
2017-10-09  9:28   ` Peter Xu
2017-10-16 17:34   ` Dr. David Alan Gilbert
2017-10-16 17:48     ` Dr. David Alan Gilbert
2017-10-04 10:46 ` [Qemu-devel] [PATCH v9 03/12] migration: Make migrate_fd_error() the owner of the Error Juan Quintela
2017-10-09  9:34   ` Peter Xu
2017-10-04 10:46 ` [Qemu-devel] [PATCH v9 04/12] migration: Start of multiple fd work Juan Quintela
2017-10-09 10:05   ` Peter Xu
2017-10-09 10:15   ` Daniel P. Berrange
2017-10-09 12:32     ` Juan Quintela [this message]
2017-10-09 12:32     ` Juan Quintela
2017-10-16 19:11   ` Dr. David Alan Gilbert
2017-12-09 16:46     ` Juan Quintela
2017-10-04 10:46 ` [Qemu-devel] [PATCH v9 05/12] migration: Create ram_multifd_page Juan Quintela
2017-10-09 13:08   ` Paolo Bonzini
2017-10-16 19:43   ` Dr. David Alan Gilbert
2017-10-04 10:46 ` [Qemu-devel] [PATCH v9 06/12] migration: Send the fd number which we are going to use for this page Juan Quintela
2017-10-04 10:46 ` [Qemu-devel] [PATCH v9 07/12] migration: Create thread infrastructure for multifd recv side Juan Quintela
2017-10-17 11:07   ` Dr. David Alan Gilbert
2018-01-08  9:24     ` Juan Quintela
2017-10-04 10:46 ` [Qemu-devel] [PATCH v9 08/12] migration: Test new fd infrastructure Juan Quintela
2017-10-17 11:11   ` Dr. David Alan Gilbert
2017-10-04 10:46 ` [Qemu-devel] [PATCH v9 09/12] migration: Rename initial_bytes Juan Quintela
2017-10-04 10:46 ` [Qemu-devel] [PATCH v9 10/12] migration: Transfer pages over new channels Juan Quintela
2017-10-17 14:18   ` Dr. David Alan Gilbert
2018-01-08  9:40     ` Juan Quintela
2017-10-04 10:46 ` [Qemu-devel] [PATCH v9 11/12] migration: Flush receive queue Juan Quintela
2017-10-17 14:51   ` Dr. David Alan Gilbert
2017-12-11  9:40     ` Juan Quintela
2017-10-04 10:46 ` [Qemu-devel] [PATCH v9 12/12] migration: Add multifd test Juan Quintela
2017-10-17 15:27   ` Dr. David Alan Gilbert
2017-12-11  9:40     ` 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=87d15w1oze.fsf@secure.laptop \
    --to=quintela@redhat.com \
    --cc=berrange@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=lvivier@redhat.com \
    --cc=peterx@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /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.