Currently the PreAllocate() implementations in env_posix.cc will warn on failure while returning Status::OK. In the abstract it's true that preallocation can be viewed as an optimization, and that its success or failure shouldn't impact correctness. However, prominent parts of Kudu that use preallocation do depend on its correctness:
- The hole punch test will preallocate a file before punching a hole in it. If preallocation fails, the error will manifest in a different check performed by the test, which can obscure the true root cause of the error.
- The disk space reservation feature in the log block manager assumes that if preallocation is successful, the number of bytes on disk has grown accordingly. If that's not correct, the reservation feature may not behave correctly.
In the past, el6 systems did not support preallocation, however that changed by el6.4. Given that Kudu's minimum el6 system requirement is el6.4, I think all supported platforms provide preallocation, so we can start treating preallocation failures as real errors instead of warnings.