Provided by: freebsd-manpages_12.2-2_all bug

NAME

       g_wither_geom — destroy geom and related providers and consumers when you get a chance

SYNOPSIS

       #include <geom/geom.h>

       void
       g_wither_geom(struct g_geom *gp, int error);

DESCRIPTION

       The  g_wither_geom()  function  tells  GEOM  that geom gp is to be destroyed.  GEOM sets an error on each
       provider of the given geom (in the orphaning process) and waits for a chance to destroy the geom.  If the
       access count of any  possessed  consumer  goes  to  0,  the  consumer  will  be  detached  and  destroyed
       automatically.   If  the  last consumer attached to any possessed provider will be detached, the provider
       will be destroyed.  If there are no more providers nor consumers, the geom will be destroyed.

       This is an automatic “garbage collect” to avoid duplicated code in all classes.   Before  it  is  called,
       field  softc  should  be  disposed  of  and set to NULL.  Note that the g_wither_geom() function gives no
       guarantee that the geom will be immediately destroyed, mostly because the access  counts  of  the  geom's
       consumers  and  providers  may  not  be 0.  That is why calling this function for every geom from a given
       class is not enough to be sure that the class can be unloaded.

RESTRICTIONS/CONDITIONS

       The argument error must be nonzero.

       The topology lock has to be held.

SEE ALSO

       geom(4), DECLARE_GEOM_CLASS(9), g_access(9), g_attach(9), g_bio(9), g_consumer(9), g_data(9), g_event(9),
       g_geom(9), g_provider(9), g_provider_by_name(9)

AUTHORS

       This manual page was written by Pawel Jakub Dawidek <pjd@FreeBSD.org>.

Debian                                          January 16, 2004                                G_WITHER_GEOM(9)