This patchset does I/Os in larger chunks, if the blocks are adjacent. More importantly, it returns the actual error from ->readpage for filesystems which use block_read_full_page(). Unless fscrypt returns an error, in which case it turns into EIO because it has to roundtrip through bi_status. I don't have a system with fscrypt enabled, so I'd appreciate some testing from the fscrypt people. Matthew Wilcox (Oracle) (6): block: Add blk_completion fs: Return error from block_read_full_page fs: Convert block_read_full_page to be synchronous fs: Hoist fscrypt decryption to bio completion handler fs: Turn decrypt_bh into decrypt_bio fs: Convert block_read_full_page to be synchronous with fscrypt enabled block/blk-core.c | 61 +++++++++ fs/buffer.c | 304 ++++++++++++++++++++++---------------------- include/linux/bio.h | 11 ++ 3 files changed, 226 insertions(+), 150 deletions(-) -- 2.28.0