summaryrefslogtreecommitdiffstats
path: root/sys/geom/geom_int.h
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>2002-09-27 20:38:36 +0000
committerphk <phk@FreeBSD.org>2002-09-27 20:38:36 +0000
commit83aec680cb55261466c7d21ac999144f9985d59e (patch)
tree7b1c2e6a84e3db3c03aa2837e686fbd1569016ee /sys/geom/geom_int.h
parenta09a7e0aa751dc58e8f65d2417ed2cbb9cb3e686 (diff)
downloadFreeBSD-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.h3
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 */
OpenPOWER on IntegriCloud