Another split off from the "block optimisation round" series focusing on fops.c. It addresses Cristoph's review, the main change is setting bvec directly instead of passing a "hint" to bio_iov_iter_get_pages() in 3/5, and a prep patch 2/5. I don't find a good way how to deduplicate __blkdev_direct_IO_async(), there are small differences in implementation. If that's fine I'd suggest to do it afterwards, anyway I want to brush up __blkdev_direct_IO(), e.g. remove effectively unnecessary DIO_MULTI_BIO flag. Performance stays the same, solely 1/5 gives ~4.5 -> 4.7 MIOPS, plus 1-2% from 3/5. Pavel Begunkov (5): block: add single bio async direct IO helper block: refactor bio_iov_bvec_set() block: avoid extra iter advance with async iocb block: kill unused polling bits in __blkdev_direct_IO() block: add async version of bio_set_polled block/bio.c | 37 ++++++-------- block/fops.c | 116 ++++++++++++++++++++++++++++++++++++-------- include/linux/bio.h | 6 +++ 3 files changed, 116 insertions(+), 43 deletions(-) -- 2.33.1