You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by zw...@apache.org on 2014/01/27 21:41:34 UTC
[04/28] git commit: TS-2305: fall back to ftruncate on
posix_fallocate failure
TS-2305: fall back to ftruncate on posix_fallocate failure
Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/813d3e1a
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/813d3e1a
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/813d3e1a
Branch: refs/heads/5.0.x
Commit: 813d3e1a261c46ff18e7837636b7b4ce5f931a2c
Parents: 207df86
Author: James Peach <jp...@apache.org>
Authored: Mon Jan 20 10:52:46 2014 -0800
Committer: James Peach <jp...@apache.org>
Committed: Tue Jan 21 15:53:03 2014 -0800
----------------------------------------------------------------------
CHANGES | 2 ++
lib/ts/ink_file.cc | 11 ++++++++---
2 files changed, 10 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/813d3e1a/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 5e1075e..c73e4c3 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,8 @@
-*- coding: utf-8 -*-
Changes with Apache Traffic Server 4.2.0
+ *) [TS-2305] Fall back to ftruncate if posix_fallocate fails.
+
*) [TS-2504] Support OpenSSL installations that use the lib64 directory.
*) [TS-799] Have AdminClient.pm created from .in file.
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/813d3e1a/lib/ts/ink_file.cc
----------------------------------------------------------------------
diff --git a/lib/ts/ink_file.cc b/lib/ts/ink_file.cc
index 53d064f..41891f1 100644
--- a/lib/ts/ink_file.cc
+++ b/lib/ts/ink_file.cc
@@ -344,14 +344,19 @@ ink_file_fd_zerofill(int fd, off_t size)
return errno;
}
+ // ZFS does not implement posix_fallocate() and fails with EINVAL. As a general workaround,
+ // just fall back to ftrucate if the preallocation fails.
#if HAVE_POSIX_FALLOCATE
- return posix_fallocate(fd, 0, size);
-#else
+ if (posix_fallocate(fd, 0, size) == 0) {
+ return 0;
+ }
+#endif
+
if (ftruncate(fd, size) < 0) {
return errno;
}
+
return 0;
-#endif
}
bool