Hello, I am dealing with a problem where in case that buffered read happens to land between direct IO submission and completion page cache will contain the stale data, while the new data will be on disk. We are trying to avoid such problems by calling invalidate_inode_pages2_range() before and after direct_IO() in generic_file_direct_write() however that does not seem to be enough, because nothing prevents buffered reads to come in afterwards populating page cache. Aside from the fact that mixing direct and buffered IO is not such a good idea, we end up with page cache showing different content than what's on disk even after aio dio completes which seems very strange to me. I can reproduce this on ext4 as well as xfs and kernel version going back at least to v3.10 which leads me to believe that this might actually be known behaviour ? I was trying to avoid that by moving invalidate_inode_pages2_range() to after the aio dio completion into dio_complete (or file system ->end_io callback) but it has it's own problems - sometimes this appears to be called from atomic context and I do not really see why... Do you have any comments on this ? Is it actually expected behaviour ? Thanks! -Lukas