> that update of the timestamp and i_size needs to be moved to an I/O > completion handler. We do this already to convert unwritten requests > to be written in fs/ext4/page_io.c. See ext4_put_io_end_defer() in > fs/ext4/page_io.c; if we need to convert unwritten extents the > EXT4_IO_END_UNWRITTEN flag is set, and ext4_add_complete_io() tacks > the io_end queue onto a workqueue. This infrastructure could be made > more general so that it can do other work after the I/O has been > completed, including the i_size update. That's what we do for the i_size update in XFS.