Changeset View
Changeset View
Standalone View
Standalone View
head/sys/geom/mountver/g_mountver.c
Show First 20 Lines • Show All 398 Lines • ▼ Show 20 Lines | g_mountver_destroy_geom(struct gctl_req *req, struct g_class *mp, struct g_geom *gp) | ||||
return (g_mountver_destroy(gp, 0)); | return (g_mountver_destroy(gp, 0)); | ||||
} | } | ||||
static void | static void | ||||
g_mountver_ctl_create(struct gctl_req *req, struct g_class *mp) | g_mountver_ctl_create(struct gctl_req *req, struct g_class *mp) | ||||
{ | { | ||||
struct g_provider *pp; | struct g_provider *pp; | ||||
const char *name; | |||||
char param[16]; | char param[16]; | ||||
int i, *nargs; | int i, *nargs; | ||||
g_topology_assert(); | g_topology_assert(); | ||||
nargs = gctl_get_paraml(req, "nargs", sizeof(*nargs)); | nargs = gctl_get_paraml(req, "nargs", sizeof(*nargs)); | ||||
if (nargs == NULL) { | if (nargs == NULL) { | ||||
gctl_error(req, "No '%s' argument", "nargs"); | gctl_error(req, "No '%s' argument", "nargs"); | ||||
return; | return; | ||||
} | } | ||||
if (*nargs <= 0) { | if (*nargs <= 0) { | ||||
gctl_error(req, "Missing device(s)."); | gctl_error(req, "Missing device(s)."); | ||||
return; | return; | ||||
} | } | ||||
for (i = 0; i < *nargs; i++) { | for (i = 0; i < *nargs; i++) { | ||||
snprintf(param, sizeof(param), "arg%d", i); | snprintf(param, sizeof(param), "arg%d", i); | ||||
name = gctl_get_asciiparam(req, param); | pp = gctl_get_provider(req, param); | ||||
if (name == NULL) { | if (pp == NULL) | ||||
gctl_error(req, "No 'arg%d' argument", i); | |||||
return; | return; | ||||
} | |||||
if (strncmp(name, _PATH_DEV, strlen(_PATH_DEV)) == 0) | |||||
name += strlen(_PATH_DEV); | |||||
pp = g_provider_by_name(name); | |||||
if (pp == NULL) { | |||||
G_MOUNTVER_DEBUG(1, "Provider %s is invalid.", name); | |||||
gctl_error(req, "Provider %s is invalid.", name); | |||||
return; | |||||
} | |||||
if (g_mountver_create(req, mp, pp) != 0) | if (g_mountver_create(req, mp, pp) != 0) | ||||
return; | return; | ||||
} | } | ||||
} | } | ||||
static struct g_geom * | static struct g_geom * | ||||
g_mountver_find_geom(struct g_class *mp, const char *name) | g_mountver_find_geom(struct g_class *mp, const char *name) | ||||
{ | { | ||||
▲ Show 20 Lines • Show All 261 Lines • Show Last 20 Lines |