Re: [Qemu-devel] [PATCH v12 18/21] migration: Start sending messages

2018-05-23 Thread Juan Quintela
"Dr. David Alan Gilbert"  wrote:
> * Juan Quintela (quint...@redhat.com) wrote:
>> Signed-off-by: Juan Quintela 
>> ---
>>  migration/ram.c | 30 --
>>  1 file changed, 24 insertions(+), 6 deletions(-)
>> 
>> diff --git a/migration/ram.c b/migration/ram.c
>> index 862ec53d32..9adbaa81f9 100644
>> --- a/migration/ram.c
>> +++ b/migration/ram.c
>> @@ -625,9 +625,6 @@ static int multifd_recv_unfill_packet(MultiFDRecvParams 
>> *p, Error **errp)
>>  RAMBlock *block;
>>  int i;
>>  
>> -/* ToDo: We can't use it until we haven't received a message */
>> -return 0;
>> -
>>  be32_to_cpus(&packet->magic);
>>  if (packet->magic != MULTIFD_MAGIC) {
>>  error_setg(errp, "multifd: received packet "
>> @@ -851,6 +848,7 @@ static void *multifd_send_thread(void *opaque)
>>  {
>>  MultiFDSendParams *p = opaque;
>>  Error *local_err = NULL;
>> +int ret;
>>  
>>  trace_multifd_send_thread_start(p->id);
>>  
>> @@ -878,10 +876,18 @@ static void *multifd_send_thread(void *opaque)
>>  
>>  trace_multifd_send(p->id, seq, used, flags);
>>  
>> -/* ToDo: send packet here */
>> +ret = qio_channel_write_all(p->c, (void *)p->packet,
>> +p->packet_len, &local_err);
>> +if (ret != 0) {
>> +break;
>> +}
>> +
>> +ret = qio_channel_writev_all(p->c, p->pages->iov, used, 
>> &local_err);
>> +if (ret != 0) {
>> +break;
>> +}
>>  
>>  qemu_mutex_lock(&p->mutex);
>> -p->flags = 0;
>
> What's this change?

Leftover from previous approach on patch 16, we already do that
assignment several lines before.  Removed it on patch 16 as it should.

Thanks, Juan.



Re: [Qemu-devel] [PATCH v12 18/21] migration: Start sending messages

2018-05-03 Thread Dr. David Alan Gilbert
* Juan Quintela (quint...@redhat.com) wrote:
> Signed-off-by: Juan Quintela 
> ---
>  migration/ram.c | 30 --
>  1 file changed, 24 insertions(+), 6 deletions(-)
> 
> diff --git a/migration/ram.c b/migration/ram.c
> index 862ec53d32..9adbaa81f9 100644
> --- a/migration/ram.c
> +++ b/migration/ram.c
> @@ -625,9 +625,6 @@ static int multifd_recv_unfill_packet(MultiFDRecvParams 
> *p, Error **errp)
>  RAMBlock *block;
>  int i;
>  
> -/* ToDo: We can't use it until we haven't received a message */
> -return 0;
> -
>  be32_to_cpus(&packet->magic);
>  if (packet->magic != MULTIFD_MAGIC) {
>  error_setg(errp, "multifd: received packet "
> @@ -851,6 +848,7 @@ static void *multifd_send_thread(void *opaque)
>  {
>  MultiFDSendParams *p = opaque;
>  Error *local_err = NULL;
> +int ret;
>  
>  trace_multifd_send_thread_start(p->id);
>  
> @@ -878,10 +876,18 @@ static void *multifd_send_thread(void *opaque)
>  
>  trace_multifd_send(p->id, seq, used, flags);
>  
> -/* ToDo: send packet here */
> +ret = qio_channel_write_all(p->c, (void *)p->packet,
> +p->packet_len, &local_err);
> +if (ret != 0) {
> +break;
> +}
> +
> +ret = qio_channel_writev_all(p->c, p->pages->iov, used, 
> &local_err);
> +if (ret != 0) {
> +break;
> +}
>  
>  qemu_mutex_lock(&p->mutex);
> -p->flags = 0;

What's this change?

Other than that looks OK.

Dave

>  p->pending_job--;
>  qemu_mutex_unlock(&p->mutex);
>  
> @@ -1091,7 +1097,14 @@ static void *multifd_recv_thread(void *opaque)
>  uint32_t flags;
>  qemu_mutex_unlock(&p->mutex);
>  
> -/* ToDo: recv packet here */
> +ret = qio_channel_read_all_eof(p->c, (void *)p->packet,
> +   p->packet_len, &local_err);
> +if (ret == 0) {   /* EOF */
> +break;
> +}
> +if (ret == -1) {   /* Error */
> +break;
> +}
>  
>  qemu_mutex_lock(&p->mutex);
>  ret = multifd_recv_unfill_packet(p, &local_err);
> @@ -1108,6 +1121,11 @@ static void *multifd_recv_thread(void *opaque)
>  p->num_pages += used;
>  qemu_mutex_unlock(&p->mutex);
>  
> +ret = qio_channel_readv_all(p->c, p->pages->iov, used, 
> &local_err);
> +if (ret != 0) {
> +break;
> +}
> +
>  if (flags & MULTIFD_FLAG_SYNC) {
>  qemu_sem_post(&multifd_recv_state->sem_sync);
>  qemu_sem_wait(&p->sem_sync);
> -- 
> 2.17.0
> 
--
Dr. David Alan Gilbert / dgilb...@redhat.com / Manchester, UK



[Qemu-devel] [PATCH v12 18/21] migration: Start sending messages

2018-04-25 Thread Juan Quintela
Signed-off-by: Juan Quintela 
---
 migration/ram.c | 30 --
 1 file changed, 24 insertions(+), 6 deletions(-)

diff --git a/migration/ram.c b/migration/ram.c
index 862ec53d32..9adbaa81f9 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -625,9 +625,6 @@ static int multifd_recv_unfill_packet(MultiFDRecvParams *p, 
Error **errp)
 RAMBlock *block;
 int i;
 
-/* ToDo: We can't use it until we haven't received a message */
-return 0;
-
 be32_to_cpus(&packet->magic);
 if (packet->magic != MULTIFD_MAGIC) {
 error_setg(errp, "multifd: received packet "
@@ -851,6 +848,7 @@ static void *multifd_send_thread(void *opaque)
 {
 MultiFDSendParams *p = opaque;
 Error *local_err = NULL;
+int ret;
 
 trace_multifd_send_thread_start(p->id);
 
@@ -878,10 +876,18 @@ static void *multifd_send_thread(void *opaque)
 
 trace_multifd_send(p->id, seq, used, flags);
 
-/* ToDo: send packet here */
+ret = qio_channel_write_all(p->c, (void *)p->packet,
+p->packet_len, &local_err);
+if (ret != 0) {
+break;
+}
+
+ret = qio_channel_writev_all(p->c, p->pages->iov, used, 
&local_err);
+if (ret != 0) {
+break;
+}
 
 qemu_mutex_lock(&p->mutex);
-p->flags = 0;
 p->pending_job--;
 qemu_mutex_unlock(&p->mutex);
 
@@ -1091,7 +1097,14 @@ static void *multifd_recv_thread(void *opaque)
 uint32_t flags;
 qemu_mutex_unlock(&p->mutex);
 
-/* ToDo: recv packet here */
+ret = qio_channel_read_all_eof(p->c, (void *)p->packet,
+   p->packet_len, &local_err);
+if (ret == 0) {   /* EOF */
+break;
+}
+if (ret == -1) {   /* Error */
+break;
+}
 
 qemu_mutex_lock(&p->mutex);
 ret = multifd_recv_unfill_packet(p, &local_err);
@@ -1108,6 +1121,11 @@ static void *multifd_recv_thread(void *opaque)
 p->num_pages += used;
 qemu_mutex_unlock(&p->mutex);
 
+ret = qio_channel_readv_all(p->c, p->pages->iov, used, &local_err);
+if (ret != 0) {
+break;
+}
+
 if (flags & MULTIFD_FLAG_SYNC) {
 qemu_sem_post(&multifd_recv_state->sem_sync);
 qemu_sem_wait(&p->sem_sync);
-- 
2.17.0