summaryrefslogtreecommitdiffstats
path: root/sys/dev/md
diff options
context:
space:
mode:
authorpjd <pjd@FreeBSD.org>2004-09-16 19:42:17 +0000
committerpjd <pjd@FreeBSD.org>2004-09-16 19:42:17 +0000
commit7009758c01449eebe5d172e6dabd6b9fa971bcf0 (patch)
treec9777a8c309fff96ac286cb379f7fbcc52b64af7 /sys/dev/md
parent34730e1e31def9e1f1f9f2b6484393c24df1364b (diff)
downloadFreeBSD-src-7009758c01449eebe5d172e6dabd6b9fa971bcf0.zip
FreeBSD-src-7009758c01449eebe5d172e6dabd6b9fa971bcf0.tar.gz
- Do not use bio_pblkno as it is going away anyway.
- Prefer bio_length than bio_bcount.
Diffstat (limited to 'sys/dev/md')
-rw-r--r--sys/dev/md/md.c27
1 files changed, 14 insertions, 13 deletions
diff --git a/sys/dev/md/md.c b/sys/dev/md/md.c
index 1687411..4663005 100644
--- a/sys/dev/md/md.c
+++ b/sys/dev/md/md.c
@@ -374,9 +374,6 @@ g_md_start(struct bio *bp)
struct md_s *sc;
sc = bp->bio_to->geom->softc;
-
- bp->bio_pblkno = bp->bio_offset / sc->secsize;
- bp->bio_bcount = bp->bio_length;
mtx_lock(&sc->queue_mtx);
bioq_disksort(&sc->bio_queue, bp);
wakeup(sc);
@@ -393,8 +390,8 @@ mdstart_malloc(struct md_s *sc, struct bio *bp)
unsigned secno, nsec, uc;
uintptr_t sp, osp;
- nsec = bp->bio_bcount / sc->secsize;
- secno = bp->bio_pblkno;
+ nsec = bp->bio_length / sc->secsize;
+ secno = bp->bio_offset / sc->secsize;
dst = bp->bio_data;
error = 0;
while (nsec--) {
@@ -457,11 +454,15 @@ static int
mdstart_preload(struct md_s *sc, struct bio *bp)
{
- if (bp->bio_cmd == BIO_DELETE) {
- } else if (bp->bio_cmd == BIO_READ) {
- bcopy(sc->pl_ptr + (bp->bio_pblkno << DEV_BSHIFT), bp->bio_data, bp->bio_bcount);
- } else {
- bcopy(bp->bio_data, sc->pl_ptr + (bp->bio_pblkno << DEV_BSHIFT), bp->bio_bcount);
+ switch (bp->bio_cmd) {
+ case BIO_READ:
+ bcopy(sc->pl_ptr + bp->bio_offset, bp->bio_data,
+ bp->bio_length);
+ break;
+ case BIO_WRITE:
+ bcopy(bp->bio_data, sc->pl_ptr + bp->bio_offset,
+ bp->bio_length);
+ break;
}
bp->bio_resid = 0;
return (0);
@@ -486,10 +487,10 @@ mdstart_vnode(struct md_s *sc, struct bio *bp)
bzero(&auio, sizeof(auio));
aiov.iov_base = bp->bio_data;
- aiov.iov_len = bp->bio_bcount;
+ aiov.iov_len = bp->bio_length;
auio.uio_iov = &aiov;
auio.uio_iovcnt = 1;
- auio.uio_offset = (vm_ooffset_t)bp->bio_pblkno * sc->secsize;
+ auio.uio_offset = (vm_ooffset_t)bp->bio_offset;
auio.uio_segflg = UIO_SYSSPACE;
if(bp->bio_cmd == BIO_READ)
auio.uio_rw = UIO_READ;
@@ -497,7 +498,7 @@ mdstart_vnode(struct md_s *sc, struct bio *bp)
auio.uio_rw = UIO_WRITE;
else
panic("wrong BIO_OP in mdstart_vnode");
- auio.uio_resid = bp->bio_bcount;
+ auio.uio_resid = bp->bio_length;
auio.uio_td = curthread;
/*
* When reading set IO_DIRECT to try to avoid double-caching
OpenPOWER on IntegriCloud