When doing DIO on an encrypted node, we need to truncate the page cache in the range being written to, otherwise the cache will include invalid data. Signed-off-by: Luís Henriques <lhenriques@xxxxxxx> --- fs/ceph/file.c | 5 +++++ 1 file changed, 5 insertions(+) This patch should fix generic/647 fstest when run with test_dummy_encryption. diff --git a/fs/ceph/file.c b/fs/ceph/file.c index 5072570c2203..0f31c4d352a4 100644 --- a/fs/ceph/file.c +++ b/fs/ceph/file.c @@ -1895,6 +1895,11 @@ ceph_sync_write(struct kiocb *iocb, struct iov_iter *from, loff_t pos, req->r_inode = inode; req->r_mtime = mtime; + if (IS_ENCRYPTED(inode) && (iocb->ki_flags & IOCB_DIRECT)) + truncate_inode_pages_range( + inode->i_mapping, write_pos, + PAGE_ALIGN(write_pos + write_len) - 1); + /* Set up the assertion */ if (rmw) { /*