Add an additional queue mapping for polling queues that will host polling for latency critical I/O. Allocate the poll queues with IB_POLL_DIRECT context. For nvmf connect we introduce a new blk_execute_rq_polled to poll for the completion and have nvmf_connect_io_queue use it for conneting polling queues. Changes from v2: - move blk_execute_rq_polled to nvme-core - turn off REQ_HIPRI if polling is not supported (e.g. for stacking devices) - omit nvme-cli patch - can be taken from v2 - removed blk_tag_to_qc_t and open-coded it in request_to_tag instead Changes from v1: - get rid of ib_change_cq_ctx - poll for nvmf connect over poll queues Christoph Hellwig (1): block: clear REQ_HIPRI if polling is not supported Sagi Grimberg (5): block: make request_to_qc_t public nvme-core: optionally poll sync commands nvme-fabrics: allow nvmf_connect_io_queue to poll nvme-fabrics: allow user to pass in nr_poll_queues nvme-rdma: implement polling queue map block/blk-core.c | 3 ++ block/blk-mq.c | 8 ----- drivers/nvme/host/core.c | 38 ++++++++++++++++++++---- drivers/nvme/host/fabrics.c | 25 ++++++++++++---- drivers/nvme/host/fabrics.h | 5 +++- drivers/nvme/host/fc.c | 2 +- drivers/nvme/host/nvme.h | 2 +- drivers/nvme/host/rdma.c | 58 +++++++++++++++++++++++++++++++++---- drivers/nvme/host/tcp.c | 2 +- drivers/nvme/target/loop.c | 2 +- include/linux/blk-mq.h | 10 +++++++ include/linux/blk_types.h | 11 ------- 12 files changed, 125 insertions(+), 41 deletions(-) -- 2.17.1