Message ID | 1360950433-17106-31-git-send-email-pbonzini@redhat.com |
---|---|
State | New |
Headers | show |
On 02/15/2013 07:47 PM, Paolo Bonzini wrote: > This is what fd_close does. Prepare for switching to a QEMUFile. > > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > --- > savevm.c | 18 ++++++++++++++++++ > 1 files changed, 18 insertions(+), 0 deletions(-) > > diff --git a/savevm.c b/savevm.c > index d7c2559..261d17a 100644 > --- a/savevm.c > +++ b/savevm.c > @@ -256,6 +256,24 @@ static int stdio_fclose(void *opaque) > { > QEMUFileStdio *s = opaque; > int ret = 0; > + > + if (s->file->ops->put_buffer) { > + int fd = fileno(s->stdio_file); > + struct stat st; > + > + ret = fstat(fd, &st); > + if (ret == 0 && S_ISREG(st.st_mode)) { > + /* > + * If the file handle is a regular file make sure the > + * data is flushed to disk before signaling success. > + */ > + ret = fsync(fd); > + if (ret != 0) { > + ret = -errno; > + return ret; > + } > + } > + } > if (fclose(s->stdio_file) == EOF) { > ret = -errno; > } > Reviewed-by: Orit Wasserman <owasserm@redhat.com>
Paolo Bonzini <pbonzini@redhat.com> wrote: > This is what fd_close does. Prepare for switching to a QEMUFile. > > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Juan Quintela <quintela@redhat.com>
diff --git a/savevm.c b/savevm.c index d7c2559..261d17a 100644 --- a/savevm.c +++ b/savevm.c @@ -256,6 +256,24 @@ static int stdio_fclose(void *opaque) { QEMUFileStdio *s = opaque; int ret = 0; + + if (s->file->ops->put_buffer) { + int fd = fileno(s->stdio_file); + struct stat st; + + ret = fstat(fd, &st); + if (ret == 0 && S_ISREG(st.st_mode)) { + /* + * If the file handle is a regular file make sure the + * data is flushed to disk before signaling success. + */ + ret = fsync(fd); + if (ret != 0) { + ret = -errno; + return ret; + } + } + } if (fclose(s->stdio_file) == EOF) { ret = -errno; }
This is what fd_close does. Prepare for switching to a QEMUFile. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> --- savevm.c | 18 ++++++++++++++++++ 1 files changed, 18 insertions(+), 0 deletions(-)