Lines Matching full:pp

75 	struct g_provider	*pp;  member
128 struct g_provider *pp; in g_load_class() local
172 LIST_FOREACH(pp, &gp->provider, provider) { in g_load_class()
173 mp->taste(mp, pp, 0); in g_load_class()
184 struct g_provider *pp; in g_unload_class() local
194 LIST_FOREACH(pp, &gp->provider, provider) in g_unload_class()
195 if (pp->acr || pp->acw || pp->ace) { in g_unload_class()
306 struct g_provider *pp; in g_retaste_event() local
326 LIST_FOREACH(pp, &gp->provider, provider) { in g_retaste_event()
327 if (pp->acr || pp->acw || pp->ace) in g_retaste_event()
329 LIST_FOREACH(cp, &pp->consumers, consumers) { in g_retaste_event()
338 mp->taste(mp, pp, 0); in g_retaste_event()
433 struct g_provider *pp; in g_wither_geom() local
440 LIST_FOREACH(pp, &gp->provider, provider) in g_wither_geom()
441 if (!(pp->flags & G_PF_ORPHAN)) in g_wither_geom()
442 g_orphan_provider(pp, error); in g_wither_geom()
451 g_wither_provider(struct g_provider *pp, int error) in g_wither_provider() argument
454 pp->flags |= G_PF_WITHER; in g_wither_provider()
455 if (!(pp->flags & G_PF_ORPHAN)) in g_wither_provider()
456 g_orphan_provider(pp, error); in g_wither_provider()
485 struct g_provider *pp, *pp2; in g_wither_washer() local
491 LIST_FOREACH_SAFE(pp, &gp->provider, provider, pp2) { in g_wither_washer()
492 if (!(pp->flags & G_PF_WITHER)) in g_wither_washer()
494 if (LIST_EMPTY(&pp->consumers)) in g_wither_washer()
495 g_destroy_provider(pp); in g_wither_washer()
499 LIST_FOREACH_SAFE(pp, &gp->provider, provider, pp2) { in g_wither_washer()
500 if (LIST_EMPTY(&pp->consumers)) in g_wither_washer()
501 g_destroy_provider(pp); in g_wither_washer()
564 struct g_provider *pp; in g_new_provider_event() local
572 pp = arg; in g_new_provider_event()
573 G_VALID_PROVIDER(pp); in g_new_provider_event()
574 if ((pp->flags & G_PF_WITHER) != 0) in g_new_provider_event()
576 LIST_FOREACH_SAFE(cp, &pp->consumers, consumers, next_cp) { in g_new_provider_event()
586 LIST_FOREACH(cp, &pp->consumers, consumers) in g_new_provider_event()
592 mp->taste(mp, pp, 0); in g_new_provider_event()
600 struct g_provider *pp; in g_new_providerf() local
620 pp = g_malloc(sizeof *pp + sbuf_len(sb) + 1, M_WAITOK | M_ZERO); in g_new_providerf()
621 pp->name = (char *)(pp + 1); in g_new_providerf()
622 strcpy(pp->name, sbuf_data(sb)); in g_new_providerf()
624 LIST_INIT(&pp->consumers); in g_new_providerf()
625 LIST_INIT(&pp->aliases); in g_new_providerf()
626 pp->error = ENXIO; in g_new_providerf()
627 pp->geom = gp; in g_new_providerf()
628 pp->stat = devstat_new_entry(pp, -1, 0, DEVSTAT_ALL_SUPPORTED, in g_new_providerf()
630 LIST_INSERT_HEAD(&gp->provider, pp, provider); in g_new_providerf()
631 g_post_event(g_new_provider_event, pp, M_WAITOK, pp, gp, NULL); in g_new_providerf()
632 return (pp); in g_new_providerf()
636 g_provider_add_alias(struct g_provider *pp, const char *fmt, ...) in g_provider_add_alias() argument
651 LIST_FOREACH(gap, &pp->aliases, ga_next) { in g_provider_add_alias()
663 LIST_INSERT_HEAD(&pp->aliases, gap, ga_next); in g_provider_add_alias()
667 g_error_provider(struct g_provider *pp, int error) in g_error_provider() argument
670 /* G_VALID_PROVIDER(pp); We may not have g_topology */ in g_error_provider()
671 pp->error = error; in g_error_provider()
680 struct g_provider *pp; in g_resize_provider_event() local
689 pp = hh->pp; in g_resize_provider_event()
693 G_VALID_PROVIDER(pp); in g_resize_provider_event()
694 KASSERT(!(pp->flags & G_PF_WITHER), in g_resize_provider_event()
696 g_trace(G_T_TOPOLOGY, "g_resize_provider_event(%p)", pp); in g_resize_provider_event()
698 LIST_FOREACH_SAFE(cp, &pp->consumers, consumers, cp2) { in g_resize_provider_event()
700 if (gp->resize == NULL && size < pp->mediasize) { in g_resize_provider_event()
714 pp->mediasize = size; in g_resize_provider_event()
716 LIST_FOREACH_SAFE(cp, &pp->consumers, consumers, cp2) { in g_resize_provider_event()
729 LIST_FOREACH(cp, &pp->consumers, consumers) in g_resize_provider_event()
735 mp->taste(mp, pp, 0); in g_resize_provider_event()
741 g_resize_provider(struct g_provider *pp, off_t size) in g_resize_provider() argument
745 G_VALID_PROVIDER(pp); in g_resize_provider()
746 if (pp->flags & G_PF_WITHER) in g_resize_provider()
749 if (size == pp->mediasize) in g_resize_provider()
753 hh->pp = pp; in g_resize_provider()
763 struct g_provider *pp, *wpp; in g_provider_by_name() local
771 LIST_FOREACH(pp, &gp->provider, provider) { in g_provider_by_name()
772 if (strcmp(arg, pp->name) != 0) in g_provider_by_name()
775 (pp->flags & G_PF_WITHER) == 0) in g_provider_by_name()
776 return (pp); in g_provider_by_name()
778 wpp = pp; in g_provider_by_name()
787 g_destroy_provider(struct g_provider *pp) in g_destroy_provider() argument
793 G_VALID_PROVIDER(pp); in g_destroy_provider()
794 KASSERT(LIST_EMPTY(&pp->consumers), in g_destroy_provider()
796 KASSERT (pp->acr == 0, ("g_destroy_provider with acr")); in g_destroy_provider()
797 KASSERT (pp->acw == 0, ("g_destroy_provider with acw")); in g_destroy_provider()
798 KASSERT (pp->ace == 0, ("g_destroy_provider with ace")); in g_destroy_provider()
799 g_cancel_event(pp); in g_destroy_provider()
800 LIST_REMOVE(pp, provider); in g_destroy_provider()
801 gp = pp->geom; in g_destroy_provider()
802 devstat_remove_entry(pp->stat); in g_destroy_provider()
808 gp->providergone(pp); in g_destroy_provider()
809 LIST_FOREACH_SAFE(gap, &pp->aliases, ga_next, gaptmp) in g_destroy_provider()
811 g_free(pp); in g_destroy_provider()
886 g_attach(struct g_consumer *cp, struct g_provider *pp) in g_attach() argument
892 G_VALID_PROVIDER(pp); in g_attach()
893 g_trace(G_T_TOPOLOGY, "g_attach(%p, %p)", cp, pp); in g_attach()
895 if ((pp->flags & (G_PF_ORPHAN | G_PF_WITHER)) != 0) in g_attach()
897 cp->provider = pp; in g_attach()
899 LIST_INSERT_HEAD(&pp->consumers, cp, consumers); in g_attach()
912 struct g_provider *pp; in g_detach() local
923 pp = cp->provider; in g_detach()
927 (pp->geom->flags & G_GEOM_WITHER) || in g_detach()
928 (pp->flags & G_PF_WITHER)) in g_detach()
943 struct g_provider *pp; in g_access() local
953 pp = cp->provider; in g_access()
954 KASSERT(pp != NULL, ("access but not attached")); in g_access()
955 G_VALID_PROVIDER(pp); in g_access()
956 gp = pp->geom; in g_access()
959 cp, pp->name, dcr, dcw, dce); in g_access()
995 __func__, gp->name, pp->name, cp->geom->name); in g_access()
1004 pw = pp->acw - cp->acw; in g_access()
1005 pe = pp->ace - cp->ace; in g_access()
1011 pp->acr, pp->acw, pp->ace, in g_access()
1012 pp, pp->name); in g_access()
1024 else if ((dcr > 0 || dcw > 0 || dce > 0) && pp->error != 0) { in g_access()
1026 __func__, __LINE__, pp->name, pp->error); in g_access()
1027 return (pp->error); in g_access()
1038 error = gp->access(pp, dcr, dcw, dce); in g_access()
1041 "closing ->access()", gp->class->name, pp->name, dcr, dcw, in g_access()
1059 if (pp->acw == 0 && dcw != 0) in g_access()
1060 g_spoil(pp, cp); in g_access()
1061 else if (pp->acw != 0 && pp->acw == -dcw && pp->error == 0 && in g_access()
1063 g_post_event(g_new_provider_event, pp, M_WAITOK, in g_access()
1064 pp, NULL); in g_access()
1066 pp->acr += dcr; in g_access()
1067 pp->acw += dcw; in g_access()
1068 pp->ace += dce; in g_access()
1072 if (pp->acr != 0 || pp->acw != 0 || pp->ace != 0) in g_access()
1073 KASSERT(pp->sectorsize > 0, in g_access()
1074 ("Provider %s lacks sectorsize", pp->name)); in g_access()
1140 g_std_access(struct g_provider *pp, in g_std_access() argument
1145 G_VALID_PROVIDER(pp); in g_std_access()
1173 struct g_provider *pp; in g_std_spoiled() local
1181 LIST_FOREACH(pp, &gp->provider, provider) in g_std_spoiled()
1182 g_orphan_provider(pp, ENXIO); in g_std_spoiled()
1204 struct g_provider *pp; in g_spoil_event() local
1210 pp = arg; in g_spoil_event()
1211 G_VALID_PROVIDER(pp); in g_spoil_event()
1212 g_trace(G_T_TOPOLOGY, "%s %p(%s:%s:%s)", __func__, pp, in g_spoil_event()
1213 pp->geom->class->name, pp->geom->name, pp->name); in g_spoil_event()
1214 for (cp = LIST_FIRST(&pp->consumers); cp != NULL; cp = cp2) { in g_spoil_event()
1227 g_spoil(struct g_provider *pp, struct g_consumer *cp) in g_spoil() argument
1232 G_VALID_PROVIDER(pp); in g_spoil()
1235 LIST_FOREACH(cp2, &pp->consumers, consumers) { in g_spoil()
1245 g_post_event(g_spoil_event, pp, M_WAITOK, pp, NULL); in g_spoil()
1251 struct g_provider *pp; in g_media_changed_event() local
1257 pp = arg; in g_media_changed_event()
1258 G_VALID_PROVIDER(pp); in g_media_changed_event()
1264 retaste = (pp->acw == 0 && pp->error == 0 && in g_media_changed_event()
1265 !(pp->geom->flags & G_GEOM_WITHER)); in g_media_changed_event()
1268 g_post_event(g_new_provider_event, pp, M_WAITOK, pp, NULL); in g_media_changed_event()
1272 g_media_changed(struct g_provider *pp, int flag) in g_media_changed() argument
1276 LIST_FOREACH(cp, &pp->consumers, consumers) in g_media_changed()
1278 return (g_post_event(g_media_changed_event, pp, flag, pp, NULL)); in g_media_changed()
1282 g_media_gone(struct g_provider *pp, int flag) in g_media_gone() argument
1286 LIST_FOREACH(cp, &pp->consumers, consumers) in g_media_gone()
1288 return (g_post_event(g_spoil_event, pp, flag, pp, NULL)); in g_media_gone()
1356 struct g_provider *pp; in g_valid_obj() local
1372 LIST_FOREACH(pp, &gp->provider, provider) in g_valid_obj()
1373 if (ptr == pp) in g_valid_obj()
1402 provider_flags_to_string(struct g_provider *pp, char *str, size_t size) in provider_flags_to_string() argument
1407 if (pp->flags == 0) { in provider_flags_to_string()
1411 ADDFLAG(pp, G_PF_WITHER, "G_PF_WITHER"); in provider_flags_to_string()
1412 ADDFLAG(pp, G_PF_ORPHAN, "G_PF_ORPHAN"); in provider_flags_to_string()
1461 db_show_geom_provider(int indent, struct g_provider *pp) in db_show_geom_provider() argument
1467 gprintln("provider: %s (%p)", pp->name, pp); in db_show_geom_provider()
1468 gprintln(" class: %s (%p)", pp->geom->class->name, in db_show_geom_provider()
1469 pp->geom->class); in db_show_geom_provider()
1470 gprintln(" geom: %s (%p)", pp->geom->name, pp->geom); in db_show_geom_provider()
1471 gprintln(" mediasize: %jd", (intmax_t)pp->mediasize); in db_show_geom_provider()
1472 gprintln(" sectorsize: %u", pp->sectorsize); in db_show_geom_provider()
1473 gprintln(" stripesize: %ju", (uintmax_t)pp->stripesize); in db_show_geom_provider()
1474 gprintln(" stripeoffset: %ju", (uintmax_t)pp->stripeoffset); in db_show_geom_provider()
1475 gprintln(" access: r%dw%de%d", pp->acr, pp->acw, in db_show_geom_provider()
1476 pp->ace); in db_show_geom_provider()
1478 provider_flags_to_string(pp, flags, sizeof(flags)), in db_show_geom_provider()
1479 pp->flags); in db_show_geom_provider()
1480 gprintln(" error: %d", pp->error); in db_show_geom_provider()
1481 if (LIST_EMPTY(&pp->consumers)) in db_show_geom_provider()
1485 pp->name, pp, pp->acr, pp->acw, pp->ace); in db_show_geom_provider()
1486 if (pp->flags != 0) { in db_show_geom_provider()
1488 provider_flags_to_string(pp, flags, sizeof(flags)), in db_show_geom_provider()
1489 pp->flags); in db_show_geom_provider()
1493 if (!LIST_EMPTY(&pp->consumers)) { in db_show_geom_provider()
1494 LIST_FOREACH(cp, &pp->consumers, consumers) { in db_show_geom_provider()
1505 struct g_provider *pp; in db_show_geom_geom() local
1529 LIST_FOREACH(pp, &gp->provider, provider) { in db_show_geom_geom()
1530 db_show_geom_provider(indent + 2, pp); in db_show_geom_geom()