diff options
Diffstat (limited to 'sys/geom/vinum/geom_vinum_subr.c')
-rw-r--r-- | sys/geom/vinum/geom_vinum_subr.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/sys/geom/vinum/geom_vinum_subr.c b/sys/geom/vinum/geom_vinum_subr.c index fe1da8b..dedb6c3 100644 --- a/sys/geom/vinum/geom_vinum_subr.c +++ b/sys/geom/vinum/geom_vinum_subr.c @@ -817,6 +817,19 @@ gv_object_type(struct gv_softc *sc, char *name) } void +gv_kill_drive_thread(struct gv_drive *d) +{ + if (d->flags & GV_DRIVE_THREAD_ACTIVE) { + d->flags |= GV_DRIVE_THREAD_DIE; + wakeup(d); + while (!(d->flags & GV_DRIVE_THREAD_DEAD)) + tsleep(d, PRIBIO, "gv_die", hz); + d->flags &= ~GV_DRIVE_THREAD_ACTIVE; + mtx_destroy(&d->bqueue_mtx); + } +} + +void gv_kill_plex_thread(struct gv_plex *p) { if ((p->org == GV_PLEX_RAID5) && (p->flags & GV_PLEX_THREAD_ACTIVE)) { |