Hello all, In loop.c do_req_filebacked() for REQ_OP_FLUSH, lo_req_flush() is called: it does not appear that lo_req_flush() does anything to make sure ki_complete has been called for pending work, it just calls vfs_fsync(). Is this a consistency problem? For example, if the loop driver has queued async kiocb's to the filesystem via .read_iter/.write_iter, is it the filesystem's responsibility to complete that work before returning from vfs_sync() or is it possible that the vfs_sync() completes before ->ki_complete() is called? Relatedly, does vfs_fsync() do anything for direct IO? Ultimately f_op->fsync() is called so maybe the FS is told to commit its structures like sparse allocations that may not be on disk yet. -- Eric Wheeler