aboutsummaryrefslogtreecommitdiff
path: root/sys/geom/vinum/geom_vinum_plex.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/geom/vinum/geom_vinum_plex.c')
-rw-r--r--sys/geom/vinum/geom_vinum_plex.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/sys/geom/vinum/geom_vinum_plex.c b/sys/geom/vinum/geom_vinum_plex.c
index 179ad19d2fca..e4553817346c 100644
--- a/sys/geom/vinum/geom_vinum_plex.c
+++ b/sys/geom/vinum/geom_vinum_plex.c
@@ -278,6 +278,7 @@ gv_plex_normal_request(struct gv_plex *p, struct bio *bp, off_t boff,
cbp->bio_data = addr;
cbp->bio_done = gv_done;
cbp->bio_caller1 = s;
+ s->drive_sc->active++;
/* Store the sub-requests now and let others issue them. */
bioq_insert_tail(p->bqueue, cbp);
@@ -580,10 +581,10 @@ gv_sync_request(struct gv_plex *from, struct gv_plex *to, off_t offset,
return (ENOMEM);
}
bp->bio_length = length;
- bp->bio_done = gv_done;
+ bp->bio_done = NULL;
bp->bio_pflags |= GV_BIO_SYNCREQ;
bp->bio_offset = offset;
- bp->bio_caller1 = from;
+ bp->bio_caller1 = from;
bp->bio_caller2 = to;
bp->bio_cmd = type;
if (data == NULL)
@@ -694,7 +695,7 @@ gv_grow_request(struct gv_plex *p, off_t offset, off_t length, int type,
}
bp->bio_cmd = type;
- bp->bio_done = gv_done;
+ bp->bio_done = NULL;
bp->bio_error = 0;
bp->bio_caller1 = p;
bp->bio_offset = offset;
@@ -802,7 +803,7 @@ gv_init_request(struct gv_sd *s, off_t start, caddr_t data, off_t length)
}
bp->bio_cmd = BIO_WRITE;
bp->bio_data = data;
- bp->bio_done = gv_done;
+ bp->bio_done = NULL;
bp->bio_error = 0;
bp->bio_length = length;
bp->bio_pflags |= GV_BIO_INIT;
@@ -819,6 +820,7 @@ gv_init_request(struct gv_sd *s, off_t start, caddr_t data, off_t length)
}
cbp->bio_done = gv_done;
cbp->bio_caller1 = s;
+ d->active++;
/* Send it off to the consumer. */
g_io_request(cbp, cp);
}
@@ -905,7 +907,7 @@ gv_parity_request(struct gv_plex *p, int flags, off_t offset)
}
bp->bio_cmd = BIO_WRITE;
- bp->bio_done = gv_done;
+ bp->bio_done = NULL;
bp->bio_error = 0;
bp->bio_length = p->stripesize;
bp->bio_caller1 = p;