diff options
author | pjd <pjd@FreeBSD.org> | 2006-09-05 21:56:00 +0000 |
---|---|---|
committer | pjd <pjd@FreeBSD.org> | 2006-09-05 21:56:00 +0000 |
commit | 5c567602d82c61d90ee3ea5f3262c9e13e064769 (patch) | |
tree | 1bc73e60d8daf49147a0b02027819d920fa6f93c /sys/geom/gate/g_gate.h | |
parent | b48a7df7a28b9bcf280e082e2160b3312dee8f49 (diff) | |
download | FreeBSD-src-5c567602d82c61d90ee3ea5f3262c9e13e064769.zip FreeBSD-src-5c567602d82c61d90ee3ea5f3262c9e13e064769.tar.gz |
Fix problems with destroy and forcible destroy functionality:
- hold/release device in start/done routines, this will probably slow
down things a bit, but previous code was racy;
- only release device if g_gate_destroy() failed - if it succeeded device
is dead and there is nothing to release;
- various other changes which makes forcible destruction reliable.
MFC after: 3 days
Diffstat (limited to 'sys/geom/gate/g_gate.h')
-rw-r--r-- | sys/geom/gate/g_gate.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/geom/gate/g_gate.h b/sys/geom/gate/g_gate.h index c6e8689..63ab356 100644 --- a/sys/geom/gate/g_gate.h +++ b/sys/geom/gate/g_gate.h @@ -68,9 +68,9 @@ */ struct g_gate_softc { int sc_unit; /* P: (read-only) */ - int16_t sc_ref; /* P: g_gate_list_mtx */ + int sc_ref; /* P: g_gate_list_mtx */ struct g_provider *sc_provider; /* P: (read-only) */ - uint32_t sc_flags; /* P: (read-only) */ + uint32_t sc_flags; /* P: sc_queue_mtx */ struct bio_queue_head sc_inqueue; /* P: sc_queue_mtx */ struct bio_queue_head sc_outqueue; /* P: sc_queue_mtx */ |