mirror of
https://github.com/ceph/ceph
synced 2025-03-25 11:48:05 +00:00
filejournal: add journal pre-allocate for osx
Signed-off-by: Noah Watkins <noahwatkins@gmail.com>
This commit is contained in:
parent
35eaa66da0
commit
cfb82a1759
@ -541,6 +541,7 @@ AC_CHECK_FUNC([fallocate],
|
||||
|
||||
|
||||
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])
|
||||
|
@ -11,6 +11,7 @@
|
||||
* Foundation. See file COPYING.
|
||||
*
|
||||
*/
|
||||
#include "acconfig.h"
|
||||
|
||||
#include "common/debug.h"
|
||||
#include "common/errno.h"
|
||||
@ -298,6 +299,7 @@ int FileJournal::_open_file(int64_t oldsize, blksize_t blksize,
|
||||
<< 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 "
|
||||
@ -305,6 +307,24 @@ int FileJournal::_open_file(int64_t oldsize, blksize_t blksize,
|
||||
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;
|
||||
|
Loading…
Reference in New Issue
Block a user