qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 30/41] qemu-file: fsync a writable stdio QEMUFile


From: Paolo Bonzini
Subject: [Qemu-devel] [PATCH 30/41] qemu-file: fsync a writable stdio QEMUFile
Date: Fri, 15 Feb 2013 18:47:02 +0100

This is what fd_close does.  Prepare for switching to a QEMUFile.

Signed-off-by: Paolo Bonzini <address@hidden>
---
 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;
     }
-- 
1.7.1





reply via email to

[Prev in Thread] Current Thread [Next in Thread]