Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

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  de-
       stroyed.	 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 de-
       stroyed.	 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>.

FreeBSD	14.3		       January 16, 2004		      G_WITHER_GEOM(9)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=g_wither_geom&sektion=9&manpath=FreeBSD+14.3-RELEASE+and+Ports>

home | help