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: Keith Busch <kbusch@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Kanchan Joshi <joshi.k@samsung.com>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
Link: https://lore.kernel.org/r/20250813153153.3260897-2-kbusch@meta.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
Keith Busch
2025-08-13 08:31:45 -07:00
committed by Jens Axboe
parent 1b237f190e
commit 7a6fc1634c
2 changed files with 8 additions and 3 deletions

View File

@@ -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;

View File

@@ -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;
};