The blocks allocation is decided by the kernel. When writing new data to a file, if the block is not enough, the kernel will select a new block from the device that is contiguous with file's last block.
If the selected block has been used by other file. The kernel can only select a non-contiguous block.
My questions is that:How can we create a file, the device block are non-contguous?