bvec: add a bvec_virt helper
authorChristoph Hellwig <hch@lst.de>
Wed, 4 Aug 2021 09:56:20 +0000 (11:56 +0200)
committerJens Axboe <axboe@kernel.dk>
Mon, 16 Aug 2021 16:50:32 +0000 (10:50 -0600)
Add a helper to get the virtual address for a bvec.  This avoids that
all callers need to know about the page + offset representation.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Chaitanya Kulkarni <kch@kernel.org>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
Link: https://lore.kernel.org/r/20210804095634.460779-2-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
include/linux/bvec.h

index f9fa43b..0e9bdd4 100644 (file)
@@ -229,4 +229,16 @@ static inline void memzero_bvec(struct bio_vec *bvec)
        memzero_page(bvec->bv_page, bvec->bv_offset, bvec->bv_len);
 }
 
+/**
+ * bvec_virt - return the virtual address for a bvec
+ * @bvec: bvec to return the virtual address for
+ *
+ * Note: the caller must ensure that @bvec->bv_page is not a highmem page.
+ */
+static inline void *bvec_virt(struct bio_vec *bvec)
+{
+       WARN_ON_ONCE(PageHighMem(bvec->bv_page));
+       return page_address(bvec->bv_page) + bvec->bv_offset;
+}
+
 #endif /* __LINUX_BVEC_H */