Commit 7a6fc163 authored by Keith Busch's avatar Keith Busch Committed by Jens Axboe
Browse files

blk-mq-dma: create blk_map_iter type



The req_iterator happens to have a similar fields to what the dma
iterator needs, but we're not necessarily iterating a request's
bi_io_vec. Create a new type that can be amended for additional future
use.

Signed-off-by: default avatarKeith Busch <kbusch@kernel.org>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarKanchan Joshi <joshi.k@samsung.com>
Reviewed-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
Link: https://lore.kernel.org/r/20250813153153.3260897-2-kbusch@meta.com


Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 1b237f19
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -10,7 +10,7 @@ struct phys_vec {
	u32		len;
};

static bool blk_map_iter_next(struct request *req, struct req_iterator *iter,
static bool blk_map_iter_next(struct request *req, struct blk_map_iter *iter,
			      struct phys_vec *vec)
{
	unsigned int max_size;
@@ -246,7 +246,7 @@ blk_next_sg(struct scatterlist **sg, struct scatterlist *sglist)
int __blk_rq_map_sg(struct request *rq, struct scatterlist *sglist,
		    struct scatterlist **last_sg)
{
	struct req_iterator iter = {
	struct blk_map_iter iter = {
		.bio	= rq->bio,
	};
	struct phys_vec vec;
+6 −1
Original line number Diff line number Diff line
@@ -5,6 +5,11 @@
#include <linux/blk-mq.h>
#include <linux/pci-p2pdma.h>

struct blk_map_iter {
	struct bvec_iter		iter;
	struct bio			*bio;
};

struct blk_dma_iter {
	/* Output address range for this iteration */
	dma_addr_t			addr;
@@ -14,7 +19,7 @@ struct blk_dma_iter {
	blk_status_t			status;

	/* Internal to blk_rq_dma_map_iter_* */
	struct req_iterator		iter;
	struct blk_map_iter		iter;
	struct pci_p2pdma_map_state	p2pdma;
};