mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-03-22 07:27:12 +08:00
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:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user