X-Git-Url: https://gitweb.dragonflybsd.org/dragonfly.git/blobdiff_plain/679a125a6620b4a820edc31ed7358a9d32129743..83d36d43664342d09f00543be9aaf79e97ac9339:/sys/dev/raid/vinum/vinuminterrupt.c diff --git a/sys/dev/raid/vinum/vinuminterrupt.c b/sys/dev/raid/vinum/vinuminterrupt.c index e17ab6c2ff..9d3ac0f97f 100644 --- a/sys/dev/raid/vinum/vinuminterrupt.c +++ b/sys/dev/raid/vinum/vinuminterrupt.c @@ -41,7 +41,7 @@ * * $Id: vinuminterrupt.c,v 1.12 2000/11/24 03:41:42 grog Exp grog $ * $FreeBSD: src/sys/dev/vinum/vinuminterrupt.c,v 1.25.2.3 2001/05/28 05:56:27 grog Exp $ - * $DragonFly: src/sys/dev/raid/vinum/vinuminterrupt.c,v 1.3 2003/08/07 21:17:09 dillon Exp $ + * $DragonFly: src/sys/dev/raid/vinum/vinuminterrupt.c,v 1.5 2005/09/16 04:33:14 dillon Exp $ */ #include "vinumhdr.h" @@ -385,7 +385,6 @@ complete_raid5_write(struct rqelement *rqe) if ((rqe->b.b_flags & B_READ) /* this was a read */ &&((rqe->flags & XFR_BAD_SUBDISK) == 0)) { /* and we can write this block */ rqe->b.b_flags &= ~(B_READ | B_DONE); /* we're writing now */ - rqe->b.b_flags |= B_CALL; /* call us when you're done */ rqe->b.b_iodone = complete_rqe; /* by calling us here */ rqe->flags &= ~XFR_PARITYOP; /* reset flags that brought us here */ rqe->b.b_data = &ubp->b_data[rqe->useroffset << DEV_BSHIFT]; /* point to the user data */ @@ -393,6 +392,7 @@ complete_raid5_write(struct rqelement *rqe) rqe->b.b_bufsize = rqe->b.b_bcount; /* don't claim more */ rqe->b.b_resid = rqe->b.b_bcount; /* nothing transferred */ rqe->b.b_blkno += rqe->dataoffset; /* point to the correct block */ + rqe->b.b_dev = DRIVE[rqe->driveno].dev; rqg->active++; /* another active request */ drive = &DRIVE[rqe->driveno]; /* drive to access */ @@ -425,12 +425,12 @@ complete_raid5_write(struct rqelement *rqe) /* Finally, write the parity block */ rqe = &rqg->rqe[0]; rqe->b.b_flags &= ~(B_READ | B_DONE); /* we're writing now */ - rqe->b.b_flags |= B_CALL; /* tell us when you're done */ rqe->b.b_iodone = complete_rqe; /* by calling us here */ rqg->flags &= ~XFR_PARITYOP; /* reset flags that brought us here */ rqe->b.b_bcount = rqe->buflen << DEV_BSHIFT; /* length to write */ rqe->b.b_bufsize = rqe->b.b_bcount; /* don't claim we have more */ rqe->b.b_resid = rqe->b.b_bcount; /* nothing transferred */ + rqe->b.b_dev = DRIVE[rqe->driveno].dev; rqg->active++; /* another active request */ drive = &DRIVE[rqe->driveno]; /* drive to access */