AC_CHECK_HEADERS([arpa/nameser_compat.h])
+AC_CHECK_FUNCS([posix_fallocate])
AC_CHECK_HEADERS([sys/prctl.h])
AC_CHECK_FUNCS([prctl])
AC_CHECK_FUNCS([pipe2])
* Foundation. See file COPYING.
*
*/
+#include "acconfig.h"
#include "common/debug.h"
#include "common/errno.h"
<< newsize << " bytes: " << cpp_strerror(err) << dendl;
return -err;
}
+#ifdef HAVE_POSIX_FALLOCATE
ret = ::posix_fallocate(fd, 0, newsize);
if (ret) {
derr << "FileJournal::_open_file : unable to preallocation journal to "
return -ret;
}
max_size = newsize;
+#elif defined(__APPLE__)
+ fstore_t store;
+ store.fst_flags = F_ALLOCATECONTIG;
+ store.fst_posmode = F_PEOFPOSMODE;
+ store.fst_offset = 0;
+ store.fst_length = newsize;
+
+ ret = ::fcntl(fd, F_PREALLOCATE, &store);
+ if (ret == -1) {
+ ret = -errno;
+ derr << "FileJournal::_open_file : unable to preallocation journal to "
+ << newsize << " bytes: " << cpp_strerror(ret) << dendl;
+ return ret;
+ }
+ max_size = newsize;
+#else
+# error "Journal pre-allocation not supported on platform."
+#endif
}
else {
max_size = oldsize;