mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 02:50:49 +09:00
fuse: Invalidate the page cache after FOPEN_DIRECT_IO write
[ Upstream commit b359af8275a982a458e8df6c6beab1415be1f795 ] generic_file_direct_write() also does this and has a large comment about. Reproducer here is xfstest's generic/209, which is exactly to have competing DIO write and cached IO read. Signed-off-by: Bernd Schubert <bschubert@ddn.com> Signed-off-by: Miklos Szeredi <mszeredi@redhat.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
6c6a81d86a
commit
b39fa02183
@@ -1537,6 +1537,15 @@ ssize_t fuse_direct_io(struct fuse_io_priv *io, struct iov_iter *iter,
|
||||
if (res > 0)
|
||||
*ppos = pos;
|
||||
|
||||
if (res > 0 && write && fopen_direct_io) {
|
||||
/*
|
||||
* As in generic_file_direct_write(), invalidate after the
|
||||
* write, to invalidate read-ahead cache that may have competed
|
||||
* with the write.
|
||||
*/
|
||||
invalidate_inode_pages2_range(mapping, idx_from, idx_to);
|
||||
}
|
||||
|
||||
return res > 0 ? res : err;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(fuse_direct_io);
|
||||
|
||||
Reference in New Issue
Block a user