WL#13782: InnoDB: Add dynamic config option to use fallocate() on Linux

Affects: Server-8.0   —   Status: Complete

The motivation is to make inserts faster for data loading.

InnoDB explicitly writes zeros to disk when creating new pages in a tablespace or 
when creating a new redo log file.

We take this conservative approach because fallocate() doesn't seem to be atomic 
in the sense that it guarantees that the allocation of space and updation of the 
file metadata in the file system will be atomic (handle power failure for example 
while executing fallocate). This is a problem because InnoDB currently assumes 
that a freshly created page will have zeroes (NUL) in it.

Introduce a dynamic variable: --innodb-extend-and-initialize

When this variable is not set we will not write zeros but use fallocate(2):

   http://man7.org/linux/man-pages/man2/fallocate.2.html

For additional safety write a redo log record before allocating new pages so that 
we can handle any errors if the newly created pages were not marked as zeroed out 
due to the fallocate problem described above. Additionally, we can zero out the 
page while processing the redo log record because it is guaranteed that the 
record will be reconstructible from any redo log records that follow the page 
create redo log record.