mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-24 14:45:24 +00:00
Use fsync() at the end of file allocation instead of O_DSYNC
Instead of opening storage file with O_DSYNC, make sure data are written to a disk only before we claim allocation has finished.
This commit is contained in:
parent
c78c9f5a9b
commit
e3c36a2575
@ -331,6 +331,13 @@ static int createRawFileOpHook(int fd, void *data) {
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
|
||||
if (fsync(fd) < 0) {
|
||||
ret = errno;
|
||||
virReportSystemError(errno, _("cannot sync data to file '%s'"),
|
||||
hdata->vol->target.path);
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
|
||||
cleanup:
|
||||
@ -359,7 +366,7 @@ virStorageBackendCreateRaw(virConnectPtr conn ATTRIBUTE_UNUSED,
|
||||
gid_t gid = (vol->target.perms.gid == -1) ? getgid() : vol->target.perms.gid;
|
||||
|
||||
if ((createstat = virFileOperation(vol->target.path,
|
||||
O_RDWR | O_CREAT | O_EXCL | O_DSYNC,
|
||||
O_RDWR | O_CREAT | O_EXCL,
|
||||
vol->target.perms.mode, uid, gid,
|
||||
createRawFileOpHook, &hdata,
|
||||
VIR_FILE_OP_FORCE_PERMS |
|
||||
|
Loading…
Reference in New Issue
Block a user