Some of these are optimizations, the latter part is prep work for supporting polling with aio. Patches against my for-4.21/block branch. These patches can also be found in my mq-perf branch, though there are other patches sitting on top of this series (notably aio polling, as mentioned). Changes since v1: - Improve nvme irq disabling for polled IO - Fix barriers in the ordered wakeup for polled O_DIRECT - Add patch to allow polling to find any command that is done - Add patch to control whether polling spins or not - Have async O_DIRECT mark a bio as pollable - Don't plug for polling block/blk-cgroup.c | 8 +-- block/blk-core.c | 20 ++++---- block/blk-flush.c | 3 +- block/blk-mq-debugfs.c | 2 +- block/blk-mq.c | 105 +++++++++++++++++++++----------------- block/blk-mq.h | 12 ++--- block/blk-rq-qos.c | 90 +++++++++----------------------- block/blk-rq-qos.h | 35 ++++++++++--- block/blk-softirq.c | 4 +- block/blk-sysfs.c | 18 +++---- block/blk-wbt.c | 2 +- block/elevator.c | 9 ++-- block/genhd.c | 8 +-- drivers/md/dm-table.c | 2 +- drivers/nvme/host/multipath.c | 6 +-- drivers/nvme/host/pci.c | 45 +++++++++------- drivers/nvme/target/io-cmd-bdev.c | 2 +- drivers/scsi/scsi_lib.c | 2 +- fs/block_dev.c | 32 +++++++++--- fs/direct-io.c | 2 +- fs/iomap.c | 9 ++-- include/linux/blk-mq-ops.h | 100 ++++++++++++++++++++++++++++++++++++ include/linux/blk-mq.h | 94 +--------------------------------- include/linux/blkdev.h | 37 +++++++++++--- mm/page_io.c | 2 +- 25 files changed, 347 insertions(+), 302 deletions(-) -- Jens Axboe