aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/vinum
diff options
context:
space:
mode:
authorAlfred Perlstein <alfred@FreeBSD.org>2000-03-26 23:06:12 +0000
committerAlfred Perlstein <alfred@FreeBSD.org>2000-03-26 23:06:12 +0000
commit4bb4aee894abe5424419b8fb02356e71eb077bde (patch)
treeecf072f009f2c249e021f99d1580dcb3e5a325eb /sys/dev/vinum
parentfcd9d76716c30f48c4b3554a1f174e0b97d2dd00 (diff)
Notes
Diffstat (limited to 'sys/dev/vinum')
-rw-r--r--sys/dev/vinum/vinuminterrupt.c6
-rw-r--r--sys/dev/vinum/vinumrequest.c3
-rw-r--r--sys/dev/vinum/vinumrevive.c2
3 files changed, 7 insertions, 4 deletions
diff --git a/sys/dev/vinum/vinuminterrupt.c b/sys/dev/vinum/vinuminterrupt.c
index e47098fc5a7cd..d473e918922eb 100644
--- a/sys/dev/vinum/vinuminterrupt.c
+++ b/sys/dev/vinum/vinuminterrupt.c
@@ -342,7 +342,8 @@ complete_raid5_write(struct rqelement *rqe)
if ((rqe->b.b_iocmd == BIO_READ) /* this was a read */
&&((rqe->flags & XFR_BAD_SUBDISK) == 0)) { /* and we can write this block */
- rqe->b.b_flags &= ~B_DONE; /* we're writing now */
+ rqe->b.b_flags &= ~B_DONE; /* we're not done */
+ rqe->b.b_iocmd = BIO_WRITE; /* we're writing now */
rqe->b.b_iodone = complete_rqe; /* call us here when done */
rqe->flags &= ~XFR_PARITYOP; /* reset flags that brought us here */
rqe->b.b_data = &bp->b_data[rqe->useroffset << DEV_BSHIFT]; /* point to the user data */
@@ -381,7 +382,8 @@ complete_raid5_write(struct rqelement *rqe)
}
/* Finally, write the parity block */
rqe = &rqg->rqe[0];
- rqe->b.b_flags &= ~B_DONE; /* we're writing now */
+ rqe->b.b_flags &= ~B_DONE; /* we're not done */
+ rqe->b.b_iocmd = BIO_WRITE; /* we're writing now */
rqe->b.b_iodone = complete_rqe; /* call us here when done */
rqg->flags &= ~XFR_PARITYOP; /* reset flags that brought us here */
rqe->b.b_bcount = rqe->buflen << DEV_BSHIFT; /* length to write */
diff --git a/sys/dev/vinum/vinumrequest.c b/sys/dev/vinum/vinumrequest.c
index 3e86d7473efd9..3d9d8c2ce5a06 100644
--- a/sys/dev/vinum/vinumrequest.c
+++ b/sys/dev/vinum/vinumrequest.c
@@ -792,7 +792,7 @@ build_rq_buffer(struct rqelement *rqe, struct plex *plex)
/* Initialize the buf struct */
/* copy these flags from user bp */
bp->b_flags = ubp->b_flags & (B_ORDERED | B_NOCACHE | B_ASYNC);
- bp->b_iocmd = BIO_READ; /* inform us when it's done */
+ bp->b_iocmd = ubp->b_iocmd;
BUF_LOCKINIT(bp); /* get a lock for the buffer */
BUF_LOCK(bp, LK_EXCLUSIVE); /* and lock it */
@@ -921,6 +921,7 @@ sdio(struct buf *bp)
}
bzero(sbp, sizeof(struct sdbuf)); /* start with nothing */
sbp->b.b_flags = bp->b_flags;
+ sbp->b.b_iocmd = bp->b_iocmd;
sbp->b.b_bufsize = bp->b_bufsize; /* buffer size */
sbp->b.b_bcount = bp->b_bcount; /* number of bytes to transfer */
sbp->b.b_resid = bp->b_resid; /* and amount waiting */
diff --git a/sys/dev/vinum/vinumrevive.c b/sys/dev/vinum/vinumrevive.c
index 32045121dabcf..72ea732a7d2cb 100644
--- a/sys/dev/vinum/vinumrevive.c
+++ b/sys/dev/vinum/vinumrevive.c
@@ -213,7 +213,7 @@ revive_block(int sdno)
"Relaunch revive conflict sd %d: %p\n%s dev %d.%d, offset 0x%x, length %ld\n",
rq->sdno,
rq,
- rq->bp->b_flags == BIO_READ ? "Read" : "Write",
+ rq->bp->b_iocmd == BIO_READ ? "Read" : "Write",
major(rq->bp->b_dev),
minor(rq->bp->b_dev),
rq->bp->b_blkno,