Lines Matching full:pp

77 	struct g_provider	*pp;  member
130 struct g_provider *pp; in g_load_class() local
174 LIST_FOREACH(pp, &gp->provider, provider) { in g_load_class()
175 mp->taste(mp, pp, 0); in g_load_class()
186 struct g_provider *pp; in g_unload_class() local
196 LIST_FOREACH(pp, &gp->provider, provider) in g_unload_class()
197 if (pp->acr || pp->acw || pp->ace) { in g_unload_class()
308 struct g_provider *pp; in g_retaste_event() local
328 LIST_FOREACH(pp, &gp->provider, provider) { in g_retaste_event()
329 if (pp->acr || pp->acw || pp->ace) in g_retaste_event()
331 LIST_FOREACH(cp, &pp->consumers, consumers) { in g_retaste_event()
340 mp->taste(mp, pp, 0); in g_retaste_event()
445 struct g_provider *pp; in g_wither_geom() local
452 LIST_FOREACH(pp, &gp->provider, provider) in g_wither_geom()
453 if (!(pp->flags & G_PF_ORPHAN)) in g_wither_geom()
454 g_orphan_provider(pp, error); in g_wither_geom()
463 g_wither_provider(struct g_provider *pp, int error) in g_wither_provider() argument
466 pp->flags |= G_PF_WITHER; in g_wither_provider()
467 if (!(pp->flags & G_PF_ORPHAN)) in g_wither_provider()
468 g_orphan_provider(pp, error); in g_wither_provider()
497 struct g_provider *pp, *pp2; in g_wither_washer() local
503 LIST_FOREACH_SAFE(pp, &gp->provider, provider, pp2) { in g_wither_washer()
504 if (!(pp->flags & G_PF_WITHER)) in g_wither_washer()
506 if (LIST_EMPTY(&pp->consumers)) in g_wither_washer()
507 g_destroy_provider(pp); in g_wither_washer()
511 LIST_FOREACH_SAFE(pp, &gp->provider, provider, pp2) { in g_wither_washer()
512 if (LIST_EMPTY(&pp->consumers)) in g_wither_washer()
513 g_destroy_provider(pp); in g_wither_washer()
576 struct g_provider *pp; in g_new_provider_event() local
584 pp = arg; in g_new_provider_event()
585 G_VALID_PROVIDER(pp); in g_new_provider_event()
586 if ((pp->flags & G_PF_WITHER) != 0) in g_new_provider_event()
588 LIST_FOREACH_SAFE(cp, &pp->consumers, consumers, next_cp) { in g_new_provider_event()
598 LIST_FOREACH(cp, &pp->consumers, consumers) in g_new_provider_event()
604 mp->taste(mp, pp, 0); in g_new_provider_event()
612 struct g_provider *pp; in g_new_providerf() local
632 pp = g_malloc(sizeof(*pp) + sbuf_len(sb) + 1, M_WAITOK | M_ZERO); in g_new_providerf()
633 pp->name = (char *)(pp + 1); in g_new_providerf()
634 strcpy(pp->name, sbuf_data(sb)); in g_new_providerf()
636 LIST_INIT(&pp->consumers); in g_new_providerf()
637 LIST_INIT(&pp->aliases); in g_new_providerf()
638 pp->error = ENXIO; in g_new_providerf()
639 pp->geom = gp; in g_new_providerf()
640 pp->stat = devstat_new_entry(pp, -1, 0, DEVSTAT_ALL_SUPPORTED, in g_new_providerf()
642 LIST_INSERT_HEAD(&gp->provider, pp, provider); in g_new_providerf()
643 g_post_event(g_new_provider_event, pp, M_WAITOK, pp, gp, NULL); in g_new_providerf()
644 return (pp); in g_new_providerf()
648 g_provider_add_alias(struct g_provider *pp, const char *fmt, ...) in g_provider_add_alias() argument
663 LIST_FOREACH(gap, &pp->aliases, ga_next) { in g_provider_add_alias()
675 LIST_INSERT_HEAD(&pp->aliases, gap, ga_next); in g_provider_add_alias()
679 g_error_provider(struct g_provider *pp, int error) in g_error_provider() argument
682 /* G_VALID_PROVIDER(pp); We may not have g_topology */ in g_error_provider()
683 pp->error = error; in g_error_provider()
692 struct g_provider *pp; in g_resize_provider_event() local
701 pp = hh->pp; in g_resize_provider_event()
705 G_VALID_PROVIDER(pp); in g_resize_provider_event()
706 KASSERT(!(pp->flags & G_PF_WITHER), in g_resize_provider_event()
708 g_trace(G_T_TOPOLOGY, "g_resize_provider_event(%p)", pp); in g_resize_provider_event()
710 LIST_FOREACH_SAFE(cp, &pp->consumers, consumers, cp2) { in g_resize_provider_event()
712 if (gp->resize == NULL && size < pp->mediasize) { in g_resize_provider_event()
726 pp->mediasize = size; in g_resize_provider_event()
728 LIST_FOREACH_SAFE(cp, &pp->consumers, consumers, cp2) { in g_resize_provider_event()
741 LIST_FOREACH(cp, &pp->consumers, consumers) in g_resize_provider_event()
747 mp->taste(mp, pp, 0); in g_resize_provider_event()
753 g_resize_provider(struct g_provider *pp, off_t size) in g_resize_provider() argument
757 G_VALID_PROVIDER(pp); in g_resize_provider()
758 if (pp->flags & G_PF_WITHER) in g_resize_provider()
761 if (size == pp->mediasize) in g_resize_provider()
765 hh->pp = pp; in g_resize_provider()
775 struct g_provider *pp, *wpp; in g_provider_by_name() local
783 LIST_FOREACH(pp, &gp->provider, provider) { in g_provider_by_name()
784 if (strcmp(arg, pp->name) != 0) in g_provider_by_name()
787 (pp->flags & G_PF_WITHER) == 0) in g_provider_by_name()
788 return (pp); in g_provider_by_name()
790 wpp = pp; in g_provider_by_name()
799 g_destroy_provider(struct g_provider *pp) in g_destroy_provider() argument
805 G_VALID_PROVIDER(pp); in g_destroy_provider()
806 KASSERT(LIST_EMPTY(&pp->consumers), in g_destroy_provider()
808 KASSERT (pp->acr == 0, ("g_destroy_provider with acr")); in g_destroy_provider()
809 KASSERT (pp->acw == 0, ("g_destroy_provider with acw")); in g_destroy_provider()
810 KASSERT (pp->ace == 0, ("g_destroy_provider with ace")); in g_destroy_provider()
811 g_cancel_event(pp); in g_destroy_provider()
812 LIST_REMOVE(pp, provider); in g_destroy_provider()
813 gp = pp->geom; in g_destroy_provider()
814 devstat_remove_entry(pp->stat); in g_destroy_provider()
820 gp->providergone(pp); in g_destroy_provider()
821 LIST_FOREACH_SAFE(gap, &pp->aliases, ga_next, gaptmp) in g_destroy_provider()
823 g_free(pp); in g_destroy_provider()
898 g_attach(struct g_consumer *cp, struct g_provider *pp) in g_attach() argument
904 G_VALID_PROVIDER(pp); in g_attach()
905 g_trace(G_T_TOPOLOGY, "g_attach(%p, %p)", cp, pp); in g_attach()
907 if ((pp->flags & (G_PF_ORPHAN | G_PF_WITHER)) != 0) in g_attach()
909 cp->provider = pp; in g_attach()
911 LIST_INSERT_HEAD(&pp->consumers, cp, consumers); in g_attach()
924 struct g_provider *pp; in g_detach() local
935 pp = cp->provider; in g_detach()
939 (pp->geom->flags & G_GEOM_WITHER) || in g_detach()
940 (pp->flags & G_PF_WITHER)) in g_detach()
955 struct g_provider *pp; in g_access() local
965 pp = cp->provider; in g_access()
966 KASSERT(pp != NULL, ("access but not attached")); in g_access()
967 G_VALID_PROVIDER(pp); in g_access()
968 gp = pp->geom; in g_access()
971 cp, pp->name, dcr, dcw, dce); in g_access()
1007 __func__, gp->name, pp->name, cp->geom->name); in g_access()
1016 pw = pp->acw - cp->acw; in g_access()
1017 pe = pp->ace - cp->ace; in g_access()
1023 pp->acr, pp->acw, pp->ace, in g_access()
1024 pp, pp->name); in g_access()
1036 else if ((dcr > 0 || dcw > 0 || dce > 0) && pp->error != 0) { in g_access()
1038 __func__, __LINE__, pp->name, pp->error); in g_access()
1039 return (pp->error); in g_access()
1050 error = gp->access(pp, dcr, dcw, dce); in g_access()
1053 "closing ->access()", gp->class->name, pp->name, dcr, dcw, in g_access()
1071 if (pp->acw == 0 && dcw != 0) in g_access()
1072 g_spoil(pp, cp); in g_access()
1073 else if (pp->acw != 0 && pp->acw == -dcw && pp->error == 0 && in g_access()
1075 g_post_event(g_new_provider_event, pp, M_WAITOK, in g_access()
1076 pp, NULL); in g_access()
1078 pp->acr += dcr; in g_access()
1079 pp->acw += dcw; in g_access()
1080 pp->ace += dce; in g_access()
1084 if (pp->acr != 0 || pp->acw != 0 || pp->ace != 0) in g_access()
1085 KASSERT(pp->sectorsize > 0, in g_access()
1086 ("Provider %s lacks sectorsize", pp->name)); in g_access()
1152 g_std_access(struct g_provider *pp, in g_std_access() argument
1157 G_VALID_PROVIDER(pp); in g_std_access()
1191 struct g_provider *pp; in g_std_spoiled() local
1199 LIST_FOREACH(pp, &gp->provider, provider) in g_std_spoiled()
1200 g_orphan_provider(pp, ENXIO); in g_std_spoiled()
1222 struct g_provider *pp; in g_spoil_event() local
1228 pp = arg; in g_spoil_event()
1229 G_VALID_PROVIDER(pp); in g_spoil_event()
1230 g_trace(G_T_TOPOLOGY, "%s %p(%s:%s:%s)", __func__, pp, in g_spoil_event()
1231 pp->geom->class->name, pp->geom->name, pp->name); in g_spoil_event()
1232 for (cp = LIST_FIRST(&pp->consumers); cp != NULL; cp = cp2) { in g_spoil_event()
1245 g_spoil(struct g_provider *pp, struct g_consumer *cp) in g_spoil() argument
1250 G_VALID_PROVIDER(pp); in g_spoil()
1253 LIST_FOREACH(cp2, &pp->consumers, consumers) { in g_spoil()
1263 g_post_event(g_spoil_event, pp, M_WAITOK, pp, NULL); in g_spoil()
1269 struct g_provider *pp; in g_media_changed_event() local
1275 pp = arg; in g_media_changed_event()
1276 G_VALID_PROVIDER(pp); in g_media_changed_event()
1282 retaste = (pp->acw == 0 && pp->error == 0 && in g_media_changed_event()
1283 !(pp->geom->flags & G_GEOM_WITHER)); in g_media_changed_event()
1286 g_post_event(g_new_provider_event, pp, M_WAITOK, pp, NULL); in g_media_changed_event()
1290 g_media_changed(struct g_provider *pp, int flag) in g_media_changed() argument
1294 LIST_FOREACH(cp, &pp->consumers, consumers) in g_media_changed()
1296 return (g_post_event(g_media_changed_event, pp, flag, pp, NULL)); in g_media_changed()
1300 g_media_gone(struct g_provider *pp, int flag) in g_media_gone() argument
1304 LIST_FOREACH(cp, &pp->consumers, consumers) in g_media_gone()
1306 return (g_post_event(g_spoil_event, pp, flag, pp, NULL)); in g_media_gone()
1374 struct g_provider *pp; in g_valid_obj() local
1390 LIST_FOREACH(pp, &gp->provider, provider) in g_valid_obj()
1391 if (ptr == pp) in g_valid_obj()
1420 provider_flags_to_string(struct g_provider *pp, char *str, size_t size) in provider_flags_to_string() argument
1425 if (pp->flags == 0) { in provider_flags_to_string()
1429 ADDFLAG(pp, G_PF_WITHER, "G_PF_WITHER"); in provider_flags_to_string()
1430 ADDFLAG(pp, G_PF_ORPHAN, "G_PF_ORPHAN"); in provider_flags_to_string()
1479 db_show_geom_provider(int indent, struct g_provider *pp) in db_show_geom_provider() argument
1485 gprintln("provider: %s (%p)", pp->name, pp); in db_show_geom_provider()
1486 gprintln(" class: %s (%p)", pp->geom->class->name, in db_show_geom_provider()
1487 pp->geom->class); in db_show_geom_provider()
1488 gprintln(" geom: %s (%p)", pp->geom->name, pp->geom); in db_show_geom_provider()
1489 gprintln(" mediasize: %jd", (intmax_t)pp->mediasize); in db_show_geom_provider()
1490 gprintln(" sectorsize: %u", pp->sectorsize); in db_show_geom_provider()
1491 gprintln(" stripesize: %ju", (uintmax_t)pp->stripesize); in db_show_geom_provider()
1492 gprintln(" stripeoffset: %ju", (uintmax_t)pp->stripeoffset); in db_show_geom_provider()
1493 gprintln(" access: r%dw%de%d", pp->acr, pp->acw, in db_show_geom_provider()
1494 pp->ace); in db_show_geom_provider()
1496 provider_flags_to_string(pp, flags, sizeof(flags)), in db_show_geom_provider()
1497 pp->flags); in db_show_geom_provider()
1498 gprintln(" error: %d", pp->error); in db_show_geom_provider()
1499 if (LIST_EMPTY(&pp->consumers)) in db_show_geom_provider()
1503 pp->name, pp, pp->acr, pp->acw, pp->ace); in db_show_geom_provider()
1504 if (pp->flags != 0) { in db_show_geom_provider()
1506 provider_flags_to_string(pp, flags, sizeof(flags)), in db_show_geom_provider()
1507 pp->flags); in db_show_geom_provider()
1511 if (!LIST_EMPTY(&pp->consumers)) { in db_show_geom_provider()
1512 LIST_FOREACH(cp, &pp->consumers, consumers) { in db_show_geom_provider()
1523 struct g_provider *pp; in db_show_geom_geom() local
1547 LIST_FOREACH(pp, &gp->provider, provider) { in db_show_geom_geom()
1548 db_show_geom_provider(indent + 2, pp); in db_show_geom_geom()