summaryrefslogtreecommitdiff
path: root/include/linux/blk-integrity.h
diff options
context:
space:
mode:
authorKeith Busch <kbusch@kernel.org>2025-09-03 22:33:17 +0300
committerJens Axboe <axboe@kernel.dk>2025-09-09 19:33:35 +0300
commitd57447ffb5fadffdba920f2fb933296fb6c5ff57 (patch)
treedbd4a5c9aab4476d8e7420cae87090c767354775 /include/linux/blk-integrity.h
parent05ceea5d3ec9a1b1d6858ffd4739fdb0ed1b8eaf (diff)
downloadlinux-d57447ffb5fadffdba920f2fb933296fb6c5ff57.tar.xz
blk-mq-dma: bring back p2p request flags
We only need to consider data and metadata dma mapping types separately. The request and bio integrity payload have enough flag bits to internally track the mapping type for each. Use these so the caller doesn't need to track them, and provide separete request and integrity helpers to the common code. This will make it easier to scale new mappings, like the proposed MMIO attribute, without burdening the caller to track such things. Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com> Reviewed-by: Leon Romanovsky <leonro@nvidia.com> Signed-off-by: Keith Busch <kbusch@kernel.org> Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'include/linux/blk-integrity.h')
-rw-r--r--include/linux/blk-integrity.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/include/linux/blk-integrity.h b/include/linux/blk-integrity.h
index 78fe2459e661..b659373788f6 100644
--- a/include/linux/blk-integrity.h
+++ b/include/linux/blk-integrity.h
@@ -27,6 +27,15 @@ static inline bool queue_limits_stack_integrity_bdev(struct queue_limits *t,
#ifdef CONFIG_BLK_DEV_INTEGRITY
int blk_rq_map_integrity_sg(struct request *, struct scatterlist *);
+
+static inline bool blk_rq_integrity_dma_unmap(struct request *req,
+ struct device *dma_dev, struct dma_iova_state *state,
+ size_t mapped_len)
+{
+ return blk_dma_unmap(req, dma_dev, state, mapped_len,
+ bio_integrity(req->bio)->bip_flags & BIP_P2P_DMA);
+}
+
int blk_rq_count_integrity_sg(struct request_queue *, struct bio *);
int blk_rq_integrity_map_user(struct request *rq, void __user *ubuf,
ssize_t bytes);
@@ -115,6 +124,12 @@ static inline int blk_rq_map_integrity_sg(struct request *q,
{
return 0;
}
+static inline bool blk_rq_integrity_dma_unmap(struct request *req,
+ struct device *dma_dev, struct dma_iova_state *state,
+ size_t mapped_len)
+{
+ return false;
+}
static inline int blk_rq_integrity_map_user(struct request *rq,
void __user *ubuf,
ssize_t bytes)