Guarding extra fallocate call with TRAVIS because its not working pro…
Summary: …perly on travis There is some old code in PosixWritableFile::Close(), which truncates the file to the measured size and then does an extra fallocate with KEEP_SIZE. This is commented as a failsafe because in some cases ftruncate doesn't do the right job (I don't know of an instance of this btw). However doing an fallocate with KEEP_SIZE should not increase the file size. However on Travis Worker which is Docker (likely AUFS ) its not working. There are comments on web that show that the AUFS author had initially not implemented fallocate, and then did it later. So not sure what is the quality of the implementation. Closes https://github.com/facebook/rocksdb/pull/1765 Differential Revision: D4401340 Pulled By: anirbanr-fb fbshipit-source-id: e2d8100
This commit is contained in:
parent
9f246298e2
commit
62384ebe9c
@ -737,7 +737,7 @@ Status PosixWritableFile::Close() {
|
|||||||
// but it will be nice to log these errors.
|
// but it will be nice to log these errors.
|
||||||
int dummy __attribute__((unused));
|
int dummy __attribute__((unused));
|
||||||
dummy = ftruncate(fd_, filesize_);
|
dummy = ftruncate(fd_, filesize_);
|
||||||
#ifdef ROCKSDB_FALLOCATE_PRESENT
|
#if defined(ROCKSDB_FALLOCATE_PRESENT) && !defined(TRAVIS)
|
||||||
// in some file systems, ftruncate only trims trailing space if the
|
// in some file systems, ftruncate only trims trailing space if the
|
||||||
// new file size is smaller than the current size. Calling fallocate
|
// new file size is smaller than the current size. Calling fallocate
|
||||||
// with FALLOC_FL_PUNCH_HOLE flag to explicitly release these unused
|
// with FALLOC_FL_PUNCH_HOLE flag to explicitly release these unused
|
||||||
@ -749,6 +749,11 @@ Status PosixWritableFile::Close() {
|
|||||||
// tmpfs (since Linux 3.5)
|
// tmpfs (since Linux 3.5)
|
||||||
// We ignore error since failure of this operation does not affect
|
// We ignore error since failure of this operation does not affect
|
||||||
// correctness.
|
// correctness.
|
||||||
|
// TRAVIS - this code does not work on TRAVIS filesystems.
|
||||||
|
// the FALLOC_FL_KEEP_SIZE option is expected to not change the size
|
||||||
|
// of the file, but it does. Simple strace report will show that.
|
||||||
|
// While we work with Travis-CI team to figure out if this is a
|
||||||
|
// quirk of Docker/AUFS, we will comment this out.
|
||||||
IOSTATS_TIMER_GUARD(allocate_nanos);
|
IOSTATS_TIMER_GUARD(allocate_nanos);
|
||||||
if (allow_fallocate_) {
|
if (allow_fallocate_) {
|
||||||
fallocate(fd_, FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE, filesize_,
|
fallocate(fd_, FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE, filesize_,
|
||||||
|
Loading…
Reference in New Issue
Block a user