summaryrefslogtreecommitdiffstats
path: root/sys/geom/vinum
diff options
context:
space:
mode:
authorle <le@FreeBSD.org>2005-01-19 13:57:09 +0000
committerle <le@FreeBSD.org>2005-01-19 13:57:09 +0000
commiteb12fefc3570c56802a22267d21da4b936c064b6 (patch)
tree0f888446ad171f8c1fbbebd055c74bc17eb7464f /sys/geom/vinum
parent2f9f83ffc750de5353df178df851d0a35df1f8a3 (diff)
downloadFreeBSD-src-eb12fefc3570c56802a22267d21da4b936c064b6.zip
FreeBSD-src-eb12fefc3570c56802a22267d21da4b936c064b6.tar.gz
Reset object flags after killing off an object's worker thread.
Diffstat (limited to 'sys/geom/vinum')
-rw-r--r--sys/geom/vinum/geom_vinum_subr.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/sys/geom/vinum/geom_vinum_subr.c b/sys/geom/vinum/geom_vinum_subr.c
index 0df59c3..ff91196 100644
--- a/sys/geom/vinum/geom_vinum_subr.c
+++ b/sys/geom/vinum/geom_vinum_subr.c
@@ -790,6 +790,8 @@ gv_kill_drive_thread(struct gv_drive *d)
while (!(d->flags & GV_DRIVE_THREAD_DEAD))
tsleep(d, PRIBIO, "gv_die", hz);
d->flags &= ~GV_DRIVE_THREAD_ACTIVE;
+ d->flags &= ~GV_DRIVE_THREAD_DIE;
+ d->flags &= ~GV_DRIVE_THREAD_DEAD;
mtx_destroy(&d->bqueue_mtx);
}
}
@@ -803,6 +805,8 @@ gv_kill_plex_thread(struct gv_plex *p)
while (!(p->flags & GV_PLEX_THREAD_DEAD))
tsleep(p, PRIBIO, "gv_die", hz);
p->flags &= ~GV_PLEX_THREAD_ACTIVE;
+ p->flags &= ~GV_PLEX_THREAD_DIE;
+ p->flags &= ~GV_PLEX_THREAD_DEAD;
mtx_destroy(&p->bqueue_mtx);
}
}
@@ -816,6 +820,8 @@ gv_kill_vol_thread(struct gv_volume *v)
while (!(v->flags & GV_VOL_THREAD_DEAD))
tsleep(v, PRIBIO, "gv_die", hz);
v->flags &= ~GV_VOL_THREAD_ACTIVE;
+ v->flags &= ~GV_VOL_THREAD_DIE;
+ v->flags &= ~GV_VOL_THREAD_DEAD;
mtx_destroy(&v->bqueue_mtx);
}
}
OpenPOWER on IntegriCloud