Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F162894742
D25739.id74679.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
17 KB
Referenced Files
None
Subscribers
None
D25739.id74679.diff
View Options
Index: sys/geom/cache/g_cache.c
===================================================================
--- sys/geom/cache/g_cache.c
+++ sys/geom/cache/g_cache.c
@@ -757,19 +757,9 @@
/* This field is not important here. */
md.md_provsize = 0;
- name = gctl_get_asciiparam(req, "arg1");
- if (name == NULL) {
- gctl_error(req, "No 'arg1' argument");
- return;
- }
- if (strncmp(name, _PATH_DEV, strlen(_PATH_DEV)) == 0)
- name += strlen(_PATH_DEV);
- pp = g_provider_by_name(name);
- if (pp == NULL) {
- G_CACHE_DEBUG(1, "Provider %s is invalid.", name);
- gctl_error(req, "Provider %s is invalid.", name);
+ pp = gctl_get_provider(req, "arg1");
+ if (pp == NULL)
return;
- }
gp = g_cache_create(mp, pp, &md, G_CACHE_TYPE_MANUAL);
if (gp == NULL) {
gctl_error(req, "Can't create %s.", md.md_name);
Index: sys/geom/concat/g_concat.c
===================================================================
--- sys/geom/concat/g_concat.c
+++ sys/geom/concat/g_concat.c
@@ -840,19 +840,9 @@
/* Check all providers are valid */
for (no = 1; no < *nargs; no++) {
snprintf(param, sizeof(param), "arg%u", no);
- name = gctl_get_asciiparam(req, param);
- if (name == NULL) {
- gctl_error(req, "No 'arg%u' argument.", no);
- return;
- }
- if (strncmp(name, _PATH_DEV, strlen(_PATH_DEV)) == 0)
- name += strlen(_PATH_DEV);
- pp = g_provider_by_name(name);
- if (pp == NULL) {
- G_CONCAT_DEBUG(1, "Disk %s is invalid.", name);
- gctl_error(req, "Disk %s is invalid.", name);
+ pp = gctl_get_provider(req, param);
+ if (pp == NULL)
return;
- }
}
gp = g_concat_create(mp, &md, G_CONCAT_TYPE_MANUAL);
@@ -866,15 +856,13 @@
sbuf_printf(sb, "Can't attach disk(s) to %s:", gp->name);
for (attached = 0, no = 1; no < *nargs; no++) {
snprintf(param, sizeof(param), "arg%u", no);
- name = gctl_get_asciiparam(req, param);
- if (name == NULL) {
- gctl_error(req, "No 'arg%d' argument.", no);
- return;
+ pp = gctl_get_provider(req, param);
+ if (pp == NULL) {
+ name = gctl_get_asciiparam(req, param);
+ MPASS(name != NULL);
+ sbuf_printf(sb, " %s", name);
+ continue;
}
- if (strncmp(name, _PATH_DEV, strlen(_PATH_DEV)) == 0)
- name += strlen(_PATH_DEV);
- pp = g_provider_by_name(name);
- KASSERT(pp != NULL, ("Provider %s disappear?!", name));
if (g_concat_add_disk(sc, pp, no - 1) != 0) {
G_CONCAT_DEBUG(1, "Disk %u (%s) not attached to %s.",
no, pp->name, gp->name);
Index: sys/geom/eli/g_eli_ctl.c
===================================================================
--- sys/geom/eli/g_eli_ctl.c
+++ sys/geom/eli/g_eli_ctl.c
@@ -58,7 +58,6 @@
{
struct g_eli_metadata md;
struct g_provider *pp;
- const char *name;
u_char *key, mkey[G_ELI_DATAIVKEYLEN];
int *nargs, *detach, *readonly, *dryrunp;
int keysize, error, nkey, dryrun, dummy;
@@ -115,22 +114,13 @@
return;
}
- name = gctl_get_asciiparam(req, "arg0");
- if (name == NULL) {
- gctl_error(req, "No 'arg%u' argument.", 0);
+ pp = gctl_get_provider(req, "arg0");
+ if (pp == NULL)
return;
- }
- if (strncmp(name, _PATH_DEV, strlen(_PATH_DEV)) == 0)
- name += strlen(_PATH_DEV);
- pp = g_provider_by_name(name);
- if (pp == NULL) {
- gctl_error(req, "Provider %s is invalid.", name);
- return;
- }
error = g_eli_read_metadata(mp, pp, &md);
if (error != 0) {
gctl_error(req, "Cannot read metadata from %s (error=%d).",
- name, error);
+ pp->name, error);
return;
}
if (md.md_keys == 0x00) {
@@ -368,18 +358,9 @@
/* Not important here. */
bzero(md.md_hash, sizeof(md.md_hash));
- name = gctl_get_asciiparam(req, "arg0");
- if (name == NULL) {
- gctl_error(req, "No 'arg%u' argument.", 0);
+ pp = gctl_get_provider(req, "arg0");
+ if (pp == NULL)
return;
- }
- if (strncmp(name, _PATH_DEV, strlen(_PATH_DEV)) == 0)
- name += strlen(_PATH_DEV);
- pp = g_provider_by_name(name);
- if (pp == NULL) {
- gctl_error(req, "Provider %s is invalid.", name);
- return;
- }
sectorsize = gctl_get_paraml(req, "sectorsize", sizeof(*sectorsize));
if (sectorsize == NULL) {
Index: sys/geom/geom_ccd.c
===================================================================
--- sys/geom/geom_ccd.c
+++ sys/geom/geom_ccd.c
@@ -917,7 +917,7 @@
} else if (!strcmp(verb, "destroy geom")) {
gp = gctl_get_geom(req, mp, "geom");
if (gp != NULL)
- g_ccd_destroy_geom(req, mp, gp);
+ g_ccd_destroy_geom(req, mp, gp);
} else if (!strcmp(verb, "list")) {
g_ccd_list(req, mp);
} else {
Index: sys/geom/geom_ctl.c
===================================================================
--- sys/geom/geom_ctl.c
+++ sys/geom/geom_ctl.c
@@ -396,12 +396,15 @@
struct g_class *cp;
p = gctl_get_asciiparam(req, arg);
- if (p == NULL)
+ if (p == NULL) {
+ gctl_error(req, "Missing %s argument", arg);
return (NULL);
+ }
LIST_FOREACH(cp, &g_classes, class) {
if (!strcmp(p, cp->name))
return (cp);
}
+ gctl_error(req, "Class not found: \"%s\"", p);
return (NULL);
}
@@ -413,8 +416,10 @@
struct g_geom *gp;
p = gctl_get_asciiparam(req, arg);
- if (p == NULL)
+ if (p == NULL) {
+ gctl_error(req, "Missing %s argument", arg);
return (NULL);
+ }
LIST_FOREACH(mp, &g_classes, class) {
if (mpr != NULL && mpr != mp)
continue;
@@ -434,8 +439,10 @@
struct g_provider *pp;
p = gctl_get_asciiparam(req, arg);
- if (p == NULL)
+ if (p == NULL) {
+ gctl_error(req, "Missing '%s' argument", arg);
return (NULL);
+ }
pp = g_provider_by_name(p);
if (pp != NULL)
return (pp);
@@ -453,10 +460,8 @@
g_topology_assert();
req = arg;
mp = gctl_get_class(req, "class");
- if (mp == NULL) {
- gctl_error(req, "Class not found");
+ if (mp == NULL)
return;
- }
if (mp->ctlreq == NULL) {
gctl_error(req, "Class takes no requests");
return;
Index: sys/geom/label/g_label.c
===================================================================
--- sys/geom/label/g_label.c
+++ sys/geom/label/g_label.c
@@ -437,19 +437,9 @@
/*
* arg1 is the name of provider.
*/
- name = gctl_get_asciiparam(req, "arg1");
- if (name == NULL) {
- gctl_error(req, "No 'arg%d' argument", 1);
- return;
- }
- if (strncmp(name, _PATH_DEV, strlen(_PATH_DEV)) == 0)
- name += strlen(_PATH_DEV);
- pp = g_provider_by_name(name);
- if (pp == NULL) {
- G_LABEL_DEBUG(1, "Provider %s is invalid.", name);
- gctl_error(req, "Provider %s is invalid.", name);
+ pp = gctl_get_provider(req, "arg1");
+ if (pp == NULL)
return;
- }
/*
* arg0 is the label.
*/
Index: sys/geom/mirror/g_mirror_ctl.c
===================================================================
--- sys/geom/mirror/g_mirror_ctl.c
+++ sys/geom/mirror/g_mirror_ctl.c
@@ -441,34 +441,25 @@
cp = g_new_consumer(gp);
for (no = 1; no < *nargs; no++) {
snprintf(param, sizeof(param), "arg%u", no);
- name = gctl_get_asciiparam(req, param);
- if (name == NULL) {
- gctl_error(req, "No 'arg%u' argument.", no);
+ pp = gctl_get_provider(req, param);
+ if (pp == NULL) {
err:
g_destroy_consumer(cp);
g_destroy_geom(gp);
g_topology_unlock();
return;
}
- if (strncmp(name, _PATH_DEV, strlen(_PATH_DEV)) == 0)
- name += strlen(_PATH_DEV);
- pp = g_provider_by_name(name);
- if (pp == NULL) {
- G_MIRROR_DEBUG(1, "Disk %s is invalid.", name);
- gctl_error(req, "Disk %s is invalid.", name);
- goto err;
- }
g_attach(cp, pp);
if (g_access(cp, 1, 0, 0) != 0) {
- G_MIRROR_DEBUG(1, "Can't open disk %s.", name);
- gctl_error(req, "Can't open disk %s.", name);
+ G_MIRROR_DEBUG(1, "Can't open disk %s.", pp->name);
+ gctl_error(req, "Can't open disk %s.", pp->name);
err2:
g_detach(cp);
goto err;
}
if (pp->mediasize == 0 || pp->sectorsize == 0) {
- G_MIRROR_DEBUG(1, "Disk %s has no media.", name);
- gctl_error(req, "Disk %s has no media.", name);
+ G_MIRROR_DEBUG(1, "Disk %s has no media.", pp->name);
+ gctl_error(req, "Disk %s has no media.", pp->name);
g_access(cp, -1, 0, 0);
goto err2;
}
@@ -500,12 +491,10 @@
sbuf_printf(sb, "Can't attach disk(s) to %s:", gp->name);
for (attached = 0, no = 1; no < *nargs; no++) {
snprintf(param, sizeof(param), "arg%u", no);
- name = gctl_get_asciiparam(req, param);
- if (strncmp(name, _PATH_DEV, strlen(_PATH_DEV)) == 0)
- name += strlen(_PATH_DEV);
- pp = g_provider_by_name(name);
+ pp = gctl_get_provider(req, param);
if (pp == NULL) {
- G_MIRROR_DEBUG(1, "Provider %s disappear?!", name);
+ name = gctl_get_asciiparam(req, param);
+ MPASS(name != NULL);
sbuf_printf(sb, " %s", name);
continue;
}
@@ -677,30 +666,21 @@
g_topology_lock();
for (i = 1, n = 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);
+ pp = gctl_get_provider(req, param);
+ if (pp == NULL)
continue;
- }
- if (g_mirror_find_disk(sc, name) != NULL) {
- gctl_error(req, "Provider %s already inserted.", name);
- continue;
- }
- if (strncmp(name, _PATH_DEV, 5) == 0)
- name += 5;
- pp = g_provider_by_name(name);
- if (pp == NULL) {
- gctl_error(req, "Unknown provider %s.", name);
+ if (g_mirror_find_disk(sc, pp->name) != NULL) {
+ gctl_error(req, "Provider %s already inserted.", pp->name);
continue;
}
cp = g_new_consumer(sc->sc_geom);
if (g_attach(cp, pp) != 0) {
g_destroy_consumer(cp);
- gctl_error(req, "Cannot attach to provider %s.", name);
+ gctl_error(req, "Cannot attach to provider %s.", pp->name);
continue;
}
if (g_access(cp, 0, 1, 1) != 0) {
- gctl_error(req, "Cannot access provider %s.", name);
+ gctl_error(req, "Cannot access provider %s.", pp->name);
err:
g_detach(cp);
g_destroy_consumer(cp);
@@ -709,14 +689,14 @@
mdsize = (sc->sc_type == G_MIRROR_TYPE_AUTOMATIC) ?
pp->sectorsize : 0;
if (sc->sc_provider->mediasize > pp->mediasize - mdsize) {
- gctl_error(req, "Provider %s too small.", name);
+ gctl_error(req, "Provider %s too small.", pp->name);
err2:
g_access(cp, 0, -1, -1);
goto err;
}
if ((sc->sc_provider->sectorsize % pp->sectorsize) != 0) {
gctl_error(req, "Invalid sectorsize of provider %s.",
- name);
+ pp->name);
goto err2;
}
if (sc->sc_type != G_MIRROR_TYPE_AUTOMATIC) {
@@ -731,7 +711,7 @@
md.md_dflags |= G_MIRROR_DISK_FLAG_INACTIVE;
if (g_mirror_add_disk(sc, pp, &md) != 0) {
sc->sc_ndisks--;
- gctl_error(req, "Disk %s not inserted.", name);
+ gctl_error(req, "Disk %s not inserted.", pp->name);
}
g_topology_lock();
continue;
Index: sys/geom/mountver/g_mountver.c
===================================================================
--- sys/geom/mountver/g_mountver.c
+++ sys/geom/mountver/g_mountver.c
@@ -404,7 +404,6 @@
g_mountver_ctl_create(struct gctl_req *req, struct g_class *mp)
{
struct g_provider *pp;
- const char *name;
char param[16];
int i, *nargs;
@@ -421,19 +420,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);
+ pp = gctl_get_provider(req, param);
+ if (pp == NULL)
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)
return;
}
Index: sys/geom/nop/g_nop.c
===================================================================
--- sys/geom/nop/g_nop.c
+++ sys/geom/nop/g_nop.c
@@ -544,7 +544,7 @@
intmax_t *val, error, rfailprob, wfailprob, count_until_fail, offset,
secsize, size, stripesize, stripeoffset, delaymsec,
rdelayprob, wdelayprob;
- const char *name, *physpath, *gnopname;
+ const char *physpath, *gnopname;
char param[16];
int i, *nargs;
@@ -671,19 +671,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);
+ pp = gctl_get_provider(req, param);
+ if (pp == NULL)
return;
- }
- if (strncmp(name, _PATH_DEV, strlen(_PATH_DEV)) == 0)
- name += strlen(_PATH_DEV);
- pp = g_provider_by_name(name);
- if (pp == NULL) {
- G_NOP_DEBUG(1, "Provider %s is invalid.", name);
- gctl_error(req, "Provider %s is invalid.", name);
- return;
- }
if (g_nop_create(req, mp, pp,
gnopname,
error == -1 ? EIO : (int)error,
@@ -708,7 +698,6 @@
struct g_provider *pp;
intmax_t *val, delaymsec, error, rdelayprob, rfailprob, wdelayprob,
wfailprob, count_until_fail;
- const char *name;
char param[16];
int i, *nargs;
@@ -782,17 +771,12 @@
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);
+ pp = gctl_get_provider(req, param);
+ if (pp == NULL)
return;
- }
- if (strncmp(name, _PATH_DEV, strlen(_PATH_DEV)) == 0)
- name += strlen(_PATH_DEV);
- pp = g_provider_by_name(name);
- if (pp == NULL || pp->geom->class != mp) {
- G_NOP_DEBUG(1, "Provider %s is invalid.", name);
- gctl_error(req, "Provider %s is invalid.", name);
+ if (pp->geom->class != mp) {
+ G_NOP_DEBUG(1, "Provider %s is invalid.", pp->name);
+ gctl_error(req, "Provider %s is invalid.", pp->name);
return;
}
sc = pp->geom->softc;
@@ -879,7 +863,6 @@
{
struct g_nop_softc *sc;
struct g_provider *pp;
- const char *name;
char param[16];
int i, *nargs;
@@ -897,17 +880,12 @@
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);
+ pp = gctl_get_provider(req, param);
+ if (pp == NULL)
return;
- }
- if (strncmp(name, _PATH_DEV, strlen(_PATH_DEV)) == 0)
- name += strlen(_PATH_DEV);
- pp = g_provider_by_name(name);
- if (pp == NULL || pp->geom->class != mp) {
- G_NOP_DEBUG(1, "Provider %s is invalid.", name);
- gctl_error(req, "Provider %s is invalid.", name);
+ if (pp->geom->class != mp) {
+ G_NOP_DEBUG(1, "Provider %s is invalid.", pp->name);
+ gctl_error(req, "Provider %s is invalid.", pp->name);
return;
}
sc = pp->geom->softc;
Index: sys/geom/raid3/g_raid3_ctl.c
===================================================================
--- sys/geom/raid3/g_raid3_ctl.c
+++ sys/geom/raid3/g_raid3_ctl.c
@@ -422,24 +422,13 @@
gctl_error(req, "No '%s' argument.", "hardcode");
return;
}
- name = gctl_get_asciiparam(req, "arg1");
- if (name == NULL) {
- gctl_error(req, "No 'arg%u' argument.", 1);
+ pp = gctl_get_provider(req, "arg1");
+ if (pp == NULL)
return;
- }
if (gctl_get_param(req, "number", NULL) != NULL)
no = gctl_get_paraml(req, "number", sizeof(*no));
else
no = NULL;
- if (strncmp(name, _PATH_DEV, 5) == 0)
- name += 5;
- g_topology_lock();
- pp = g_provider_by_name(name);
- if (pp == NULL) {
- g_topology_unlock();
- gctl_error(req, "Invalid provider.");
- return;
- }
gp = g_new_geomf(mp, "raid3:insert");
gp->orphan = g_raid3_ctl_insert_orphan;
cp = g_new_consumer(gp);
Index: sys/geom/stripe/g_stripe.c
===================================================================
--- sys/geom/stripe/g_stripe.c
+++ sys/geom/stripe/g_stripe.c
@@ -1091,19 +1091,9 @@
/* Check all providers are valid */
for (no = 1; no < *nargs; no++) {
snprintf(param, sizeof(param), "arg%u", no);
- name = gctl_get_asciiparam(req, param);
- if (name == NULL) {
- gctl_error(req, "No 'arg%u' argument.", no);
- return;
- }
- if (strncmp(name, _PATH_DEV, strlen(_PATH_DEV)) == 0)
- name += strlen(_PATH_DEV);
- pp = g_provider_by_name(name);
- if (pp == NULL) {
- G_STRIPE_DEBUG(1, "Disk %s is invalid.", name);
- gctl_error(req, "Disk %s is invalid.", name);
+ pp = gctl_get_provider(req, param);
+ if (pp == NULL)
return;
- }
}
gp = g_stripe_create(mp, &md, G_STRIPE_TYPE_MANUAL);
@@ -1117,15 +1107,13 @@
sbuf_printf(sb, "Can't attach disk(s) to %s:", gp->name);
for (attached = 0, no = 1; no < *nargs; no++) {
snprintf(param, sizeof(param), "arg%u", no);
- name = gctl_get_asciiparam(req, param);
- if (name == NULL) {
- gctl_error(req, "No 'arg%u' argument.", no);
+ pp = gctl_get_provider(req, param);
+ if (pp == NULL) {
+ name = gctl_get_asciiparam(req, param);
+ MPASS(name != NULL);
+ sbuf_printf(sb, " %s", name);
continue;
}
- if (strncmp(name, _PATH_DEV, strlen(_PATH_DEV)) == 0)
- name += strlen(_PATH_DEV);
- pp = g_provider_by_name(name);
- KASSERT(pp != NULL, ("Provider %s disappear?!", name));
if (g_stripe_add_disk(sc, pp, no - 1) != 0) {
G_STRIPE_DEBUG(1, "Disk %u (%s) not attached to %s.",
no, pp->name, gp->name);
Index: sys/geom/virstor/g_virstor.c
===================================================================
--- sys/geom/virstor/g_virstor.c
+++ sys/geom/virstor/g_virstor.c
@@ -313,32 +313,19 @@
for (i = 1; i < *nargs; i++) {
struct g_virstor_metadata md;
char aname[8];
- const char *prov_name;
struct g_provider *pp;
struct g_consumer *cp;
u_int nc;
u_int j;
snprintf(aname, sizeof aname, "arg%d", i);
- prov_name = gctl_get_asciiparam(req, aname);
- if (prov_name == NULL) {
- gctl_error(req, "Error fetching argument '%s'", aname);
- g_topology_unlock();
- return;
- }
- if (strncmp(prov_name, _PATH_DEV, sizeof(_PATH_DEV) - 1) == 0)
- prov_name += sizeof(_PATH_DEV) - 1;
-
- pp = g_provider_by_name(prov_name);
+ pp = gctl_get_provider(req, aname);
if (pp == NULL) {
/* This is the most common error so be verbose about it */
if (added != 0) {
- gctl_error(req, "Invalid provider: '%s' (added"
- " %u components)", prov_name, added);
+ gctl_error(req, "Invalid provider. (added"
+ " %u components)", added);
update_metadata(sc);
- } else {
- gctl_error(req, "Invalid provider: '%s'",
- prov_name);
}
g_topology_unlock();
return;
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Jul 19, 2:28 AM (10 h, 56 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
35215161
Default Alt Text
D25739.id74679.diff (17 KB)
Attached To
Mode
D25739: Consistently use gctl_get_provider instead of home-grown variants.
Attached
Detach File
Event Timeline
Log In to Comment