Changeset View
Changeset View
Standalone View
Standalone View
head/sys/geom/concat/g_concat.c
Show First 20 Lines • Show All 839 Lines • ▼ Show 20 Lines | g_concat_ctl_create(struct gctl_req *req, struct g_class *mp) | ||||
/* Check all providers are valid */ | /* Check all providers are valid */ | ||||
for (no = 1; no < *nargs; no++) { | for (no = 1; no < *nargs; no++) { | ||||
snprintf(param, sizeof(param), "arg%u", no); | snprintf(param, sizeof(param), "arg%u", no); | ||||
name = gctl_get_asciiparam(req, param); | name = gctl_get_asciiparam(req, param); | ||||
if (name == NULL) { | if (name == NULL) { | ||||
gctl_error(req, "No 'arg%u' argument.", no); | gctl_error(req, "No 'arg%u' argument.", no); | ||||
return; | return; | ||||
} | } | ||||
if (strncmp(name, "/dev/", strlen("/dev/")) == 0) | if (strncmp(name, _PATH_DEV, strlen(_PATH_DEV)) == 0) | ||||
name += strlen("/dev/"); | name += strlen(_PATH_DEV); | ||||
pp = g_provider_by_name(name); | pp = g_provider_by_name(name); | ||||
if (pp == NULL) { | if (pp == NULL) { | ||||
G_CONCAT_DEBUG(1, "Disk %s is invalid.", name); | G_CONCAT_DEBUG(1, "Disk %s is invalid.", name); | ||||
gctl_error(req, "Disk %s is invalid.", name); | gctl_error(req, "Disk %s is invalid.", name); | ||||
return; | return; | ||||
} | } | ||||
} | } | ||||
gp = g_concat_create(mp, &md, G_CONCAT_TYPE_MANUAL); | gp = g_concat_create(mp, &md, G_CONCAT_TYPE_MANUAL); | ||||
if (gp == NULL) { | if (gp == NULL) { | ||||
gctl_error(req, "Can't configure %s.", md.md_name); | gctl_error(req, "Can't configure %s.", md.md_name); | ||||
return; | return; | ||||
} | } | ||||
sc = gp->softc; | sc = gp->softc; | ||||
sb = sbuf_new_auto(); | sb = sbuf_new_auto(); | ||||
sbuf_printf(sb, "Can't attach disk(s) to %s:", gp->name); | sbuf_printf(sb, "Can't attach disk(s) to %s:", gp->name); | ||||
for (attached = 0, no = 1; no < *nargs; no++) { | for (attached = 0, no = 1; no < *nargs; no++) { | ||||
snprintf(param, sizeof(param), "arg%u", no); | snprintf(param, sizeof(param), "arg%u", no); | ||||
name = gctl_get_asciiparam(req, param); | name = gctl_get_asciiparam(req, param); | ||||
if (name == NULL) { | if (name == NULL) { | ||||
gctl_error(req, "No 'arg%d' argument.", no); | gctl_error(req, "No 'arg%d' argument.", no); | ||||
return; | return; | ||||
} | } | ||||
if (strncmp(name, "/dev/", strlen("/dev/")) == 0) | if (strncmp(name, _PATH_DEV, strlen(_PATH_DEV)) == 0) | ||||
name += strlen("/dev/"); | name += strlen(_PATH_DEV); | ||||
pp = g_provider_by_name(name); | pp = g_provider_by_name(name); | ||||
KASSERT(pp != NULL, ("Provider %s disappear?!", name)); | KASSERT(pp != NULL, ("Provider %s disappear?!", name)); | ||||
if (g_concat_add_disk(sc, pp, no - 1) != 0) { | if (g_concat_add_disk(sc, pp, no - 1) != 0) { | ||||
G_CONCAT_DEBUG(1, "Disk %u (%s) not attached to %s.", | G_CONCAT_DEBUG(1, "Disk %u (%s) not attached to %s.", | ||||
no, pp->name, gp->name); | no, pp->name, gp->name); | ||||
sbuf_printf(sb, " %s", pp->name); | sbuf_printf(sb, " %s", pp->name); | ||||
continue; | continue; | ||||
} | } | ||||
▲ Show 20 Lines • Show All 151 Lines • Show Last 20 Lines |