Lines Matching full:cp
185 struct g_consumer *cp; in g_unload_class() local
199 LIST_FOREACH(cp, &gp->consumer, consumer) in g_unload_class()
200 if (cp->acr || cp->acw || cp->ace) { in g_unload_class()
307 struct g_consumer *cp; in g_retaste_event() local
329 LIST_FOREACH(cp, &pp->consumers, consumers) { in g_retaste_event()
330 if (cp->geom->class == mp && in g_retaste_event()
331 (cp->flags & G_CF_ORPHAN) == 0) in g_retaste_event()
334 if (cp != NULL) { in g_retaste_event()
335 cp->flags |= G_CF_ORPHAN; in g_retaste_event()
336 g_wither_geom(cp->geom, ENXIO); in g_retaste_event()
464 struct g_consumer *cp; in g_wither_geom_close() local
469 LIST_FOREACH(cp, &gp->consumer, consumer) in g_wither_geom_close()
470 if (cp->acr || cp->acw || cp->ace) in g_wither_geom_close()
471 g_access(cp, -cp->acr, -cp->acw, -cp->ace); in g_wither_geom_close()
485 struct g_consumer *cp, *cp2; in g_wither_washer() local
502 LIST_FOREACH_SAFE(cp, &gp->consumer, consumer, cp2) { in g_wither_washer()
503 if (cp->acr || cp->acw || cp->ace) in g_wither_washer()
505 if (cp->provider != NULL) in g_wither_washer()
506 g_detach(cp); in g_wither_washer()
507 g_destroy_consumer(cp); in g_wither_washer()
519 struct g_consumer *cp; in g_new_consumer() local
530 cp = g_malloc(sizeof *cp, M_WAITOK | M_ZERO); in g_new_consumer()
531 cp->geom = gp; in g_new_consumer()
532 cp->stat = devstat_new_entry(cp, -1, 0, DEVSTAT_ALL_SUPPORTED, in g_new_consumer()
534 LIST_INSERT_HEAD(&gp->consumer, cp, consumer); in g_new_consumer()
535 return(cp); in g_new_consumer()
539 g_destroy_consumer(struct g_consumer *cp) in g_destroy_consumer() argument
544 G_VALID_CONSUMER(cp); in g_destroy_consumer()
545 g_trace(G_T_TOPOLOGY, "g_destroy_consumer(%p)", cp); in g_destroy_consumer()
546 KASSERT (cp->provider == NULL, ("g_destroy_consumer but attached")); in g_destroy_consumer()
547 KASSERT (cp->acr == 0, ("g_destroy_consumer with acr")); in g_destroy_consumer()
548 KASSERT (cp->acw == 0, ("g_destroy_consumer with acw")); in g_destroy_consumer()
549 KASSERT (cp->ace == 0, ("g_destroy_consumer with ace")); in g_destroy_consumer()
550 g_cancel_event(cp); in g_destroy_consumer()
551 gp = cp->geom; in g_destroy_consumer()
552 LIST_REMOVE(cp, consumer); in g_destroy_consumer()
553 devstat_remove_entry(cp->stat); in g_destroy_consumer()
554 g_free(cp); in g_destroy_consumer()
564 struct g_consumer *cp, *next_cp; in g_new_provider_event() local
575 LIST_FOREACH_SAFE(cp, &pp->consumers, consumers, next_cp) { in g_new_provider_event()
576 if ((cp->flags & G_CF_ORPHAN) == 0 && in g_new_provider_event()
577 cp->geom->attrchanged != NULL) in g_new_provider_event()
578 cp->geom->attrchanged(cp, "GEOM::media"); in g_new_provider_event()
585 LIST_FOREACH(cp, &pp->consumers, consumers) in g_new_provider_event()
586 if (cp->geom->class == mp && in g_new_provider_event()
587 (cp->flags & G_CF_ORPHAN) == 0) in g_new_provider_event()
589 if (cp != NULL) in g_new_provider_event()
680 struct g_consumer *cp, *cp2; in g_resize_provider_event() local
697 LIST_FOREACH_SAFE(cp, &pp->consumers, consumers, cp2) { in g_resize_provider_event()
698 gp = cp->geom; in g_resize_provider_event()
706 if (cp->flags & G_CF_ORPHAN) in g_resize_provider_event()
708 cp->flags |= G_CF_ORPHAN; in g_resize_provider_event()
709 cp->geom->orphan(cp); in g_resize_provider_event()
715 LIST_FOREACH_SAFE(cp, &pp->consumers, consumers, cp2) { in g_resize_provider_event()
716 gp = cp->geom; in g_resize_provider_event()
718 gp->resize(cp); in g_resize_provider_event()
728 LIST_FOREACH(cp, &pp->consumers, consumers) in g_resize_provider_event()
729 if (cp->geom->class == mp && in g_resize_provider_event()
730 (cp->flags & G_CF_ORPHAN) == 0) in g_resize_provider_event()
732 if (cp != NULL) in g_resize_provider_event()
760 struct g_class *cp; in g_provider_by_name() local
768 LIST_FOREACH(cp, &g_classes, class) { in g_provider_by_name()
769 LIST_FOREACH(gp, &cp->geom, geom) { in g_provider_by_name()
835 struct g_consumer *cp; in redo_rank() local
856 LIST_FOREACH(cp, &gp1->consumer, consumer) { in redo_rank()
857 if (cp->provider == NULL) in redo_rank()
859 n = cp->provider->geom->rank; in redo_rank()
885 g_attach(struct g_consumer *cp, struct g_provider *pp) in g_attach() argument
890 G_VALID_CONSUMER(cp); in g_attach()
892 g_trace(G_T_TOPOLOGY, "g_attach(%p, %p)", cp, pp); in g_attach()
893 KASSERT(cp->provider == NULL, ("attach but attached")); in g_attach()
896 cp->provider = pp; in g_attach()
897 cp->flags &= ~G_CF_ORPHAN; in g_attach()
898 LIST_INSERT_HEAD(&pp->consumers, cp, consumers); in g_attach()
899 error = redo_rank(cp->geom); in g_attach()
901 LIST_REMOVE(cp, consumers); in g_attach()
902 cp->provider = NULL; in g_attach()
903 redo_rank(cp->geom); in g_attach()
909 g_detach(struct g_consumer *cp) in g_detach() argument
914 G_VALID_CONSUMER(cp); in g_detach()
915 g_trace(G_T_TOPOLOGY, "g_detach(%p)", cp); in g_detach()
916 KASSERT(cp->provider != NULL, ("detach but not attached")); in g_detach()
917 KASSERT(cp->acr == 0, ("detach but nonzero acr")); in g_detach()
918 KASSERT(cp->acw == 0, ("detach but nonzero acw")); in g_detach()
919 KASSERT(cp->ace == 0, ("detach but nonzero ace")); in g_detach()
920 KASSERT(cp->nstart == cp->nend, in g_detach()
922 pp = cp->provider; in g_detach()
923 LIST_REMOVE(cp, consumers); in g_detach()
924 cp->provider = NULL; in g_detach()
925 if ((cp->geom->flags & G_GEOM_WITHER) || in g_detach()
929 redo_rank(cp->geom); in g_detach()
936 * "cp" change the access counters by the relative amounts dc[rwe] ?"
940 g_access(struct g_consumer *cp, int dcr, int dcw, int dce) in g_access() argument
951 G_VALID_CONSUMER(cp); in g_access()
952 pp = cp->provider; in g_access()
958 cp, pp->name, dcr, dcw, dce); in g_access()
960 KASSERT(cp->acr + dcr >= 0, ("access resulting in negative acr")); in g_access()
961 KASSERT(cp->acw + dcw >= 0, ("access resulting in negative acw")); in g_access()
962 KASSERT(cp->ace + dce >= 0, ("access resulting in negative ace")); in g_access()
964 KASSERT(cp->acr + dcr != 0 || cp->acw + dcw != 0 || in g_access()
965 cp->ace + dce != 0 || cp->nstart == cp->nend, in g_access()
974 if (cp->geom->spoiled != NULL && (cp->flags & G_CF_SPOILED) && in g_access()
994 __func__, gp->name, pp->name, cp->geom->name); in g_access()
1003 pw = pp->acw - cp->acw; in g_access()
1004 pe = pp->ace - cp->ace; in g_access()
1009 cp->acr, cp->acw, cp->ace, in g_access()
1032 sr = cp->acr; in g_access()
1033 sw = cp->acw; in g_access()
1034 se = cp->ace; in g_access()
1045 KASSERT(cp->acr == sr && cp->acw == sw && cp->ace == se, in g_access()
1059 g_spoil(pp, cp); in g_access()
1068 cp->acr += dcr; in g_access()
1069 cp->acw += dcw; in g_access()
1070 cp->ace += dce; in g_access()
1074 if ((cp->geom->flags & G_GEOM_WITHER) && in g_access()
1075 cp->acr == 0 && cp->acw == 0 && cp->ace == 0) in g_access()
1169 g_std_spoiled(struct g_consumer *cp) in g_std_spoiled() argument
1175 G_VALID_CONSUMER(cp); in g_std_spoiled()
1176 g_trace(G_T_TOPOLOGY, "g_std_spoiled(%p)", cp); in g_std_spoiled()
1177 cp->flags |= G_CF_ORPHAN; in g_std_spoiled()
1178 g_detach(cp); in g_std_spoiled()
1179 gp = cp->geom; in g_std_spoiled()
1182 g_destroy_consumer(cp); in g_std_spoiled()
1204 struct g_consumer *cp, *cp2; in g_spoil_event() local
1213 for (cp = LIST_FIRST(&pp->consumers); cp != NULL; cp = cp2) { in g_spoil_event()
1214 cp2 = LIST_NEXT(cp, consumers); in g_spoil_event()
1215 if ((cp->flags & G_CF_SPOILED) == 0) in g_spoil_event()
1217 cp->flags &= ~G_CF_SPOILED; in g_spoil_event()
1218 if (cp->geom->spoiled == NULL) in g_spoil_event()
1220 cp->geom->spoiled(cp); in g_spoil_event()
1226 g_spoil(struct g_provider *pp, struct g_consumer *cp) in g_spoil() argument
1232 G_VALID_CONSUMER(cp); in g_spoil()
1235 if (cp2 == cp) in g_spoil()
1238 KASSERT(cp2->acr == 0, ("spoiling cp->acr = %d", cp2->acr)); in g_spoil()
1239 KASSERT(cp2->acw == 0, ("spoiling cp->acw = %d", cp2->acw)); in g_spoil()
1241 KASSERT(cp2->ace == 0, ("spoiling cp->ace = %d", cp2->ace)); in g_spoil()
1273 struct g_consumer *cp; in g_media_changed() local
1275 LIST_FOREACH(cp, &pp->consumers, consumers) in g_media_changed()
1276 cp->flags |= G_CF_SPOILED; in g_media_changed()
1283 struct g_consumer *cp; in g_media_gone() local
1285 LIST_FOREACH(cp, &pp->consumers, consumers) in g_media_gone()
1286 cp->flags |= G_CF_SPOILED; in g_media_gone()
1291 g_getattr__(const char *attr, struct g_consumer *cp, void *var, int len) in g_getattr__() argument
1296 error = g_io_getattr(attr, cp, &i, var); in g_getattr__()
1354 struct g_consumer *cp; in g_valid_obj() local
1368 LIST_FOREACH(cp, &gp->consumer, consumer) in g_valid_obj()
1369 if (ptr == cp) in g_valid_obj()
1429 db_show_geom_consumer(int indent, struct g_consumer *cp) in db_show_geom_consumer() argument
1433 gprintln("consumer: %p", cp); in db_show_geom_consumer()
1434 gprintln(" class: %s (%p)", cp->geom->class->name, in db_show_geom_consumer()
1435 cp->geom->class); in db_show_geom_consumer()
1436 gprintln(" geom: %s (%p)", cp->geom->name, cp->geom); in db_show_geom_consumer()
1437 if (cp->provider == NULL) in db_show_geom_consumer()
1440 gprintln(" provider: %s (%p)", cp->provider->name, in db_show_geom_consumer()
1441 cp->provider); in db_show_geom_consumer()
1443 gprintln(" access: r%dw%de%d", cp->acr, cp->acw, cp->ace); in db_show_geom_consumer()
1444 gprintln(" flags: 0x%04x", cp->flags); in db_show_geom_consumer()
1446 gprintln(" nstart: %u", cp->nstart); in db_show_geom_consumer()
1447 gprintln(" nend: %u", cp->nend); in db_show_geom_consumer()
1450 gprintf("consumer: %p (%s), access=r%dw%de%d", cp, in db_show_geom_consumer()
1451 cp->provider != NULL ? cp->provider->name : "none", in db_show_geom_consumer()
1452 cp->acr, cp->acw, cp->ace); in db_show_geom_consumer()
1453 if (cp->flags) in db_show_geom_consumer()
1454 db_printf(", flags=0x%04x", cp->flags); in db_show_geom_consumer()
1462 struct g_consumer *cp; in db_show_geom_provider() local
1493 LIST_FOREACH(cp, &pp->consumers, consumers) { in db_show_geom_provider()
1494 db_show_geom_consumer(indent + 2, cp); in db_show_geom_provider()
1505 struct g_consumer *cp; in db_show_geom_geom() local
1535 LIST_FOREACH(cp, &gp->consumer, consumer) { in db_show_geom_geom()
1536 db_show_geom_consumer(indent + 2, cp); in db_show_geom_geom()