Index: sys/geom/cache/g_cache.c =================================================================== --- sys/geom/cache/g_cache.c +++ sys/geom/cache/g_cache.c @@ -726,11 +726,9 @@ strlcpy(md.md_magic, G_CACHE_MAGIC, sizeof(md.md_magic)); md.md_version = G_CACHE_VERSION; - name = gctl_get_asciiparam(req, "arg0"); - if (name == NULL) { - gctl_error(req, "No 'arg0' argument"); + name = gctl_get_devname(req, "arg0"); + if (name == NULL) return; - } strlcpy(md.md_name, name, sizeof(md.md_name)); size = gctl_get_paraml(req, "size", sizeof(*size)); @@ -790,11 +788,9 @@ return; } - name = gctl_get_asciiparam(req, "arg0"); - if (name == NULL) { - gctl_error(req, "No 'arg0' argument"); + name = gctl_get_devname(req, "arg0"); + if (name == NULL) return; - } sc = g_cache_find_device(mp, name); if (sc == NULL) { G_CACHE_DEBUG(1, "Device %s is invalid.", name); @@ -875,11 +871,9 @@ for (i = 0; i < *nargs; i++) { snprintf(param, sizeof(param), "arg%d", i); - name = gctl_get_asciiparam(req, param); - if (name == NULL) { - gctl_error(req, "No 'arg%d' argument", i); + name = gctl_get_devname(req, param); + if (name == NULL) return; - } sc = g_cache_find_device(mp, name); if (sc == NULL) { G_CACHE_DEBUG(1, "Device %s is invalid.", name); @@ -917,11 +911,9 @@ for (i = 0; i < *nargs; i++) { snprintf(param, sizeof(param), "arg%d", i); - name = gctl_get_asciiparam(req, param); - if (name == NULL) { - gctl_error(req, "No 'arg%d' argument", i); + name = gctl_get_devname(req, param); + if (name == NULL) return; - } sc = g_cache_find_device(mp, name); if (sc == NULL) { G_CACHE_DEBUG(1, "Device %s is invalid.", name); Index: sys/geom/concat/g_concat.c =================================================================== --- sys/geom/concat/g_concat.c +++ sys/geom/concat/g_concat.c @@ -869,11 +869,9 @@ bzero(&md, sizeof(md)); strlcpy(md.md_magic, G_CONCAT_MAGIC, sizeof(md.md_magic)); md.md_version = G_CONCAT_VERSION; - name = gctl_get_asciiparam(req, "arg0"); - if (name == NULL) { - gctl_error(req, "No 'arg%u' argument.", 0); + name = gctl_get_devname(req, "arg0"); + if (name == NULL) return; - } strlcpy(md.md_name, name, sizeof(md.md_name)); md.md_id = arc4random(); md.md_no = 0; @@ -902,7 +900,7 @@ snprintf(param, sizeof(param), "arg%u", no); pp = gctl_get_provider(req, param); if (pp == NULL) { - name = gctl_get_asciiparam(req, param); + name = gctl_get_devname(req, param); MPASS(name != NULL); sbuf_printf(sb, " %s", name); continue; @@ -929,9 +927,6 @@ struct g_concat_softc *sc; struct g_geom *gp; - if (strncmp(name, _PATH_DEV, strlen(_PATH_DEV)) == 0) - name += strlen(_PATH_DEV); - LIST_FOREACH(gp, &mp->geom, geom) { sc = gp->softc; if (sc == NULL) @@ -970,11 +965,9 @@ for (i = 0; i < (u_int)*nargs; i++) { snprintf(param, sizeof(param), "arg%u", i); - name = gctl_get_asciiparam(req, param); - if (name == NULL) { - gctl_error(req, "No 'arg%u' argument.", i); + name = gctl_get_devname(req, param); + if (name == NULL) return; - } sc = g_concat_find_device(mp, name); if (sc == NULL) { gctl_error(req, "No such device: %s.", name); @@ -995,8 +988,7 @@ struct g_concat_disk *disk; sx_assert(&sc->sc_disks_lock, SX_LOCKED); - if (strncmp(name, "/dev/", 5) == 0) - name += 5; + name = g_canonical_name(name); TAILQ_FOREACH(disk, &sc->sc_disks, d_next) { if (disk->d_consumer == NULL) continue; @@ -1081,11 +1073,9 @@ return; } - cname = gctl_get_asciiparam(req, "arg0"); - if (cname == NULL) { - gctl_error(req, "No 'arg%u' argument.", 0); + cname = gctl_get_devname(req, "arg0"); + if (cname == NULL) return; - } sc = g_concat_find_device(mp, cname); if (sc == NULL) { gctl_error(req, "No such device: %s.", cname); @@ -1104,13 +1094,9 @@ gp = sc->sc_geom; fcp = LIST_FIRST(&gp->consumer); - name = gctl_get_asciiparam(req, "arg1"); - if (name == NULL) { - gctl_error(req, "No 'arg%u' argument.", 1); + name = gctl_get_devname(req, "arg1"); + if (name == NULL) goto fail; - } - if (strncmp(name, "/dev/", strlen("/dev/")) == 0) - name += strlen("/dev/"); pp = g_provider_by_name(name); if (pp == NULL) { G_CONCAT_DEBUG(1, "Disk %s is invalid.", name); Index: sys/geom/eli/g_eli_ctl.c =================================================================== --- sys/geom/eli/g_eli_ctl.c +++ sys/geom/eli/g_eli_ctl.c @@ -174,8 +174,6 @@ struct g_provider *pp; struct g_consumer *cp; - if (strncmp(prov, _PATH_DEV, strlen(_PATH_DEV)) == 0) - prov += strlen(_PATH_DEV); LIST_FOREACH(gp, &mp->geom, geom) { sc = gp->softc; if (sc == NULL) @@ -225,11 +223,9 @@ for (i = 0; i < *nargs; i++) { snprintf(param, sizeof(param), "arg%d", i); - prov = gctl_get_asciiparam(req, param); - if (prov == NULL) { - gctl_error(req, "No 'arg%d' argument.", i); + prov = gctl_get_devname(req, param); + if (prov == NULL) return; - } sc = g_eli_find_device(mp, prov); if (sc == NULL) { gctl_error(req, "No such device: %s.", prov); @@ -487,11 +483,9 @@ for (i = 0; i < *nargs; i++) { snprintf(param, sizeof(param), "arg%d", i); - prov = gctl_get_asciiparam(req, param); - if (prov == NULL) { - gctl_error(req, "No 'arg%d' argument.", i); + prov = gctl_get_devname(req, param); + if (prov == NULL) return; - } sc = g_eli_find_device(mp, prov); if (sc == NULL) { /* @@ -652,11 +646,9 @@ g_topology_assert(); - name = gctl_get_asciiparam(req, "arg0"); - if (name == NULL) { - gctl_error(req, "No 'arg%u' argument.", 0); + name = gctl_get_devname(req, "arg0"); + if (name == NULL) return; - } key = gctl_get_param(req, "key", &keysize); if (key == NULL || keysize != G_ELI_USERKEYLEN) { gctl_error(req, "No '%s' argument.", "key"); @@ -764,11 +756,9 @@ nkey = 0; /* fixes causeless gcc warning */ - name = gctl_get_asciiparam(req, "arg0"); - if (name == NULL) { - gctl_error(req, "No 'arg%u' argument.", 0); + name = gctl_get_devname(req, "arg0"); + if (name == NULL) return; - } sc = g_eli_find_device(mp, name); if (sc == NULL) { gctl_error(req, "Provider %s is invalid.", name); @@ -951,11 +941,9 @@ for (i = 0; i < *nargs; i++) { snprintf(param, sizeof(param), "arg%d", i); - prov = gctl_get_asciiparam(req, param); - if (prov == NULL) { - G_ELI_DEBUG(0, "No 'arg%d' argument.", i); + prov = gctl_get_devname(req, param); + if (prov == NULL) continue; - } sc = g_eli_find_device(mp, prov); if (sc == NULL) { @@ -991,11 +979,9 @@ return; } - name = gctl_get_asciiparam(req, "arg0"); - if (name == NULL) { - gctl_error(req, "No 'arg%u' argument.", 0); + name = gctl_get_devname(req, "arg0"); + if (name == NULL) return; - } key = gctl_get_param(req, "key", &keysize); if (key == NULL || keysize != G_ELI_USERKEYLEN) { gctl_error(req, "No '%s' argument.", "key"); @@ -1142,11 +1128,9 @@ for (i = 0; i < *nargs; i++) { snprintf(param, sizeof(param), "arg%d", i); - prov = gctl_get_asciiparam(req, param); - if (prov == NULL) { - G_ELI_DEBUG(0, "No 'arg%d' argument.", i); + prov = gctl_get_devname(req, param); + if (prov == NULL) continue; - } sc = g_eli_find_device(mp, prov); if (sc == NULL) { Index: sys/geom/geom.h =================================================================== --- sys/geom/geom.h +++ sys/geom/geom.h @@ -421,11 +421,22 @@ int g_is_geom_thread(struct thread *td); +#else +#include +#include +#endif /* _KERNEL */ + #ifndef _PATH_DEV #define _PATH_DEV "/dev/" #endif -#endif /* _KERNEL */ +static __inline const char * +g_canonical_name(const char *path) +{ + if (strncmp(path, _PATH_DEV, sizeof(_PATH_DEV) - 1) == 0) + path += sizeof(_PATH_DEV) - 1; + return (path); +} /* geom_ctl.c */ int gctl_set_param(struct gctl_req *req, const char *param, void const *ptr, int len); @@ -439,6 +450,7 @@ void gctl_msg(struct gctl_req *req, const char *fmt, ...) __printflike(2, 3); void gctl_post_messages(struct gctl_req *req); struct g_class *gctl_get_class(struct gctl_req *req, char const *arg); +const char *gctl_get_devname(struct gctl_req *, const char *); struct g_geom *gctl_get_geom(struct gctl_req *req, struct g_class *mp, char const *arg); struct g_provider *gctl_get_provider(struct gctl_req *req, char const *arg); Index: sys/geom/geom_ctl.c =================================================================== --- sys/geom/geom_ctl.c +++ sys/geom/geom_ctl.c @@ -436,6 +436,20 @@ return (p); } +const char * +gctl_get_devname(struct gctl_req *req, const char *param) +{ + const char *name; + + name = gctl_get_asciiparam(req, param); + if (name == NULL) + gctl_error(req, "Missing %s argument", param); + else + name = g_canonical_name(name); + + return (name); +} + struct g_class * gctl_get_class(struct gctl_req *req, char const *arg) { @@ -480,11 +494,9 @@ char const *p; struct g_provider *pp; - p = gctl_get_asciiparam(req, arg); - if (p == NULL) { - gctl_error(req, "Missing '%s' argument", arg); + p = gctl_get_devname(req, arg); + if (p == NULL) return (NULL); - } pp = g_provider_by_name(p); if (pp != NULL) return (pp); Index: sys/geom/geom_dev.c =================================================================== --- sys/geom/geom_dev.c +++ sys/geom/geom_dev.c @@ -179,9 +179,8 @@ { struct diocskerneldump_arg kda; struct g_consumer *cp; - const char *devprefix = _PATH_DEV, *devname; + const char *devname; int error; - size_t len; bzero(&kda, sizeof(kda)); kda.kda_index = KDA_APPEND; @@ -189,11 +188,8 @@ if (dumpdev == NULL) return (0); - len = strlen(devprefix); devname = devtoname(dev); - if (strcmp(devname, dumpdev) != 0 && - (strncmp(dumpdev, devprefix, len) != 0 || - strcmp(devname, dumpdev + len) != 0)) + if (strcmp(devname, g_canonical_name(dumpdev)) != 0) return (0); cp = (struct g_consumer *)dev->si_drv2; Index: sys/geom/geom_subr.c =================================================================== --- sys/geom/geom_subr.c +++ sys/geom/geom_subr.c @@ -765,8 +765,7 @@ struct g_geom *gp; struct g_provider *pp, *wpp; - if (strncmp(arg, _PATH_DEV, sizeof(_PATH_DEV) - 1) == 0) - arg += sizeof(_PATH_DEV) - 1; + arg = g_canonical_name(arg); wpp = NULL; LIST_FOREACH(cp, &g_classes, class) { Index: sys/geom/journal/g_journal.c =================================================================== --- sys/geom/journal/g_journal.c +++ sys/geom/journal/g_journal.c @@ -2512,8 +2512,6 @@ struct g_geom *gp; struct g_provider *pp; - if (strncmp(name, _PATH_DEV, 5) == 0) - name += 5; LIST_FOREACH(gp, &mp->geom, geom) { sc = gp->softc; if (sc == NULL) @@ -2554,11 +2552,9 @@ for (i = 0; i < *nargs; i++) { snprintf(param, sizeof(param), "arg%d", i); - name = gctl_get_asciiparam(req, param); - if (name == NULL) { - gctl_error(req, "No 'arg%d' argument.", i); + name = gctl_get_devname(req, param); + if (name == NULL) return; - } sc = g_journal_find_device(mp, name); if (sc == NULL) { gctl_error(req, "No such device: %s.", name); Index: sys/geom/label/g_label.c =================================================================== --- sys/geom/label/g_label.c +++ sys/geom/label/g_label.c @@ -475,8 +475,6 @@ { u_int i; - if (strncmp(name, _PATH_DEV, strlen(_PATH_DEV)) == 0) - name += strlen(_PATH_DEV); for (i = 0; g_labels[i] != NULL; i++) { if (strncmp(name, g_labels[i]->ld_dirprefix, strlen(g_labels[i]->ld_dirprefix)) == 0) { @@ -531,11 +529,9 @@ for (i = 0; i < *nargs; i++) { snprintf(param, sizeof(param), "arg%d", i); - name = gctl_get_asciiparam(req, param); - if (name == NULL) { - gctl_error(req, "No 'arg%d' argument", i); + name = gctl_get_devname(req, param); + if (name == NULL) return; - } gp = g_label_find_geom(mp, name); if (gp == NULL) { G_LABEL_DEBUG(1, "Label %s is invalid.", name); Index: sys/geom/mirror/g_mirror_ctl.c =================================================================== --- sys/geom/mirror/g_mirror_ctl.c +++ sys/geom/mirror/g_mirror_ctl.c @@ -131,8 +131,6 @@ struct g_mirror_disk *disk; sx_assert(&sc->sc_lock, SX_XLOCKED); - if (strncmp(name, _PATH_DEV, 5) == 0) - name += 5; LIST_FOREACH(disk, &sc->sc_disks, d_next) { if (disk->d_consumer == NULL) continue; @@ -165,11 +163,9 @@ gctl_error(req, "Invalid number of arguments."); return; } - name = gctl_get_asciiparam(req, "arg0"); - if (name == NULL) { - gctl_error(req, "No 'arg%u' argument.", 0); + name = gctl_get_devname(req, "arg0"); + if (name == NULL) return; - } balancep = gctl_get_asciiparam(req, "balance"); if (balancep == NULL) { gctl_error(req, "No '%s' argument.", "balance"); @@ -220,7 +216,7 @@ * Note: be WARNS safe, by always assigning prov and only throw an * error if *priority != -1. */ - prov = gctl_get_asciiparam(req, "arg1"); + prov = gctl_get_devname(req, "arg1"); if (*priority > -1) { if (prov == NULL) { gctl_error(req, "Priority needs a disk name"); @@ -393,11 +389,9 @@ strlcpy(md.md_magic, G_MIRROR_MAGIC, sizeof(md.md_magic)); md.md_version = G_MIRROR_VERSION; - name = gctl_get_asciiparam(req, "arg0"); - if (name == NULL) { - gctl_error(req, "No 'arg%u' argument.", 0); + name = gctl_get_devname(req, "arg0"); + if (name == NULL) return; - } strlcpy(md.md_name, name, sizeof(md.md_name)); md.md_mid = arc4random(); md.md_all = *nargs - 1; @@ -497,7 +491,7 @@ snprintf(param, sizeof(param), "arg%u", no); pp = gctl_get_provider(req, param); if (pp == NULL) { - name = gctl_get_asciiparam(req, param); + name = gctl_get_devname(req, param); MPASS(name != NULL); sbuf_printf(sb, " %s", name); continue; @@ -544,11 +538,9 @@ gctl_error(req, "Too few arguments."); return; } - name = gctl_get_asciiparam(req, "arg0"); - if (name == NULL) { - gctl_error(req, "No 'arg%u' argument.", 0); + name = gctl_get_devname(req, "arg0"); + if (name == NULL) return; - } sc = g_mirror_find_device(mp, name); if (sc == NULL) { gctl_error(req, "No such device: %s.", name); @@ -556,11 +548,9 @@ } for (i = 1; i < (u_int)*nargs; i++) { snprintf(param, sizeof(param), "arg%u", i); - name = gctl_get_asciiparam(req, param); - if (name == NULL) { - gctl_error(req, "No 'arg%u' argument.", i); + name = gctl_get_devname(req, param); + if (name == NULL) continue; - } disk = g_mirror_find_disk(sc, name); if (disk == NULL) { gctl_error(req, "No such provider: %s.", name); @@ -650,11 +640,9 @@ gctl_error(req, "No '%s' argument.", "hardcode"); return; } - name = gctl_get_asciiparam(req, "arg0"); - if (name == NULL) { - gctl_error(req, "No 'arg%u' argument.", 0); + name = gctl_get_devname(req, "arg0"); + if (name == NULL) return; - } sc = g_mirror_find_launched_device(mp, name, M_WAITOK); if (sc == NULL) { gctl_error(req, "No such device: %s.", name); @@ -809,11 +797,9 @@ gctl_error(req, "Too few arguments."); return; } - name = gctl_get_asciiparam(req, "arg0"); - if (name == NULL) { - gctl_error(req, "No 'arg%u' argument.", 0); + name = gctl_get_devname(req, "arg0"); + if (name == NULL) return; - } sc = g_mirror_find_device(mp, name); if (sc == NULL) { gctl_error(req, "No such device: %s.", name); @@ -828,11 +814,9 @@ active = g_mirror_ndisks(sc, G_MIRROR_DISK_STATE_ACTIVE); for (i = 1; i < (u_int)*nargs; i++) { snprintf(param, sizeof(param), "arg%u", i); - name = gctl_get_asciiparam(req, param); - if (name == NULL) { - gctl_error(req, "No 'arg%u' argument.", i); + name = gctl_get_devname(req, param); + if (name == NULL) continue; - } disk = g_mirror_find_disk(sc, name); if (disk == NULL) { gctl_error(req, "No such provider: %s.", name); @@ -873,11 +857,9 @@ gctl_error(req, "Missing device."); return; } - name = gctl_get_asciiparam(req, "arg0"); - if (name == NULL) { - gctl_error(req, "No 'arg%u' argument.", 0); + name = gctl_get_devname(req, "arg0"); + if (name == NULL) return; - } s = gctl_get_asciiparam(req, "size"); if (s == NULL) { gctl_error(req, "No '%s' argument.", "size"); @@ -941,11 +923,9 @@ gctl_error(req, "Too few arguments."); return; } - name = gctl_get_asciiparam(req, "arg0"); - if (name == NULL) { - gctl_error(req, "No 'arg%u' argument.", 0); + name = gctl_get_devname(req, "arg0"); + if (name == NULL) return; - } sc = g_mirror_find_device(mp, name); if (sc == NULL) { gctl_error(req, "No such device: %s.", name); @@ -954,11 +934,9 @@ active = g_mirror_ndisks(sc, G_MIRROR_DISK_STATE_ACTIVE); for (i = 1; i < (u_int)*nargs; i++) { snprintf(param, sizeof(param), "arg%u", i); - name = gctl_get_asciiparam(req, param); - if (name == NULL) { - gctl_error(req, "No 'arg%u' argument.", i); + name = gctl_get_devname(req, param); + if (name == NULL) continue; - } disk = g_mirror_find_disk(sc, name); if (disk == NULL) { gctl_error(req, "No such provider: %s.", name); @@ -1006,11 +984,9 @@ for (i = 0; i < (u_int)*nargs; i++) { snprintf(param, sizeof(param), "arg%u", i); - name = gctl_get_asciiparam(req, param); - if (name == NULL) { - gctl_error(req, "No 'arg%u' argument.", i); + name = gctl_get_devname(req, param); + if (name == NULL) return; - } sc = g_mirror_find_device(mp, name); if (sc == NULL) { gctl_error(req, "No such device: %s.", name); @@ -1062,11 +1038,9 @@ for (i = 0; i < (u_int)*nargs; i++) { snprintf(param, sizeof(param), "arg%u", i); - name = gctl_get_asciiparam(req, param); - if (name == NULL) { - gctl_error(req, "No 'arg%u' argument.", i); + name = gctl_get_devname(req, param); + if (name == NULL) return; - } sc = g_mirror_find_device(mp, name); if (sc == NULL) { gctl_error(req, "No such device: %s.", name); Index: sys/geom/mountver/g_mountver.c =================================================================== --- sys/geom/mountver/g_mountver.c +++ sys/geom/mountver/g_mountver.c @@ -466,13 +466,9 @@ for (i = 0; i < *nargs; i++) { snprintf(param, sizeof(param), "arg%d", i); - name = gctl_get_asciiparam(req, param); - if (name == NULL) { - gctl_error(req, "No 'arg%d' argument", i); + name = gctl_get_devname(req, param); + if (name == NULL) return; - } - if (strncmp(name, _PATH_DEV, strlen(_PATH_DEV)) == 0) - name += strlen(_PATH_DEV); gp = g_mountver_find_geom(mp, name); if (gp == NULL) { G_MOUNTVER_DEBUG(1, "Device %s is invalid.", name); Index: sys/geom/multipath/g_multipath.c =================================================================== --- sys/geom/multipath/g_multipath.c +++ sys/geom/multipath/g_multipath.c @@ -951,16 +951,13 @@ struct g_consumer *cp; struct g_provider *pp; const char *mpname; - static const char devpf[6] = _PATH_DEV; int error; g_topology_assert(); - mpname = gctl_get_asciiparam(req, "arg0"); - if (mpname == NULL) { - gctl_error(req, "No 'arg0' argument"); + mpname = gctl_get_devname(req, "arg0"); + if (mpname == NULL) return; - } gp = g_multipath_find_geom(mp, mpname); if (gp == NULL) { gctl_error(req, "Device %s is invalid", mpname); @@ -968,8 +965,6 @@ } sc = gp->softc; - if (strncmp(name, devpf, 5) == 0) - name += 5; pp = g_provider_by_name(name); if (pp == NULL) { gctl_error(req, "Provider %s is invalid", name); @@ -1014,16 +1009,13 @@ struct g_multipath_softc *sc; struct g_consumer *cp; const char *name, *mpname; - static const char devpf[6] = _PATH_DEV; int *nargs; g_topology_assert(); - mpname = gctl_get_asciiparam(req, "arg0"); - if (mpname == NULL) { - gctl_error(req, "No 'arg0' argument"); + mpname = gctl_get_devname(req, "arg0"); + if (mpname == NULL) return; - } gp = g_multipath_find_geom(mp, mpname); if (gp == NULL) { gctl_error(req, "Device %s is invalid", mpname); @@ -1041,14 +1033,9 @@ return; } - name = gctl_get_asciiparam(req, "arg1"); - if (name == NULL) { - gctl_error(req, "No 'arg1' argument"); + name = gctl_get_devname(req, "arg1"); + if (name == NULL) return; - } - if (strncmp(name, devpf, 5) == 0) { - name += 5; - } LIST_FOREACH(cp, &gp->consumer, consumer) { if (cp->provider != NULL @@ -1085,22 +1072,18 @@ struct g_geom *gp; const char *mpname, *name; - mpname = gctl_get_asciiparam(req, "arg0"); - if (mpname == NULL) { - gctl_error(req, "No 'arg0' argument"); + mpname = gctl_get_devname(req, "arg0"); + if (mpname == NULL) return; - } gp = g_multipath_find_geom(mp, mpname); if (gp == NULL) { gctl_error(req, "Device %s not found", mpname); return; } - name = gctl_get_asciiparam(req, "arg1"); - if (name == NULL) { - gctl_error(req, "No 'arg1' argument"); + name = gctl_get_devname(req, "arg1"); + if (name == NULL) return; - } g_multipath_ctl_add_name(req, mp, name); } @@ -1122,11 +1105,9 @@ return; } - mpname = gctl_get_asciiparam(req, "arg0"); - if (mpname == NULL) { - gctl_error(req, "No 'arg0' argument"); + mpname = gctl_get_devname(req, "arg0"); + if (mpname == NULL) return; - } gp = g_multipath_find_geom(mp, mpname); if (gp != NULL) { gctl_error(req, "Device %s already exist", mpname); @@ -1157,7 +1138,9 @@ for (i = 1; i < *nargs; i++) { snprintf(param, sizeof(param), "arg%d", i); - name = gctl_get_asciiparam(req, param); + name = gctl_get_devname(req, param); + if (name == NULL) + continue; g_multipath_ctl_add_name(req, mp, name); } @@ -1178,11 +1161,9 @@ g_topology_assert(); - name = gctl_get_asciiparam(req, "arg0"); - if (name == NULL) { - gctl_error(req, "No 'arg0' argument"); + name = gctl_get_devname(req, "arg0"); + if (name == NULL) return; - } gp = g_multipath_find_geom(mp, name); if (gp == NULL) { gctl_error(req, "Device %s is invalid", name); @@ -1224,11 +1205,9 @@ const char *mpname, *name; int found; - mpname = gctl_get_asciiparam(req, "arg0"); - if (mpname == NULL) { - gctl_error(req, "No 'arg0' argument"); + mpname = gctl_get_devname(req, "arg0"); + if (mpname == NULL) return; - } gp = g_multipath_find_geom(mp, mpname); if (gp == NULL) { gctl_error(req, "Device %s not found", mpname); @@ -1236,11 +1215,9 @@ } sc = gp->softc; - name = gctl_get_asciiparam(req, "arg1"); - if (name == NULL) { - gctl_error(req, "No 'arg1' argument"); + name = gctl_get_devname(req, "arg1"); + if (name == NULL) return; - } found = 0; mtx_lock(&sc->sc_mtx); @@ -1279,11 +1256,9 @@ uintptr_t *cnt; int found; - mpname = gctl_get_asciiparam(req, "arg0"); - if (mpname == NULL) { - gctl_error(req, "No 'arg0' argument"); + mpname = gctl_get_devname(req, "arg0"); + if (mpname == NULL) return; - } gp = g_multipath_find_geom(mp, mpname); if (gp == NULL) { gctl_error(req, "Device %s not found", mpname); @@ -1291,11 +1266,9 @@ } sc = gp->softc; - name = gctl_get_asciiparam(req, "arg1"); - if (name == NULL) { - gctl_error(req, "No 'arg1' argument"); + name = gctl_get_devname(req, "arg1"); + if (name == NULL) return; - } found = 0; mtx_lock(&sc->sc_mtx); @@ -1351,11 +1324,9 @@ g_topology_assert(); - name = gctl_get_asciiparam(req, "arg0"); - if (name == NULL) { - gctl_error(req, "No 'arg0' argument"); + name = gctl_get_devname(req, "arg0"); + if (name == NULL) return; - } gp = g_multipath_find_geom(mp, name); if (gp == NULL) { gctl_error(req, "Device %s is invalid", name); @@ -1379,11 +1350,9 @@ g_topology_assert(); - name = gctl_get_asciiparam(req, "arg0"); - if (name == NULL) { - gctl_error(req, "No 'arg0' argument"); + name = gctl_get_devname(req, "arg0"); + if (name == NULL) return; - } gp = g_multipath_find_geom(mp, name); if (gp == NULL) { gctl_error(req, "Device %s is invalid", name); @@ -1425,11 +1394,9 @@ g_topology_assert(); - name = gctl_get_asciiparam(req, "arg0"); - if (name == NULL) { - gctl_error(req, "No 'arg0' argument"); + name = gctl_get_devname(req, "arg0"); + if (name == NULL) return; - } gp = g_multipath_find_geom(mp, name); if (gp == NULL) { gctl_error(req, "Device %s is invalid", name); @@ -1454,11 +1421,9 @@ sb = sbuf_new_auto(); g_topology_assert(); - name = gctl_get_asciiparam(req, "arg0"); - if (name == NULL) { - gctl_error(req, "No 'arg0' argument"); + name = gctl_get_devname(req, "arg0"); + if (name == NULL) return; - } gp = g_multipath_find_geom(mp, name); if (gp == NULL) { gctl_error(req, "Device %s is invalid", name); Index: sys/geom/nop/g_nop.c =================================================================== --- sys/geom/nop/g_nop.c +++ sys/geom/nop/g_nop.c @@ -665,8 +665,8 @@ return; } } - physpath = gctl_get_asciiparam(req, "physpath"); - gnopname = gctl_get_asciiparam(req, "gnopname"); + physpath = gctl_get_devname(req, "physpath"); + gnopname = gctl_get_devname(req, "gnopname"); for (i = 0; i < *nargs; i++) { snprintf(param, sizeof(param), "arg%d", i); @@ -835,13 +835,9 @@ for (i = 0; i < *nargs; i++) { snprintf(param, sizeof(param), "arg%d", i); - name = gctl_get_asciiparam(req, param); - if (name == NULL) { - gctl_error(req, "No 'arg%d' argument", i); + name = gctl_get_devname(req, param); + if (name == NULL) return; - } - if (strncmp(name, _PATH_DEV, strlen(_PATH_DEV)) == 0) - name += strlen(_PATH_DEV); gp = g_nop_find_geom(mp, name); if (gp == NULL) { G_NOP_DEBUG(1, "Device %s is invalid.", name); Index: sys/geom/part/g_part.c =================================================================== --- sys/geom/part/g_part.c +++ sys/geom/part/g_part.c @@ -530,11 +530,9 @@ struct g_geom *gp; const char *gname; - gname = gctl_get_asciiparam(req, name); + gname = gctl_get_devname(req, name); if (gname == NULL) return (ENOATTR); - if (strncmp(gname, _PATH_DEV, sizeof(_PATH_DEV) - 1) == 0) - gname += sizeof(_PATH_DEV) - 1; gp = g_part_find_geom(gname); if (gp == NULL) { gctl_error(req, "%d %s '%s'", EINVAL, name, gname); @@ -551,11 +549,9 @@ struct g_provider *pp; const char *pname; - pname = gctl_get_asciiparam(req, name); + pname = gctl_get_devname(req, name); if (pname == NULL) return (ENOATTR); - if (strncmp(pname, _PATH_DEV, sizeof(_PATH_DEV) - 1) == 0) - pname += sizeof(_PATH_DEV) - 1; pp = g_provider_by_name(pname); if (pp == NULL) { gctl_error(req, "%d %s '%s'", EINVAL, name, pname); Index: sys/geom/raid/g_raid.c =================================================================== --- sys/geom/raid/g_raid.c +++ sys/geom/raid/g_raid.c @@ -775,8 +775,6 @@ g_topology_assert(); - if (strncmp(name, _PATH_DEV, 5) == 0) - name += 5; pp = g_provider_by_name(name); if (pp == NULL) return (NULL); Index: sys/geom/raid/md_ddf.c =================================================================== --- sys/geom/raid/md_ddf.c +++ sys/geom/raid/md_ddf.c @@ -2308,9 +2308,8 @@ bzero(offs, sizeof(offs)); for (i = 0; i < numdisks; i++) { snprintf(arg, sizeof(arg), "arg%d", i + 3); - diskname = gctl_get_asciiparam(req, arg); + diskname = gctl_get_devname(req, arg); if (diskname == NULL) { - gctl_error(req, "No disk name (%s).", arg); error = -6; break; } @@ -2612,14 +2611,11 @@ } for (i = 1; i < *nargs; i++) { snprintf(arg, sizeof(arg), "arg%d", i); - diskname = gctl_get_asciiparam(req, arg); + diskname = gctl_get_devname(req, arg); if (diskname == NULL) { - gctl_error(req, "No disk name (%s).", arg); error = -2; break; } - if (strncmp(diskname, _PATH_DEV, 5) == 0) - diskname += 5; TAILQ_FOREACH(disk, &sc->sc_disks, d_next) { if (disk->d_consumer != NULL && @@ -2664,9 +2660,8 @@ for (i = 1; i < *nargs; i++) { /* Get disk name. */ snprintf(arg, sizeof(arg), "arg%d", i); - diskname = gctl_get_asciiparam(req, arg); + diskname = gctl_get_devname(req, arg); if (diskname == NULL) { - gctl_error(req, "No disk name (%s).", arg); error = -3; break; } Index: sys/geom/raid/md_intel.c =================================================================== --- sys/geom/raid/md_intel.c +++ sys/geom/raid/md_intel.c @@ -1747,9 +1747,8 @@ sectorsize = 0; for (i = 0; i < numdisks; i++) { snprintf(arg, sizeof(arg), "arg%d", i + 3); - diskname = gctl_get_asciiparam(req, arg); + diskname = gctl_get_devname(req, arg); if (diskname == NULL) { - gctl_error(req, "No disk name (%s).", arg); error = -6; break; } @@ -2199,14 +2198,11 @@ } for (i = 1; i < *nargs; i++) { snprintf(arg, sizeof(arg), "arg%d", i); - diskname = gctl_get_asciiparam(req, arg); + diskname = gctl_get_devname(req, arg); if (diskname == NULL) { - gctl_error(req, "No disk name (%s).", arg); error = -2; break; } - if (strncmp(diskname, _PATH_DEV, 5) == 0) - diskname += 5; TAILQ_FOREACH(disk, &sc->sc_disks, d_next) { if (disk->d_consumer != NULL && @@ -2270,9 +2266,8 @@ for (i = 1; i < *nargs; i++) { /* Get disk name. */ snprintf(arg, sizeof(arg), "arg%d", i); - diskname = gctl_get_asciiparam(req, arg); + diskname = gctl_get_devname(req, arg); if (diskname == NULL) { - gctl_error(req, "No disk name (%s).", arg); error = -3; break; } Index: sys/geom/raid/md_jmicron.c =================================================================== --- sys/geom/raid/md_jmicron.c +++ sys/geom/raid/md_jmicron.c @@ -1079,9 +1079,8 @@ sectorsize = 0; for (i = 0; i < numdisks; i++) { snprintf(arg, sizeof(arg), "arg%d", i + 3); - diskname = gctl_get_asciiparam(req, arg); + diskname = gctl_get_devname(req, arg); if (diskname == NULL) { - gctl_error(req, "No disk name (%s).", arg); error = -6; break; } @@ -1260,14 +1259,11 @@ } for (i = 1; i < *nargs; i++) { snprintf(arg, sizeof(arg), "arg%d", i); - diskname = gctl_get_asciiparam(req, arg); + diskname = gctl_get_devname(req, arg); if (diskname == NULL) { - gctl_error(req, "No disk name (%s).", arg); error = -2; break; } - if (strncmp(diskname, _PATH_DEV, 5) == 0) - diskname += 5; TAILQ_FOREACH(disk, &sc->sc_disks, d_next) { if (disk->d_consumer != NULL && @@ -1331,9 +1327,8 @@ for (i = 1; i < *nargs; i++) { /* Get disk name. */ snprintf(arg, sizeof(arg), "arg%d", i); - diskname = gctl_get_asciiparam(req, arg); + diskname = gctl_get_devname(req, arg); if (diskname == NULL) { - gctl_error(req, "No disk name (%s).", arg); error = -3; break; } Index: sys/geom/raid/md_nvidia.c =================================================================== --- sys/geom/raid/md_nvidia.c +++ sys/geom/raid/md_nvidia.c @@ -1083,9 +1083,8 @@ sectorsize = 0; for (i = 0; i < numdisks; i++) { snprintf(arg, sizeof(arg), "arg%d", i + 3); - diskname = gctl_get_asciiparam(req, arg); + diskname = gctl_get_devname(req, arg); if (diskname == NULL) { - gctl_error(req, "No disk name (%s).", arg); error = -6; break; } @@ -1265,14 +1264,11 @@ } for (i = 1; i < *nargs; i++) { snprintf(arg, sizeof(arg), "arg%d", i); - diskname = gctl_get_asciiparam(req, arg); + diskname = gctl_get_devname(req, arg); if (diskname == NULL) { - gctl_error(req, "No disk name (%s).", arg); error = -2; break; } - if (strncmp(diskname, _PATH_DEV, 5) == 0) - diskname += 5; TAILQ_FOREACH(disk, &sc->sc_disks, d_next) { if (disk->d_consumer != NULL && @@ -1336,9 +1332,8 @@ for (i = 1; i < *nargs; i++) { /* Get disk name. */ snprintf(arg, sizeof(arg), "arg%d", i); - diskname = gctl_get_asciiparam(req, arg); + diskname = gctl_get_devname(req, arg); if (diskname == NULL) { - gctl_error(req, "No disk name (%s).", arg); error = -3; break; } Index: sys/geom/raid/md_promise.c =================================================================== --- sys/geom/raid/md_promise.c +++ sys/geom/raid/md_promise.c @@ -1319,9 +1319,8 @@ bzero(offs, sizeof(offs)); for (i = 0; i < numdisks; i++) { snprintf(arg, sizeof(arg), "arg%d", i + 3); - diskname = gctl_get_asciiparam(req, arg); + diskname = gctl_get_devname(req, arg); if (diskname == NULL) { - gctl_error(req, "No disk name (%s).", arg); error = -6; break; } @@ -1601,14 +1600,11 @@ } for (i = 1; i < *nargs; i++) { snprintf(arg, sizeof(arg), "arg%d", i); - diskname = gctl_get_asciiparam(req, arg); + diskname = gctl_get_devname(req, arg); if (diskname == NULL) { - gctl_error(req, "No disk name (%s).", arg); error = -2; break; } - if (strncmp(diskname, _PATH_DEV, 5) == 0) - diskname += 5; TAILQ_FOREACH(disk, &sc->sc_disks, d_next) { if (disk->d_consumer != NULL && @@ -1653,9 +1649,8 @@ for (i = 1; i < *nargs; i++) { /* Get disk name. */ snprintf(arg, sizeof(arg), "arg%d", i); - diskname = gctl_get_asciiparam(req, arg); + diskname = gctl_get_devname(req, arg); if (diskname == NULL) { - gctl_error(req, "No disk name (%s).", arg); error = -3; break; } Index: sys/geom/raid/md_sii.c =================================================================== --- sys/geom/raid/md_sii.c +++ sys/geom/raid/md_sii.c @@ -1167,9 +1167,8 @@ sectorsize = 0; for (i = 0; i < numdisks; i++) { snprintf(arg, sizeof(arg), "arg%d", i + 3); - diskname = gctl_get_asciiparam(req, arg); + diskname = gctl_get_devname(req, arg); if (diskname == NULL) { - gctl_error(req, "No disk name (%s).", arg); error = -6; break; } @@ -1347,14 +1346,11 @@ } for (i = 1; i < *nargs; i++) { snprintf(arg, sizeof(arg), "arg%d", i); - diskname = gctl_get_asciiparam(req, arg); + diskname = gctl_get_devname(req, arg); if (diskname == NULL) { - gctl_error(req, "No disk name (%s).", arg); error = -2; break; } - if (strncmp(diskname, _PATH_DEV, 5) == 0) - diskname += 5; TAILQ_FOREACH(disk, &sc->sc_disks, d_next) { if (disk->d_consumer != NULL && @@ -1418,9 +1414,8 @@ for (i = 1; i < *nargs; i++) { /* Get disk name. */ snprintf(arg, sizeof(arg), "arg%d", i); - diskname = gctl_get_asciiparam(req, arg); + diskname = gctl_get_devname(req, arg); if (diskname == NULL) { - gctl_error(req, "No disk name (%s).", arg); error = -3; break; } Index: sys/geom/raid3/g_raid3_ctl.c =================================================================== --- sys/geom/raid3/g_raid3_ctl.c +++ sys/geom/raid3/g_raid3_ctl.c @@ -77,8 +77,6 @@ u_int n; sx_assert(&sc->sc_lock, SX_XLOCKED); - if (strncmp(name, _PATH_DEV, 5) == 0) - name += 5; for (n = 0; n < sc->sc_ndisks; n++) { disk = &sc->sc_disks[n]; if (disk->d_state == G_RAID3_DISK_STATE_NODISK) @@ -181,11 +179,9 @@ gctl_error(req, "Nothing has changed."); return; } - name = gctl_get_asciiparam(req, "arg0"); - if (name == NULL) { - gctl_error(req, "No 'arg%u' argument.", 0); + name = gctl_get_devname(req, "arg0"); + if (name == NULL) return; - } sc = g_raid3_find_device(mp, name); if (sc == NULL) { gctl_error(req, "No such device: %s.", name); @@ -278,19 +274,16 @@ gctl_error(req, "Invalid number of arguments."); return; } - name = gctl_get_asciiparam(req, "arg0"); - if (name == NULL) { - gctl_error(req, "No 'arg%u' argument.", 0); + name = gctl_get_devname(req, "arg0"); + if (name == NULL) return; - } sc = g_raid3_find_device(mp, name); if (sc == NULL) { gctl_error(req, "No such device: %s.", name); return; } - name = gctl_get_asciiparam(req, "arg1"); + name = gctl_get_devname(req, "arg1"); if (name == NULL) { - gctl_error(req, "No 'arg%u' argument.", 1); sx_xunlock(&sc->sc_lock); return; } @@ -362,11 +355,9 @@ for (i = 0; i < (u_int)*nargs; i++) { snprintf(param, sizeof(param), "arg%u", i); - name = gctl_get_asciiparam(req, param); - if (name == NULL) { - gctl_error(req, "No 'arg%u' argument.", i); + name = gctl_get_devname(req, param); + if (name == NULL) return; - } sc = g_raid3_find_device(mp, name); if (sc == NULL) { gctl_error(req, "No such device: %s.", name); @@ -444,11 +435,9 @@ goto end; } g_topology_unlock(); - name = gctl_get_asciiparam(req, "arg0"); - if (name == NULL) { - gctl_error(req, "No 'arg%u' argument.", 0); + name = gctl_get_devname(req, "arg0"); + if (name == NULL) goto end; - } sc = g_raid3_find_device(mp, name); if (sc == NULL) { gctl_error(req, "No such device: %s.", name); @@ -548,11 +537,9 @@ gctl_error(req, "No '%s' argument.", "no"); return; } - name = gctl_get_asciiparam(req, "arg0"); - if (name == NULL) { - gctl_error(req, "No 'arg%u' argument.", 0); + name = gctl_get_devname(req, "arg0"); + if (name == NULL) return; - } sc = g_raid3_find_device(mp, name); if (sc == NULL) { gctl_error(req, "No such device: %s.", name); Index: sys/geom/shsec/g_shsec.c =================================================================== --- sys/geom/shsec/g_shsec.c +++ sys/geom/shsec/g_shsec.c @@ -768,11 +768,9 @@ for (i = 0; i < (u_int)*nargs; i++) { snprintf(param, sizeof(param), "arg%u", i); - name = gctl_get_asciiparam(req, param); - if (name == NULL) { - gctl_error(req, "No 'arg%u' argument.", i); + name = gctl_get_devname(req, param); + if (name == NULL) return; - } sc = g_shsec_find_device(mp, name); if (sc == NULL) { gctl_error(req, "No such device: %s.", name); Index: sys/geom/stripe/g_stripe.c =================================================================== --- sys/geom/stripe/g_stripe.c +++ sys/geom/stripe/g_stripe.c @@ -1063,11 +1063,9 @@ strlcpy(md.md_magic, G_STRIPE_MAGIC, sizeof(md.md_magic)); md.md_version = G_STRIPE_VERSION; - name = gctl_get_asciiparam(req, "arg0"); - if (name == NULL) { - gctl_error(req, "No 'arg%u' argument.", 0); + name = gctl_get_devname(req, "arg0"); + if (name == NULL) return; - } strlcpy(md.md_name, name, sizeof(md.md_name)); md.md_id = arc4random(); md.md_no = 0; @@ -1103,7 +1101,7 @@ snprintf(param, sizeof(param), "arg%u", no); pp = gctl_get_provider(req, param); if (pp == NULL) { - name = gctl_get_asciiparam(req, param); + name = gctl_get_devname(req, param); MPASS(name != NULL); sbuf_printf(sb, " %s", name); continue; @@ -1168,11 +1166,9 @@ for (i = 0; i < (u_int)*nargs; i++) { snprintf(param, sizeof(param), "arg%u", i); - name = gctl_get_asciiparam(req, param); - if (name == NULL) { - gctl_error(req, "No 'arg%u' argument.", i); + name = gctl_get_devname(req, param); + if (name == NULL) return; - } sc = g_stripe_find_device(mp, name); if (sc == NULL) { gctl_error(req, "No such device: %s.", name); Index: sys/geom/union/g_union.c =================================================================== --- sys/geom/union/g_union.c +++ sys/geom/union/g_union.c @@ -170,7 +170,10 @@ offset = g_union_fetcharg(req, "offset"); size = g_union_fetcharg(req, "size"); secsize = g_union_fetcharg(req, "secsize"); - gunionname = gctl_get_asciiparam(req, "gunionname"); + gunionname = gctl_get_devname(req, "gunionname"); + if (gunionname == NULL) + /* error message provided by gctl_get_devname() */ + return; upperpp = gctl_get_provider(req, "arg0"); lowerpp = gctl_get_provider(req, "arg1"); @@ -423,13 +426,9 @@ for (i = 0; i < *nargs; i++) { snprintf(param, sizeof(param), "arg%d", i); - name = gctl_get_asciiparam(req, param); - if (name == NULL) { - gctl_msg(req, "No '%s' argument.", param); + name = gctl_get_devname(req, param); + if (name == NULL) continue; - } - if (strncmp(name, _PATH_DEV, strlen(_PATH_DEV)) == 0) - name += strlen(_PATH_DEV); gp = g_union_find_geom(mp, name); if (gp == NULL) { gctl_msg(req, "Device %s is invalid.", name); Index: sys/geom/vinum/geom_vinum_share.c =================================================================== --- sys/geom/vinum/geom_vinum_share.c +++ sys/geom/vinum/geom_vinum_share.c @@ -50,7 +50,6 @@ #include #include -#include #define iswhite(c) (((c) == ' ') || ((c) == '\t')) #else #include @@ -62,6 +61,8 @@ #define g_free free #endif /* _KERNEL */ +#include + #include #include @@ -440,7 +441,7 @@ { struct gv_drive *d; int j, errors; - char *ptr; + const char *ptr; if (token[1] == NULL || *token[1] == '\0') return (NULL); @@ -462,10 +463,8 @@ errors++; break; } - ptr = token[j]; + ptr = g_canonical_name(token[j]); - if (strncmp(ptr, _PATH_DEV, 5) == 0) - ptr += 5; strlcpy(d->device, ptr, sizeof(d->device)); } else { /* We assume this is the drive name. */ Index: sys/geom/virstor/g_virstor.c =================================================================== --- sys/geom/virstor/g_virstor.c +++ sys/geom/virstor/g_virstor.c @@ -228,9 +228,8 @@ int error; snprintf(param, sizeof(param), "arg%d", i); - name = gctl_get_asciiparam(req, param); + name = gctl_get_devname(req, param); if (name == NULL) { - gctl_error(req, "No 'arg%d' argument", i); g_topology_unlock(); return; } @@ -289,11 +288,9 @@ } /* Find "our" geom */ - geom_name = gctl_get_asciiparam(req, "arg0"); - if (geom_name == NULL) { - gctl_error(req, "Error fetching argument '%s'", "geom_name (arg0)"); + geom_name = gctl_get_devname(req, "arg0"); + if (geom_name == NULL) return; - } sc = virstor_find_geom(cp, geom_name); if (sc == NULL) { gctl_error(req, "Don't know anything about '%s'", geom_name); @@ -538,12 +535,9 @@ return; } /* Find "our" geom */ - geom_name = gctl_get_asciiparam(req, "arg0"); - if (geom_name == NULL) { - gctl_error(req, "Error fetching argument '%s'", - "geom_name (arg0)"); + geom_name = gctl_get_devname(req, "arg0"); + if (geom_name == NULL) return; - } sc = virstor_find_geom(cp, geom_name); if (sc == NULL) { gctl_error(req, "Don't know anything about '%s'", geom_name); @@ -565,13 +559,9 @@ struct g_virstor_component *newcomp, *compbak; snprintf(param, sizeof(param), "arg%d", i); - prov_name = gctl_get_asciiparam(req, param); - if (prov_name == NULL) { - gctl_error(req, "Error fetching argument '%s'", param); + prov_name = gctl_get_devname(req, param); + if (prov_name == NULL) return; - } - if (strncmp(prov_name, _PATH_DEV, sizeof(_PATH_DEV) - 1) == 0) - prov_name += sizeof(_PATH_DEV) - 1; found = -1; for (j = 0; j < sc->n_components; j++) {