libfallocate provides an interface for applications to tell filesystems
about the size of to-be-written files, so the filesystem can do a better
job in taking allocation decisions to avoid fragmentation.
libfallocate provides a wrapper for the fallocate() syscall in case your
glibc (<2.10) does not have it yet. It also provides linux_fallocate()
which will attempt the space reservation ioctl that xfs and ocfs2
provide in case fallocate() did not succeed.
It has an additional richer interface fallocate_with_fallback() that
allows you to instruct it to fallback to do preallocation by zeroing
things out (like posix_fallocate()) or to extend the file size by a sparse
write (like a successful fallocate() with mode==0 would have done).