Patchwork [01/12] migration: unify stdio-based QEMUFile operations

login
register
mail settings
Submitter Paolo Bonzini
Date Oct. 18, 2012, 10:22 a.m.
Message ID <1350555758-29988-2-git-send-email-pbonzini@redhat.com>
Download mbox | patch
Permalink /patch/192266/
State New
Headers show

Comments

Paolo Bonzini - Oct. 18, 2012, 10:22 a.m.
Now that qemu_fseek does not exist anymore, there is no reason to do
an fseek before fread/fwrite when operating on an stdio file.
Thus, unify the get/put_buffer callbacks used by qemu_fopen
with those used for pipes.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 savevm.c | 19 ++-----------------
 1 file modificato, 2 inserzioni(+), 17 rimozioni(-)
Orit Wasserman - Oct. 28, 2012, 11:20 a.m.
On 10/18/2012 12:22 PM, Paolo Bonzini wrote:
> Now that qemu_fseek does not exist anymore, there is no reason to do
> an fseek before fread/fwrite when operating on an stdio file.
> Thus, unify the get/put_buffer callbacks used by qemu_fopen
> with those used for pipes.
> 
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  savevm.c | 19 ++-----------------
>  1 file modificato, 2 inserzioni(+), 17 rimozioni(-)
> 
> diff --git a/savevm.c b/savevm.c
> index b080d37..7068390 100644
> --- a/savevm.c
> +++ b/savevm.c
> @@ -342,21 +342,6 @@ QEMUFile *qemu_fopen_socket(int fd)
>      return s->file;
>  }
>  
> -static int file_put_buffer(void *opaque, const uint8_t *buf,
> -                            int64_t pos, int size)
> -{
> -    QEMUFileStdio *s = opaque;
> -    fseek(s->stdio_file, pos, SEEK_SET);
> -    return fwrite(buf, 1, size, s->stdio_file);
> -}
> -
> -static int file_get_buffer(void *opaque, uint8_t *buf, int64_t pos, int size)
> -{
> -    QEMUFileStdio *s = opaque;
> -    fseek(s->stdio_file, pos, SEEK_SET);
> -    return fread(buf, 1, size, s->stdio_file);
> -}
> -
>  QEMUFile *qemu_fopen(const char *filename, const char *mode)
>  {
>      QEMUFileStdio *s;
> @@ -375,10 +360,10 @@ QEMUFile *qemu_fopen(const char *filename, const char *mode)
>          goto fail;
>      
>      if(mode[0] == 'w') {
> -        s->file = qemu_fopen_ops(s, file_put_buffer, NULL, stdio_fclose, 
> +        s->file = qemu_fopen_ops(s, stdio_put_buffer, NULL, stdio_fclose,
>  				 NULL, NULL, NULL);
>      } else {
> -        s->file = qemu_fopen_ops(s, NULL, file_get_buffer, stdio_fclose, 
> +        s->file = qemu_fopen_ops(s, NULL, stdio_get_buffer, stdio_fclose,
>  			       NULL, NULL, NULL);
>      }
>      return s->file;
> 
Reviewed-by: Orit Wasserman <owasserm@redhat.com>
Juan Quintela - Oct. 30, 2012, 12:19 p.m.
Paolo Bonzini <pbonzini@redhat.com> wrote:
> Now that qemu_fseek does not exist anymore, there is no reason to do
> an fseek before fread/fwrite when operating on an stdio file.
> Thus, unify the get/put_buffer callbacks used by qemu_fopen
> with those used for pipes.

As far as I know, the pos parameter was only used by qcow2 to store the
snapshots there.

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

Reviewed-by: Juan Quintela <quintela@redhat.com>

Patch

diff --git a/savevm.c b/savevm.c
index b080d37..7068390 100644
--- a/savevm.c
+++ b/savevm.c
@@ -342,21 +342,6 @@  QEMUFile *qemu_fopen_socket(int fd)
     return s->file;
 }
 
-static int file_put_buffer(void *opaque, const uint8_t *buf,
-                            int64_t pos, int size)
-{
-    QEMUFileStdio *s = opaque;
-    fseek(s->stdio_file, pos, SEEK_SET);
-    return fwrite(buf, 1, size, s->stdio_file);
-}
-
-static int file_get_buffer(void *opaque, uint8_t *buf, int64_t pos, int size)
-{
-    QEMUFileStdio *s = opaque;
-    fseek(s->stdio_file, pos, SEEK_SET);
-    return fread(buf, 1, size, s->stdio_file);
-}
-
 QEMUFile *qemu_fopen(const char *filename, const char *mode)
 {
     QEMUFileStdio *s;
@@ -375,10 +360,10 @@  QEMUFile *qemu_fopen(const char *filename, const char *mode)
         goto fail;
     
     if(mode[0] == 'w') {
-        s->file = qemu_fopen_ops(s, file_put_buffer, NULL, stdio_fclose, 
+        s->file = qemu_fopen_ops(s, stdio_put_buffer, NULL, stdio_fclose,
 				 NULL, NULL, NULL);
     } else {
-        s->file = qemu_fopen_ops(s, NULL, file_get_buffer, stdio_fclose, 
+        s->file = qemu_fopen_ops(s, NULL, stdio_get_buffer, stdio_fclose,
 			       NULL, NULL, NULL);
     }
     return s->file;