qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Michael R. Hines" <mrhines@linux.vnet.ibm.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: aliguori@us.ibm.com, mst@redhat.com, qemu-devel@nongnu.org,
	owasserm@redhat.com, abali@us.ibm.com, mrhines@us.ibm.com,
	gokul@us.ibm.com
Subject: Re: [Qemu-devel] [RFC PATCH RDMA support v6: 4/7] Introduce two new capabilities
Date: Wed, 10 Apr 2013 08:34:42 -0400	[thread overview]
Message-ID: <51655C62.2030508@linux.vnet.ibm.com> (raw)
In-Reply-To: <516519CA.4090809@redhat.com>

On 04/10/2013 03:50 AM, Paolo Bonzini wrote:
> Il 10/04/2013 06:29, mrhines@linux.vnet.ibm.com ha scritto:
>> From: "Michael R. Hines" <mrhines@us.ibm.com>
>>
>> RDMA performs very slowly with zero-page checking.
>> Without the ability to disable it, RDMA throughput and
>> latency promises and high performance links cannot be
>> fully realized.
>>
>> On the other hand, dynamic page registration support is also
>> included in the RDMA protocol. This second capability also
>> cannot be fully realized without the ability to enable zero
>> page scanning.
>>
>> So, we have two new capabilities which work together:
>>
>> 1. migrate_set_capability check_for_zero on|off (default on)
>> 2. migrate_set_capability chunk_register_destination on|off (default off)
>>
>> Signed-off-by: Michael R. Hines <mrhines@us.ibm.com>
> Michael, please listen to _all_ review comments.
>
> 1) I asked you to place check_for_zero in a separate patch.
>
> 2) Again, patch 3 cannot compile without this one.  The code should
> compile after each patch, with and without --enable-rdma.

My apologies - I misunderstood the request. I am indeed addressing every 
comment.

When you said separate, I thought you meant a different patch series 
altpgether.

This is my first time, so the meaning of "separate" was not clear =)

And yes, patch 3 does in fact compile both with and without --enable-rdma.
>> ---
>>   include/migration/qemu-file.h |   15 +++++++++++++++
>>   migration.c                   |   33 +++++++++++++++++++++++++++++++--
>>   qapi-schema.json              |    2 +-
>>   3 files changed, 47 insertions(+), 3 deletions(-)
>>
>> diff --git a/include/migration/qemu-file.h b/include/migration/qemu-file.h
>> index 623c434..b6f3256 100644
>> --- a/include/migration/qemu-file.h
>> +++ b/include/migration/qemu-file.h
>> @@ -57,12 +57,15 @@ typedef int (QEMUFileGetFD)(void *opaque);
>>   typedef ssize_t (QEMUFileWritevBufferFunc)(void *opaque, struct iovec *iov,
>>                                              int iovcnt);
>>   
>> +typedef struct QEMURamControlOps QEMURamControlOps;
>> +
>>   typedef struct QEMUFileOps {
>>       QEMUFilePutBufferFunc *put_buffer;
>>       QEMUFileGetBufferFunc *get_buffer;
>>       QEMUFileCloseFunc *close;
>>       QEMUFileGetFD *get_fd;
>>       QEMUFileWritevBufferFunc *writev_buffer;
>> +    const QEMURamControlOps *ram_control;
> Why a separate member?  You can put them directly here.

Acknowledged.

>>   } QEMUFileOps;
>>   
>>   QEMUFile *qemu_fopen_ops(void *opaque, const QEMUFileOps *ops);
>> @@ -80,6 +83,18 @@ void qemu_put_byte(QEMUFile *f, int v);
>>    * The buffer should be available till it is sent asynchronously.
>>    */
>>   void qemu_put_buffer_async(QEMUFile *f, const uint8_t *buf, int size);
>> +void qemu_file_set_error(QEMUFile *f, int ret);
>> +
>> +void qemu_rdma_cleanup(void *opaque);
>> +int qemu_rdma_close(void *opaque);
>> +int qemu_rdma_get_fd(void *opaque);
>> +int qemu_rdma_get_buffer(void *opaque, uint8_t *buf, int64_t pos, int size);
>> +int qemu_rdma_put_buffer(void *opaque, const uint8_t *buf,
>> +                            int64_t pos, int size);
>> +bool qemu_file_mode_is_not_valid(const char * mode);
>> +
>> +extern const QEMUFileOps rdma_read_ops;
>> +extern const QEMUFileOps rdma_write_ops;
> Please put these in migration-rdma.c.  You do not need them here.
>

Acknowledged.

>>   static inline void qemu_put_ubyte(QEMUFile *f, unsigned int v)
>>   {
>> diff --git a/migration.c b/migration.c
>> index 3b4b467..875cee3 100644
>> --- a/migration.c
>> +++ b/migration.c
>> @@ -66,6 +66,7 @@ MigrationState *migrate_get_current(void)
>>           .state = MIG_STATE_SETUP,
>>           .bandwidth_limit = MAX_THROTTLE,
>>           .xbzrle_cache_size = DEFAULT_MIGRATE_CACHE_SIZE,
>> +        .enabled_capabilities[MIGRATION_CAPABILITY_CHECK_FOR_ZERO] = true,
>>       };
>>   
>>       return &current_migration;
>> @@ -77,6 +78,10 @@ void qemu_start_incoming_migration(const char *uri, Error **errp)
>>   
>>       if (strstart(uri, "tcp:", &p))
>>           tcp_start_incoming_migration(p, errp);
>> +#ifdef CONFIG_RDMA
>> +    else if (strstart(uri, "rdma:", &p))
>> +        rdma_start_incoming_migration(p, errp);
>> +#endif
>>   #if !defined(WIN32)
>>       else if (strstart(uri, "exec:", &p))
>>           exec_start_incoming_migration(p, errp);
>> @@ -120,8 +125,10 @@ void process_incoming_migration(QEMUFile *f)
>>       Coroutine *co = qemu_coroutine_create(process_incoming_migration_co);
>>       int fd = qemu_get_fd(f);
>>   
>> -    assert(fd != -1);
>> -    qemu_set_nonblock(fd);
>> +    if(fd != -2) { /* rdma returns -2 */
> Please do not invent a special return value, this will not be maintainable.
>
> Just sacrifice the assert for now, as we had agreed in the past.

You flip-flopped on me =)
You said conditionalize it, then make a separate patch, then delete it 
altogether =)

But I'm fine with delete =)

  reply	other threads:[~2013-04-10 12:35 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-04-10  4:29 [Qemu-devel] [RFC PATCH RDMA support v6: 0/7] additional cleanup and consolidation mrhines
2013-04-10  4:29 ` [Qemu-devel] [RFC PATCH RDMA support v6: 1/7] ./configure and Makefile mrhines
2013-04-10  7:52   ` Paolo Bonzini
2013-04-10 12:37     ` Michael R. Hines
2013-04-10 12:42       ` Paolo Bonzini
2013-04-10 13:11         ` Michael R. Hines
2013-04-10  4:29 ` [Qemu-devel] [RFC PATCH RDMA support v6: 2/7] documentation (docs/rdma.txt) mrhines
2013-04-10  5:35   ` Michael S. Tsirkin
2013-04-10 12:19     ` Michael R. Hines
2013-04-10  4:29 ` [Qemu-devel] [RFC PATCH RDMA support v6: 3/7] Introduce QEMURamControlOps mrhines
2013-04-10  7:52   ` Paolo Bonzini
2013-04-10 12:38     ` Michael R. Hines
2013-04-10  4:29 ` [Qemu-devel] [RFC PATCH RDMA support v6: 4/7] Introduce two new capabilities mrhines
2013-04-10  7:50   ` Paolo Bonzini
2013-04-10 12:34     ` Michael R. Hines [this message]
2013-04-10 12:40       ` Paolo Bonzini
2013-04-10 13:10         ` Michael R. Hines
2013-04-10 13:13           ` Paolo Bonzini
2013-04-10 14:03             ` Michael R. Hines
2013-04-10 12:47   ` Orit Wasserman
2013-04-10 13:13     ` Michael R. Hines
2013-04-10 13:20       ` Orit Wasserman
2013-04-10 15:52         ` Michael R. Hines
2013-04-10  4:29 ` [Qemu-devel] [RFC PATCH RDMA support v6: 5/7] core RDMA logic mrhines
2013-04-10  4:29 ` [Qemu-devel] [RFC PATCH RDMA support v6: 6/7] send pc.ram over RDMA mrhines
2013-04-10  7:57   ` Paolo Bonzini
2013-04-10 12:38     ` Michael R. Hines
2013-04-10  4:29 ` [Qemu-devel] [RFC PATCH RDMA support v6: 7/7] introduce qemu_ram_foreach_block() mrhines
2013-04-10  7:47   ` Paolo Bonzini
2013-04-10 12:36     ` 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=51655C62.2030508@linux.vnet.ibm.com \
    --to=mrhines@linux.vnet.ibm.com \
    --cc=abali@us.ibm.com \
    --cc=aliguori@us.ibm.com \
    --cc=gokul@us.ibm.com \
    --cc=mrhines@us.ibm.com \
    --cc=mst@redhat.com \
    --cc=owasserm@redhat.com \
    --cc=pbonzini@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 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).