Hello Guys, Based on Christoph's bio based polling model[1], implement DM bio polling with one very simple approach. Patch 1 adds helper of blk_queue_poll(). Patch 2 reuses .bi_next to bio driver for storing driver data. Patch 3 adds .bio_poll() callback to block_device_operations, so bio driver can implement its own logic for io polling. Patch 4 implements bio polling for device mapper. Any comments are welcome. [1] switch block layer polling to a bio based model v4 https://lore.kernel.org/linux-block/20210615160619.GA32435@xxxxxx/T/#t Ming Lei (4): block: add helper of blk_queue_poll block: add field of .bi_bio_drv_data to bio block: add ->poll_bio to block_device_operations dm: support bio polling block/blk-core.c | 21 +++++++++----- block/blk-sysfs.c | 4 +-- block/genhd.c | 3 ++ drivers/md/dm-table.c | 24 ++++++++++++++++ drivers/md/dm.c | 59 ++++++++++++++++++++++++++++++++++++--- drivers/nvme/host/core.c | 2 +- include/linux/blk_types.h | 11 +++++++- include/linux/blkdev.h | 3 ++ 8 files changed, 112 insertions(+), 15 deletions(-) -- 2.31.1