g_provider(9)
NAME
- g_new_providerf, g_destroy_provider, g_error_provider - GEOM
- providers
management
SYNOPSIS
#include <geom/geom.h>
struct g_provider *
g_new_providerf(struct g_geom *gp, const char *fmt, ...);
void
g_destroy_provider(struct g_provider *pp);
void
g_error_provider(struct g_provider *pp, int error);
DESCRIPTION
- A GEOM provider is the front gate at which a geom offers
- service. A
provider is ``a disk-like thing which appears in /dev'' - a
- logical disk
in other words. All providers have three main properties:
- name, sectorsize and size.
- The g_new_providerf() function creates a new provider on
- given geom gp.
The name of the provider, which will appear as device in de
- vfs(5), is
created in a printf(3)-like way from the rest of the argu
- ments. After
creation, the caller has to set the provider's mediasize and
- sectorsize,
as well as other desired initializations, and then call
g_error_provider() to reset the provider's error, which is
- initially set
to ENXIO.
- The g_destroy_provider() function destroys the given
- provider, cancels
all related pending events and removes the corresponding de
- vfs entry.
- The g_error_provider() function is used to set the
- provider's error
value. If set to a nonzero, all I/O requests will be de
- nied, as well as
increasing its access count will not be possible (error
- error will be
returned).
RESTRICTIONS/CONDITIONS
- g_new_provider():
- The provider name should be unique, but this is not
- enforced by
GEOM. If the name is not unique, one will end up with
- two (or
more) files with the same name, which is a programmer
- error.
- The geom gp has to have a start method defined.
- The topology lock has to be held.
- g_destroy_provider():
The provider must not have consumers attached.
- The access count has to be 0.
- The topology lock has to be held.
RETURN VALUES
- The g_new_providerf() function returns a pointer to the new
- ly created
provider.
EXAMPLES
- Create an example provider, set its parameters and make it
- usable.
struct g_provider *
create_example_provider(struct g_geom *gp)
{
struct g_provider *pp;
g_topology_lock();
pp = g_new_providerf(gp, "example_provider");
g_topology_unlock();
pp->mediasize = 65536;
pp->sectorsize = 512;
g_error_provider(pp, 0);
return (pp);
- }
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_by_name(9),
g_wither_geom(9)
AUTHORS
- This manual page was written by Pawel Jakub Dawidek
- <pjd@FreeBSD.org>.
- BSD January 16, 2004