Patchwork [10/14] buffered_file: Unfold the trick to restart generating migration data

login
register
mail settings
Submitter Juan Quintela
Date Sept. 21, 2012, 2:08 p.m.
Message ID <1348236500-2565-11-git-send-email-quintela@redhat.com>
Download mbox | patch
Permalink /patch/185748/
State New
Headers show

Comments

Juan Quintela - Sept. 21, 2012, 2:08 p.m.
This was needed before due to the way that the callbacks worked.

Signed-off-by: Juan Quintela <quintela@redhat.com>
---
 buffered_file.c | 17 ++++++++---------
 1 file changed, 8 insertions(+), 9 deletions(-)
Paolo Bonzini - Sept. 21, 2012, 3 p.m.
Il 21/09/2012 16:08, Juan Quintela ha scritto:
> This was needed before due to the way that the callbacks worked.
> 
> Signed-off-by: Juan Quintela <quintela@redhat.com>
> ---
>  buffered_file.c | 17 ++++++++---------
>  1 file changed, 8 insertions(+), 9 deletions(-)
> 
> diff --git a/buffered_file.c b/buffered_file.c
> index 22b973f..f4a788d 100644
> --- a/buffered_file.c
> +++ b/buffered_file.c
> @@ -113,14 +113,6 @@ static int buffered_put_buffer(void *opaque, const uint8_t *buf, int64_t pos, in
>          return error;
>      }
> 
> -    if (pos == 0 && size == 0) {
> -        DPRINTF("file is ready\n");
> -        if (s->bytes_xfer < s->xfer_limit) {
> -            DPRINTF("notifying client\n");
> -            migrate_fd_put_ready(s->migration_state);
> -        }
> -    }
> -
>      return size;
>  }
> 
> @@ -215,8 +207,15 @@ static void *buffered_file_thread(void *opaque)
>              /* usleep expects microseconds */
>              usleep((expire_time - current_time)*1000);
>          }
> -        buffered_put_buffer(s, NULL, 0, 0);
> +        buffered_flush(s);
> +
> +        DPRINTF("file is ready\n");
> +        if (s->bytes_xfer < s->xfer_limit) {
> +            DPRINTF("notifying client\n");
> +            migrate_fd_put_ready(s->migration_state);
> +        }
>      }
> +
>      g_free(s->buffer);
>      g_free(s);
>      return NULL;
> 

Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>

Patch

diff --git a/buffered_file.c b/buffered_file.c
index 22b973f..f4a788d 100644
--- a/buffered_file.c
+++ b/buffered_file.c
@@ -113,14 +113,6 @@  static int buffered_put_buffer(void *opaque, const uint8_t *buf, int64_t pos, in
         return error;
     }

-    if (pos == 0 && size == 0) {
-        DPRINTF("file is ready\n");
-        if (s->bytes_xfer < s->xfer_limit) {
-            DPRINTF("notifying client\n");
-            migrate_fd_put_ready(s->migration_state);
-        }
-    }
-
     return size;
 }

@@ -215,8 +207,15 @@  static void *buffered_file_thread(void *opaque)
             /* usleep expects microseconds */
             usleep((expire_time - current_time)*1000);
         }
-        buffered_put_buffer(s, NULL, 0, 0);
+        buffered_flush(s);
+
+        DPRINTF("file is ready\n");
+        if (s->bytes_xfer < s->xfer_limit) {
+            DPRINTF("notifying client\n");
+            migrate_fd_put_ready(s->migration_state);
+        }
     }
+
     g_free(s->buffer);
     g_free(s);
     return NULL;