From @markbenvenuto:
I hit errors in test/format when I disabled fallocate in Windows. To try to narrow this down, I setup the same repro on Linux to see if it is platform specific and I hit the same error on my Linux machine.
Fundamentally, either
1. WiredTiger must not ask fallocate possible truncate the file.
2. The Windows port layer must either not implement fallocate or track the end of the file itself. For Windows fallocate, either it calls SetEndOfFile (which could truncate), or WriteFile (it would have to write something). As we discussed, I cannot think of way to ensure WriteFile, and SendEndOfFile do not race without locking assuming that WT uses __wt_write to grow the file at times.
[1428707407:255984][25414:0x7f865619a700], t, file:wt, session.verify: file ranges never verified: 7122 t: session.verify: file:wt: post-bulk verify: WT_ERROR: non-specific WiredTiger error diff --git a/src/os_posix/os_fallocate.c b/src/os_posix/os_fallocate.c index 1423747..568210c 100644 --- a/src/os_posix/os_fallocate.c +++ b/src/os_posix/os_fallocate.c @@ -29,14 +29,6 @@ __wt_fallocate_config(WT_SESSION_IMPL *session, WT_FH *fh) * start off requiring locking, we'll relax that requirement once we * know which system calls work with the handle's underlying filesystem. */ -#if defined(HAVE_FALLOCATE) || defined(HAVE_POSIX_FALLOCATE) - fh->fallocate_available = WT_FALLOCATE_AVAILABLE; - fh->fallocate_requires_locking = 1; -#endif -#if defined(__linux__) && defined(SYS_fallocate) - fh->fallocate_available = WT_FALLOCATE_AVAILABLE; - fh->fallocate_requires_locking = 1; -#endif }
Configuration:
./configure CFLAGS="-g -Og" -disable-shared --with-berkeleydb=/usr/include/libdb
gcc 4.9.2
Linux 3.19.1-201.fc21.x86_64
############################################ # RUN PARAMETERS ############################################ abort=0 auto_throttle=1 firstfit=0 bitcnt=6 bloom=1 bloom_bit_count=40 bloom_hash_count=18 bloom_oldest=0 cache=23 checkpoints=1 checksum=uncompressed chunk_size=2 compaction=0 compression=none data_extend=1 data_source=file delete_pct=0 dictionary=0 evict_max=5 file_type=variable-length column-store backups=0 huffman_key=0 huffman_value=0 insert_pct=19 internal_key_truncation=1 internal_page_max=9 isolation=snapshot key_gap=2 key_max=43 key_min=13 leak_memory=0 leaf_page_max=9 logging=1 logging_archive=1 logging_prealloc=0 lsm_worker_threads=4 merge_max=11 mmap=1 ops=626512 prefix_compression=1 prefix_compression_min=7 repeat_data_pct=86 reverse=0 rows=270388 runs=0 split_pct=84 statistics=0 statistics_server=0 threads=3 timer=20 value_max=3537 value_min=17 wiredtiger_config= write_pct=0 ############################################
- is depended on by
-
SERVER-18199 WiredTiger changes for MongoDB 3.1.2
- Closed