summaryrefslogtreecommitdiffstats
path: root/block
diff options
context:
space:
mode:
authorMax Reitz <mreitz@redhat.com>2014-11-18 11:23:05 +0100
committerKevin Wolf <kwolf@redhat.com>2014-11-18 12:09:00 +0100
commit731de38052b245eab79e417aeac5e1dcebe6437f (patch)
tree20d6d63241962ab412c676feddabe8d6d00c4901 /block
parent39411cf3c316de0fe3cbb9585774bacfe3bd8efd (diff)
downloadhqemu-731de38052b245eab79e417aeac5e1dcebe6437f.zip
hqemu-731de38052b245eab79e417aeac5e1dcebe6437f.tar.gz
block/raw-posix: Only sync after successful preallocation
The loop which filled the file with zeroes may have been left early due to an error. In that case, the fsync() should be skipped. Signed-off-by: Max Reitz <mreitz@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'block')
-rw-r--r--block/raw-posix.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/block/raw-posix.c b/block/raw-posix.c
index e0e48c5..d106fc4 100644
--- a/block/raw-posix.c
+++ b/block/raw-posix.c
@@ -1453,7 +1453,9 @@ static int raw_create(const char *filename, QemuOpts *opts, Error **errp)
}
left -= result;
}
- fsync(fd);
+ if (result >= 0) {
+ fsync(fd);
+ }
g_free(buf);
break;
}
OpenPOWER on IntegriCloud