Skip to content

Commit a846f97

Browse files
keithbuschkawasaki
authored andcommitted
blk-mq-dma: move the bio and bvec_iter to blk_dma_iter
The req_iterator just happens to have a similar fields to what the dma iterator needs, but we're not necessarily iterating a bio_vec here. Have the dma iterator define its private fields directly. It also helps to remove eyesores like "iter->iter.iter". Signed-off-by: Keith Busch <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]>
1 parent 8bf6490 commit a846f97

2 files changed

Lines changed: 9 additions & 8 deletions

File tree

block/blk-mq-dma.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ struct phys_vec {
1010
u32 len;
1111
};
1212

13-
static bool blk_map_iter_next(struct request *req, struct req_iterator *iter,
13+
static bool blk_map_iter_next(struct request *req, struct blk_dma_iter *iter,
1414
struct phys_vec *vec)
1515
{
1616
unsigned int max_size;
@@ -114,7 +114,7 @@ static bool blk_rq_dma_map_iova(struct request *req, struct device *dma_dev,
114114
if (error)
115115
break;
116116
mapped += vec->len;
117-
} while (blk_map_iter_next(req, &iter->iter, vec));
117+
} while (blk_map_iter_next(req, iter, vec));
118118

119119
error = dma_iova_sync(dma_dev, state, 0, mapped);
120120
if (error) {
@@ -153,16 +153,16 @@ bool blk_rq_dma_map_iter_start(struct request *req, struct device *dma_dev,
153153
unsigned int total_len = blk_rq_payload_bytes(req);
154154
struct phys_vec vec;
155155

156-
iter->iter.bio = req->bio;
157-
iter->iter.iter = req->bio->bi_iter;
156+
iter->bio = req->bio;
157+
iter->iter = req->bio->bi_iter;
158158
memset(&iter->p2pdma, 0, sizeof(iter->p2pdma));
159159
iter->status = BLK_STS_OK;
160160

161161
/*
162162
* Grab the first segment ASAP because we'll need it to check for P2P
163163
* transfers.
164164
*/
165-
if (!blk_map_iter_next(req, &iter->iter, &vec))
165+
if (!blk_map_iter_next(req, iter, &vec))
166166
return false;
167167

168168
if (IS_ENABLED(CONFIG_PCI_P2PDMA) && (req->cmd_flags & REQ_P2PDMA)) {
@@ -213,7 +213,7 @@ bool blk_rq_dma_map_iter_next(struct request *req, struct device *dma_dev,
213213
{
214214
struct phys_vec vec;
215215

216-
if (!blk_map_iter_next(req, &iter->iter, &vec))
216+
if (!blk_map_iter_next(req, iter, &vec))
217217
return false;
218218

219219
if (iter->p2pdma.map == PCI_P2PDMA_MAP_BUS_ADDR)
@@ -246,7 +246,7 @@ blk_next_sg(struct scatterlist **sg, struct scatterlist *sglist)
246246
int __blk_rq_map_sg(struct request *rq, struct scatterlist *sglist,
247247
struct scatterlist **last_sg)
248248
{
249-
struct req_iterator iter = {
249+
struct blk_dma_iter iter = {
250250
.bio = rq->bio,
251251
};
252252
struct phys_vec vec;

include/linux/blk-mq-dma.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ struct blk_dma_iter {
1414
blk_status_t status;
1515

1616
/* Internal to blk_rq_dma_map_iter_* */
17-
struct req_iterator iter;
17+
struct bvec_iter iter;
18+
struct bio *bio;
1819
struct pci_p2pdma_map_state p2pdma;
1920
};
2021

0 commit comments

Comments
 (0)