diff mbox series

[v2,1/8] multifd: Only send pages when packet are not empty

Message ID 20190220115611.3192-2-quintela@redhat.com
State New
Headers show
Series migration: Make multifd not experimental | expand

Commit Message

Juan Quintela Feb. 20, 2019, 11:56 a.m. UTC
We send packages without pages sometimes for sysnchronizanion.  The
iov functions do the right thing, but we will be changing this code in
future patches.

Signed-off-by: Juan Quintela <quintela@redhat.com>
---
 migration/ram.c | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

Comments

Dr. David Alan Gilbert Feb. 21, 2019, 5:43 p.m. UTC | #1
* Juan Quintela (quintela@redhat.com) wrote:
> We send packages without pages sometimes for sysnchronizanion.  The
> iov functions do the right thing, but we will be changing this code in
> future patches.
> 
> Signed-off-by: Juan Quintela <quintela@redhat.com>

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>

> ---
>  migration/ram.c | 18 ++++++++++++------
>  1 file changed, 12 insertions(+), 6 deletions(-)
> 
> diff --git a/migration/ram.c b/migration/ram.c
> index 59191c1ed2..8b5fd67d66 100644
> --- a/migration/ram.c
> +++ b/migration/ram.c
> @@ -1025,9 +1025,12 @@ static void *multifd_send_thread(void *opaque)
>                  break;
>              }
>  
> -            ret = qio_channel_writev_all(p->c, p->pages->iov, used, &local_err);
> -            if (ret != 0) {
> -                break;
> +            if (used) {
> +                ret = qio_channel_writev_all(p->c, p->pages->iov,
> +                                             used, &local_err);
> +                if (ret != 0) {
> +                    break;
> +                }
>              }
>  
>              qemu_mutex_lock(&p->mutex);
> @@ -1254,9 +1257,12 @@ 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 (used) {
> +            ret = qio_channel_readv_all(p->c, p->pages->iov,
> +                                        used, &local_err);
> +            if (ret != 0) {
> +                break;
> +            }
>          }
>  
>          if (flags & MULTIFD_FLAG_SYNC) {
> -- 
> 2.20.1
> 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
diff mbox series

Patch

diff --git a/migration/ram.c b/migration/ram.c
index 59191c1ed2..8b5fd67d66 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -1025,9 +1025,12 @@  static void *multifd_send_thread(void *opaque)
                 break;
             }
 
-            ret = qio_channel_writev_all(p->c, p->pages->iov, used, &local_err);
-            if (ret != 0) {
-                break;
+            if (used) {
+                ret = qio_channel_writev_all(p->c, p->pages->iov,
+                                             used, &local_err);
+                if (ret != 0) {
+                    break;
+                }
             }
 
             qemu_mutex_lock(&p->mutex);
@@ -1254,9 +1257,12 @@  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 (used) {
+            ret = qio_channel_readv_all(p->c, p->pages->iov,
+                                        used, &local_err);
+            if (ret != 0) {
+                break;
+            }
         }
 
         if (flags & MULTIFD_FLAG_SYNC) {