Jens tried out a similar series with some not yet sent additions: 8.2-8.3 MIOPS -> ~9 MIOPS, or 8-10%. 12/16 is bulky, but it nicely drives the numbers. Moreover, with it we can rid of some not used anymore optimisations in __blkdev_direct_IO() because it awlays serve multiple bios. E.g. no need in conditional referencing with DIO_MULTI_BIO, and _probably_ can be converted to chained bio. Pavel Begunkov (16): block: turn macro helpers into inline functions block: convert leftovers to bdev_get_queue block: optimise req_bio_endio() block: don't bloat enter_queue with percpu_ref block: inline a part of bio_release_pages() block: clean up blk_mq_submit_bio() merging blocK: move plug flush functions to blk-mq.c block: optimise blk_flush_plug_list block: optimise boundary blkdev_read_iter's checks block: optimise blkdev_bio_end_io() block: add optimised version bio_set_dev() block: add single bio async direct IO helper block: add async version of bio_set_polled block: skip advance when async and not needed block: optimise blk_may_split for normal rw block: optimise submit_bio_checks for normal rw block/bio.c | 20 +++---- block/blk-core.c | 105 ++++++++++++++-------------------- block/blk-merge.c | 2 +- block/blk-mq-sched.c | 2 +- block/blk-mq-sched.h | 12 +--- block/blk-mq.c | 64 ++++++++++++++------- block/blk-mq.h | 1 - block/blk.h | 20 ++++--- block/fops.c | 125 ++++++++++++++++++++++++++++++++++------- include/linux/bio.h | 60 ++++++++++++++------ include/linux/blk-mq.h | 2 - 11 files changed, 259 insertions(+), 154 deletions(-) -- 2.33.1