From: Keith Busch <kbusch@xxxxxxxxxx> Here's a new take on the dma iteration for integrity requests. The current code still has the integrity payloads subscribe to the "virt_boundary" queue limit when considering merging and coalescing in iova space. This is an unnecessary limit for nvme-pci metadata SGLs, and it currently makes testing merges a bit difficult. Changes since v1: Provided a bunch of prep patches to make the current dma iteration more generic to reduce code duplication with integrity metadata. An nvme optimization for single or coalesced segments Keith Busch (7): blk-mq-dma: move the bio and bvec_iter to blk_dma_iter blk-mq-dma: set the bvec being iterated blk-mq-dma: require unmap caller provide p2p map type blk-mq: remove REQ_P2PDMA flag blk-mq-dma: move common dma start code to a helper blk-mq-dma: add support for mapping integrity metadata nvme: convert metadata mapping to dma iter block/bio.c | 2 +- block/blk-mq-dma.c | 173 ++++++++++++++++++++++------------ drivers/nvme/host/pci.c | 135 +++++++++++++------------- include/linux/blk-integrity.h | 17 ++++ include/linux/blk-mq-dma.h | 10 +- include/linux/blk_types.h | 1 - 6 files changed, 207 insertions(+), 131 deletions(-) -- 2.47.1