diff options
author | phk <phk@FreeBSD.org> | 2002-09-27 20:38:36 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 2002-09-27 20:38:36 +0000 |
commit | 83aec680cb55261466c7d21ac999144f9985d59e (patch) | |
tree | 7b1c2e6a84e3db3c03aa2837e686fbd1569016ee /sys/geom/geom_int.h | |
parent | a09a7e0aa751dc58e8f65d2417ed2cbb9cb3e686 (diff) | |
download | FreeBSD-src-83aec680cb55261466c7d21ac999144f9985d59e.zip FreeBSD-src-83aec680cb55261466c7d21ac999144f9985d59e.tar.gz |
Implement g_call_me() as a way for geom methods to schedule operations
to be performed in the event-thread.
To do this, we need to lock the eventlist with g_eventlock (nee g_doorlock),
since g_call_me() being called from the UP/DOWN paths will not be able to
aquire g_topology_lock.
This also means that for now these events are not referenced on any
particular consumer/provider/geom.
For UP/DOWN path use, this will not become a problem since the access()
function will make sure we drain any bio's before we dismantle.
Sponsored by: DARPA & NAI Labs.
Diffstat (limited to 'sys/geom/geom_int.h')
-rw-r--r-- | sys/geom/geom_int.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/sys/geom/geom_int.h b/sys/geom/geom_int.h index b7a5ad6..33fd675 100644 --- a/sys/geom/geom_int.h +++ b/sys/geom/geom_int.h @@ -51,6 +51,7 @@ enum g_events { EV_NEW_CLASS, /* class */ EV_NEW_PROVIDER, /* provider */ EV_SPOILED, /* provider, consumer */ + EV_CALL_ME, /* func, arg */ EV_LAST }; @@ -61,6 +62,8 @@ struct g_event { struct g_geom *geom; struct g_provider *provider; struct g_consumer *consumer; + void *arg; + g_call_me_t *func; }; /* geom_dump.c */ |