On Mon, Feb 08, 2010 at 04:59:31PM +0100, Jiri Denemark wrote:
When creating preallocated large raw files opening them with O_DSYNC
prevents long delays in reading because cache pages can be immediately
reused without writing them on a disk first.
Signed-off-by: Jiri Denemark <jdenemar(a)redhat.com>
---
src/storage/storage_backend.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/src/storage/storage_backend.c b/src/storage/storage_backend.c
index e79294a..8aab9ab 100644
--- a/src/storage/storage_backend.c
+++ b/src/storage/storage_backend.c
@@ -301,7 +301,7 @@ virStorageBackendCreateRaw(virConnectPtr conn,
goto cleanup;
}
- if ((fd = open(vol->target.path, O_RDWR | O_EXCL)) < 0) {
+ if ((fd = open(vol->target.path, O_RDWR | O_EXCL | O_DSYNC)) < 0) {
virReportSystemError(conn, errno,
_("cannot open new path '%s'"),
vol->target.path);
--
ACK, O_DSYNC isn't ideal, but since there are soo many ways in which the
file ends up being written, it is the simplest option to get what we need
Daniel
--
|: Red Hat, Engineering, London -o-
http://people.redhat.com/berrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org -o-
http://ovirt.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|