Lines Matching +full:- +full:gp

1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
4 * Copyright (c) 2004-2005 Pawel Jakub Dawidek <pjd@FreeBSD.org>
60 struct g_geom *gp);
61 static int g_label_destroy(struct g_geom *gp, boolean_t force);
118 for (i = size - 1; i >= 0; i--) { in g_label_rtrim()
130 struct g_geom *gp __unused) in g_label_destroy_geom()
145 LIST_FIRST(&cp->geom->provider)->name); in g_label_orphan()
154 LIST_FIRST(&cp->geom->provider)->name); in g_label_spoiled()
163 LIST_FIRST(&cp->geom->provider)->name); in g_label_resize()
165 g_slice_config(cp->geom, 0, G_SLICE_CONFIG_FORCE, (off_t)0, in g_label_resize()
166 cp->provider->mediasize, cp->provider->sectorsize, "notused"); in g_label_resize()
195 for (i = len; i > 0; i--) { in g_label_mangle_name()
196 if (isspace(label[i - 1])) in g_label_mangle_name()
197 label[i - 1] = '\0'; in g_label_mangle_name()
225 struct g_geom *gp; in g_label_create() local
234 pp->name); in g_label_create()
235 G_LABEL_DEBUG(1, "%s suspicious label is: %s", pp->name, label); in g_label_create()
240 gp = NULL; in g_label_create()
247 LIST_FOREACH(gp, &mp->geom, geom) { in g_label_create()
248 pp2 = LIST_FIRST(&gp->provider); in g_label_create()
251 if ((pp2->flags & G_PF_ORPHAN) != 0) in g_label_create()
253 if (strcmp(pp2->name, name) == 0) { in g_label_create()
255 label, name, pp->name); in g_label_create()
263 gp = g_slice_new(mp, 1, pp, &cp, NULL, 0, NULL); in g_label_create()
264 if (gp == NULL) { in g_label_create()
270 gp->orphan = g_label_orphan; in g_label_create()
271 gp->spoiled = g_label_spoiled; in g_label_create()
272 gp->resize = g_label_resize; in g_label_create()
273 g_access(cp, -1, 0, 0); in g_label_create()
274 g_slice_config(gp, 0, G_SLICE_CONFIG_SET, (off_t)0, mediasize, in g_label_create()
275 pp->sectorsize, "%s", name); in g_label_create()
276 G_LABEL_DEBUG(1, "Label for provider %s is %s.", pp->name, name); in g_label_create()
277 return (gp); in g_label_create()
281 g_label_destroy(struct g_geom *gp, boolean_t force) in g_label_destroy() argument
286 pp = LIST_FIRST(&gp->provider); in g_label_destroy()
287 if (pp != NULL && (pp->acr != 0 || pp->acw != 0 || pp->ace != 0)) { in g_label_destroy()
290 "can't be definitely removed.", pp->name); in g_label_destroy()
293 "Provider %s is still open (r%dw%de%d).", pp->name, in g_label_destroy()
294 pp->acr, pp->acw, pp->ace); in g_label_destroy()
298 G_LABEL_DEBUG(1, "Label %s removed.", pp->name); in g_label_destroy()
299 g_slice_spoiled(LIST_FIRST(&gp->consumer)); in g_label_destroy()
310 pp = cp->provider; in g_label_read_metadata()
311 if (pp->sectorsize < sizeof(*md)) in g_label_read_metadata()
313 buf = g_read_data(cp, pp->mediasize - pp->sectorsize, pp->sectorsize, in g_label_read_metadata()
355 pp = cp->provider; in g_label_generic_taste()
365 pp->name); in g_label_generic_taste()
372 if (md.md_version >= 2 && md.md_provsize != pp->mediasize) in g_label_generic_taste()
382 struct g_geom *gp; in g_label_taste() local
386 g_trace(G_T_TOPOLOGY, "%s(%s, %s)", __func__, mp->name, pp->name); in g_label_taste()
389 G_LABEL_DEBUG(2, "Tasting %s.", pp->name); in g_label_taste()
392 if (pp->acw > 0) in g_label_taste()
396 if (pp->sectorsize == 0) in g_label_taste()
399 if (strcmp(pp->geom->class->name, mp->name) == 0) in g_label_taste()
402 gp = g_new_geom(mp, "label:taste"); in g_label_taste()
403 gp->start = g_label_start_taste; in g_label_taste()
404 gp->access = g_label_access_taste; in g_label_taste()
405 gp->orphan = g_label_orphan_taste; in g_label_taste()
406 cp = g_new_consumer(gp); in g_label_taste()
407 cp->flags |= G_CF_DIRECT_SEND | G_CF_DIRECT_RECEIVE; in g_label_taste()
415 if (g_labels[i]->ld_enabled == 0) in g_label_taste()
418 g_labels[i]->ld_taste(cp, label, sizeof(label)); in g_label_taste()
424 mediasize = pp->mediasize; in g_label_taste()
426 mediasize = pp->mediasize - pp->sectorsize; in g_label_taste()
429 g_labels[i]->ld_dirprefix, mediasize); in g_label_taste()
431 g_access(cp, -1, 0, 0); in g_label_taste()
436 g_destroy_geom(gp); in g_label_taste()
472 g_label_create(req, mp, pp, name, G_LABEL_DIRPREFIX, pp->mediasize); in g_label_ctl_create()
483 if (strncmp(name, g_labels[i]->ld_dirprefix, in g_label_skip_dir()
484 strlen(g_labels[i]->ld_dirprefix)) == 0) { in g_label_skip_dir()
485 name += strlen(g_labels[i]->ld_dirprefix); in g_label_skip_dir()
495 struct g_geom *gp; in g_label_find_geom() local
500 LIST_FOREACH(gp, &mp->geom, geom) { in g_label_find_geom()
501 pp = LIST_FIRST(&gp->provider); in g_label_find_geom()
502 pname = g_label_skip_dir(pp->name); in g_label_find_geom()
504 return (gp); in g_label_find_geom()
513 struct g_geom *gp; in g_label_ctl_destroy() local
541 gp = g_label_find_geom(mp, name); in g_label_ctl_destroy()
542 if (gp == NULL) { in g_label_ctl_destroy()
547 error = g_label_destroy(gp, *force); in g_label_ctl_destroy()
550 LIST_FIRST(&gp->provider)->name, error); in g_label_ctl_destroy()