So I was looking at the ext4 code to see how hard it would be to add a function that would take a struct inode *, and make sure that all of the pages in the page cache had been allocated a physical block on disk (but not necessarily writing the I/O to disk). The idea would be to do this on close if the file had been truncated or opened with O_TRUNC, and to also call this function if the inode had been renamed and in the process a destination inode was freed. That way if we have data=ordered, the blocks would be allocated, and at the next commit, we would force the data blocks to disk. While I was looking at the code, it looks to me like we are currently only allocating a page at a time; ext4_da_writepages() may end up allocating a number of pages, but it's doing it one page at a time, not an extent at a time. So if the filesystem blocksize is 4k (and the page size is 4k), the only time we will ever call the mballoc with an allocation request greater than 1 is in the fallocate() system call handler. This seems... non-optimal. Am I missing something? - Ted -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html