mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
fuse: Invalidate the page cache after FOPEN_DIRECT_IO write
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>
This commit is contained in:
parent
47781ee71f
commit
b359af8275
|
|
@ -1693,6 +1693,15 @@ ssize_t fuse_direct_io(struct fuse_io_priv *io, struct iov_iter *iter,
|
||||||
if (res > 0)
|
if (res > 0)
|
||||||
*ppos = pos;
|
*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;
|
return res > 0 ? res : err;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(fuse_direct_io);
|
EXPORT_SYMBOL_GPL(fuse_direct_io);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user