This series consolidates DIO writes into a single code path via fuse_cache_write_iter/generic_file_direct_write. Before it was only used for O_DIRECT and when writeback cache was not enabled. For server/daemon dio enforcement (FOPEN_DIRECT_IO) another code path was used before, but I _think_ that is not needed and just IOCB_DIRECT needs to be set/enforced. When writeback-cache was enabled another code path was used, with a fallback to write-through - for direct IO that should not be needed either. So far O_DIRECT through fuse_cache_write_iter also took an exclusive lock, this should not be needed either, at least when server side sets FOPEN_PARALLEL_DIRECT_WRITES. v2: The entire v1 approach to route DIO writes through fuse_direct_write_iter was turned around and fuse_direct_write_iter is removed instead and all DIO writes are now routed through fuse_cache_write_iter Cc: Hao Xu <howeyxu@xxxxxxxxxxx> Cc: Christoph Hellwig <hch@xxxxxxxxxxxxx> Cc: Miklos Szeredi <miklos@xxxxxxxxxx> Cc: Dharmendra Singh <dsingh@xxxxxxx> Cc: linux-fsdevel@xxxxxxxxxxxxxxx Bernd Schubert (5): fuse: direct IO can use the write-through code path fuse: Create helper function if DIO write needs exclusive lock fuse: Allow parallel direct writes for O_DIRECT [RFC] fuse: Set and use IOCB_DIRECT when FOPEN_DIRECT_IO is set fuse: Remove page flush/invaliation in fuse_direct_io fs/fuse/file.c | 122 ++++++++++++++++-------------------------------- fs/fuse/xattr.c | 8 ++-- 2 files changed, 43 insertions(+), 87 deletions(-) -- 2.39.2