home | help
G_WITHER_GEOM(9)	    Kernel Developer's Manual		G_WITHER_GEOM(9)

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 de-
     stroyed 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_con-
     sumer(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>.

FreeBSD 15.1			January 16, 2004		G_WITHER_GEOM(9)

home | help