diff --git a/sys/kern/vfs_bio.c b/sys/kern/vfs_bio.c --- a/sys/kern/vfs_bio.c +++ b/sys/kern/vfs_bio.c @@ -5269,6 +5269,16 @@ } } +struct memdesc +memdesc_buf(struct buf *bp) +{ + if (!buf_mapped(bp)) + return (memdesc_vmpages(bp->b_pages, bp->b_bufsize, + (vm_offset_t)bp->b_offset & PAGE_MASK)); + + return (memdesc_vaddr(bp->b_data, bp->b_bufsize)); +} + struct memdesc memdesc_bio(struct bio *bio) { diff --git a/sys/sys/memdesc.h b/sys/sys/memdesc.h --- a/sys/sys/memdesc.h +++ b/sys/sys/memdesc.h @@ -30,6 +30,7 @@ #define _SYS_MEMDESC_H_ struct bio; +struct buf; struct bus_dma_segment; struct uio; struct mbuf; @@ -150,6 +151,7 @@ return (mem); } +struct memdesc memdesc_buf(struct buf *bp); struct memdesc memdesc_bio(struct bio *bio); struct memdesc memdesc_ccb(union ccb *ccb);