About the diskio.sparse_files option: I understood from an old wine bug report that in windows sparse files are opt-in. Creating a file and also writing the last byte pre-allocates the file fully and truly (enough blocks are reserved). However in ext3 and similar filesystems using sparse files is default and the only way to claim all required blocks seems to be by fully writing out the whole file with zeros.