diff options
author | Max Reitz <mreitz@redhat.com> | 2014-11-18 11:23:05 +0100 |
---|---|---|
committer | Kevin Wolf <kwolf@redhat.com> | 2014-11-18 12:09:00 +0100 |
commit | 731de38052b245eab79e417aeac5e1dcebe6437f (patch) | |
tree | 20d6d63241962ab412c676feddabe8d6d00c4901 /block/raw-posix.c | |
parent | 39411cf3c316de0fe3cbb9585774bacfe3bd8efd (diff) | |
download | qemu-731de38052b245eab79e417aeac5e1dcebe6437f.zip qemu-731de38052b245eab79e417aeac5e1dcebe6437f.tar.gz qemu-731de38052b245eab79e417aeac5e1dcebe6437f.tar.bz2 |
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/raw-posix.c')
-rw-r--r-- | block/raw-posix.c | 4 |
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; } |