Merge #17988: [0.19] Final backports for 0.19.1

daf2fff236 test: add missing #include to fix compiler errors (Karl-Johan Alm)
c8ad23c529 bug-fix macos: give free bytes to F_PREALLOCATE (Karl-Johan Alm)

Pull request description:

  We're about ready to do a [0.19.1 release](https://github.com/bitcoin/bitcoin/milestone/44); so I've opened this to collect the last remaining backports.

  If there's something that's been missed / or isn't tagged ["Needs backport (0.19)"](https://github.com/bitcoin/bitcoin/issues?q=is%3Aopen+label%3A%22Needs+backport+%280.19%29%22) that you think should be, please comment.

  Currently backports:
  * #17887 - bug-fix macos: give free bytes to F_PREALLOCATE
  * #17980 - test: add missing #include to fix compiler errors

ACKs for top commit:
  laanwj:
    ACK daf2fff236

Tree-SHA512: 8438f992d0c39315a4da4c3f8ab5c92acefada4b0ba5a5cec3775dea2541492d386bf4e7c9e76e1494a6d4cf16a9205287d27ffd23d9c3056f213d733605eeee
This commit is contained in:
Wladimir J. van der Laan 2020-01-23 20:42:58 +01:00
commit 178a834687
No known key found for this signature in database
GPG key ID: 1E4AED62986CD25D
2 changed files with 5 additions and 2 deletions

View file

@ -7,6 +7,7 @@
#include <test/setup_common.h> #include <test/setup_common.h>
#include <random.h> #include <random.h>
#include <thread> #include <thread>
#include <deque>
/** Test Suite for CuckooCache /** Test Suite for CuckooCache
* *

View file

@ -1088,17 +1088,19 @@ void AllocateFileRange(FILE *file, unsigned int offset, unsigned int length) {
SetEndOfFile(hFile); SetEndOfFile(hFile);
#elif defined(MAC_OSX) #elif defined(MAC_OSX)
// OSX specific version // OSX specific version
// NOTE: Contrary to other OS versions, the OSX version assumes that
// NOTE: offset is the size of the file.
fstore_t fst; fstore_t fst;
fst.fst_flags = F_ALLOCATECONTIG; fst.fst_flags = F_ALLOCATECONTIG;
fst.fst_posmode = F_PEOFPOSMODE; fst.fst_posmode = F_PEOFPOSMODE;
fst.fst_offset = 0; fst.fst_offset = 0;
fst.fst_length = (off_t)offset + length; fst.fst_length = length; // mac os fst_length takes the # of free bytes to allocate, not desired file size
fst.fst_bytesalloc = 0; fst.fst_bytesalloc = 0;
if (fcntl(fileno(file), F_PREALLOCATE, &fst) == -1) { if (fcntl(fileno(file), F_PREALLOCATE, &fst) == -1) {
fst.fst_flags = F_ALLOCATEALL; fst.fst_flags = F_ALLOCATEALL;
fcntl(fileno(file), F_PREALLOCATE, &fst); fcntl(fileno(file), F_PREALLOCATE, &fst);
} }
ftruncate(fileno(file), fst.fst_length); ftruncate(fileno(file), static_cast<off_t>(offset) + length);
#else #else
#if defined(__linux__) #if defined(__linux__)
// Version using posix_fallocate // Version using posix_fallocate