Hi all, This series clean up the block polling code a bit and changes the interface to poll for a specific bio instead of a request_queue and cookie pair. Polling for the bio itself leads to a few advantages: - the cookie construction can made entirely private in blk-mq.c - the caller does not need to remember the request_queue and cookie separately and thus sidesteps their lifetime issues - keeping the device and the cookie inside the bio allows to trivially support polling BIOs remapping by stacking drivers - a lot of code to propagate the cookie back up the submission path can removed entirely The one major caveat is that this requires RCU freeing polled BIOs to make sure the bio that contains the polling information is still alive when io_uring tries to poll it through the iocb. For synchronous polling all the callers have a bio reference anyway, so this is not an issue. Git tree: git://git.infradead.org/users/hch/block.git bio-poll Gitweb: http://git.infradead.org/users/hch/block.git/shortlog/refs/heads/bio-poll Diffstat: arch/m68k/emu/nfblock.c | 3 arch/xtensa/platforms/iss/simdisk.c | 3 block/bio.c | 29 ++++-- block/blk-core.c | 105 ++++++++++++++++------- block/blk-merge.c | 2 block/blk-mq-debugfs.c | 2 block/blk-mq.c | 163 ++++++++++++++---------------------- block/blk-mq.h | 6 - block/blk-wbt.c | 4 drivers/block/brd.c | 12 +- drivers/block/drbd/drbd_int.h | 2 drivers/block/drbd/drbd_req.c | 3 drivers/block/n64cart.c | 12 +- drivers/block/null_blk/main.c | 3 drivers/block/pktcdvd.c | 7 - drivers/block/ps3vram.c | 6 - drivers/block/rsxx/dev.c | 7 - drivers/block/umem.c | 4 drivers/block/zram/zram_drv.c | 10 -- drivers/lightnvm/pblk-init.c | 6 - drivers/md/bcache/request.c | 13 +- drivers/md/bcache/request.h | 4 drivers/md/dm.c | 28 ++---- drivers/md/md.c | 10 -- drivers/nvdimm/blk.c | 5 - drivers/nvdimm/btt.c | 5 - drivers/nvdimm/pmem.c | 3 drivers/nvme/host/core.c | 4 drivers/nvme/host/multipath.c | 6 - drivers/nvme/host/nvme.h | 2 drivers/s390/block/dcssblk.c | 7 - drivers/s390/block/xpram.c | 5 - fs/block_dev.c | 54 +++-------- fs/btrfs/inode.c | 8 - fs/direct-io.c | 14 --- fs/ext4/file.c | 2 fs/gfs2/file.c | 4 fs/iomap/direct-io.c | 56 ++++++------ fs/xfs/xfs_file.c | 2 fs/zonefs/super.c | 2 include/linux/bio.h | 4 include/linux/blk-mq.h | 15 --- include/linux/blk_types.h | 40 ++------ include/linux/blkdev.h | 8 + include/linux/bvec.h | 2 include/linux/fs.h | 6 - include/linux/iomap.h | 3 mm/page_io.c | 10 -- 48 files changed, 318 insertions(+), 393 deletions(-)