Lines Matching refs: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()
465 struct g_consumer *cp; in g_wither_geom_close() local
470 LIST_FOREACH(cp, &gp->consumer, consumer) in g_wither_geom_close()
471 if (cp->acr || cp->acw || cp->ace) in g_wither_geom_close()
472 g_access(cp, -cp->acr, -cp->acw, -cp->ace); in g_wither_geom_close()
486 struct g_consumer *cp, *cp2; in g_wither_washer() local
503 LIST_FOREACH_SAFE(cp, &gp->consumer, consumer, cp2) { in g_wither_washer()
504 if (cp->acr || cp->acw || cp->ace) in g_wither_washer()
506 if (cp->provider != NULL) in g_wither_washer()
507 g_detach(cp); in g_wither_washer()
508 g_destroy_consumer(cp); in g_wither_washer()
520 struct g_consumer *cp; in g_new_consumer() local
531 cp = g_malloc(sizeof *cp, M_WAITOK | M_ZERO); in g_new_consumer()
532 cp->geom = gp; in g_new_consumer()
533 cp->stat = devstat_new_entry(cp, -1, 0, DEVSTAT_ALL_SUPPORTED, in g_new_consumer()
535 LIST_INSERT_HEAD(&gp->consumer, cp, consumer); in g_new_consumer()
536 return(cp); in g_new_consumer()
540 g_destroy_consumer(struct g_consumer *cp) in g_destroy_consumer() argument
545 G_VALID_CONSUMER(cp); in g_destroy_consumer()
546 g_trace(G_T_TOPOLOGY, "g_destroy_consumer(%p)", cp); in g_destroy_consumer()
547 KASSERT (cp->provider == NULL, ("g_destroy_consumer but attached")); in g_destroy_consumer()
548 KASSERT (cp->acr == 0, ("g_destroy_consumer with acr")); in g_destroy_consumer()
549 KASSERT (cp->acw == 0, ("g_destroy_consumer with acw")); in g_destroy_consumer()
550 KASSERT (cp->ace == 0, ("g_destroy_consumer with ace")); in g_destroy_consumer()
551 g_cancel_event(cp); in g_destroy_consumer()
552 gp = cp->geom; in g_destroy_consumer()
553 LIST_REMOVE(cp, consumer); in g_destroy_consumer()
554 devstat_remove_entry(cp->stat); in g_destroy_consumer()
555 g_free(cp); in g_destroy_consumer()
565 struct g_consumer *cp, *next_cp; in g_new_provider_event() local
576 LIST_FOREACH_SAFE(cp, &pp->consumers, consumers, next_cp) { in g_new_provider_event()
577 if ((cp->flags & G_CF_ORPHAN) == 0 && in g_new_provider_event()
578 cp->geom->attrchanged != NULL) in g_new_provider_event()
579 cp->geom->attrchanged(cp, "GEOM::media"); in g_new_provider_event()
586 LIST_FOREACH(cp, &pp->consumers, consumers) in g_new_provider_event()
587 if (cp->geom->class == mp && in g_new_provider_event()
588 (cp->flags & G_CF_ORPHAN) == 0) in g_new_provider_event()
590 if (cp != NULL) in g_new_provider_event()
681 struct g_consumer *cp, *cp2; in g_resize_provider_event() local
698 LIST_FOREACH_SAFE(cp, &pp->consumers, consumers, cp2) { in g_resize_provider_event()
699 gp = cp->geom; in g_resize_provider_event()
707 if (cp->flags & G_CF_ORPHAN) in g_resize_provider_event()
709 cp->flags |= G_CF_ORPHAN; in g_resize_provider_event()
710 cp->geom->orphan(cp); in g_resize_provider_event()
716 LIST_FOREACH_SAFE(cp, &pp->consumers, consumers, cp2) { in g_resize_provider_event()
717 gp = cp->geom; in g_resize_provider_event()
719 gp->resize(cp); in g_resize_provider_event()
729 LIST_FOREACH(cp, &pp->consumers, consumers) in g_resize_provider_event()
730 if (cp->geom->class == mp && in g_resize_provider_event()
731 (cp->flags & G_CF_ORPHAN) == 0) in g_resize_provider_event()
733 if (cp != NULL) in g_resize_provider_event()
761 struct g_class *cp; in g_provider_by_name() local
769 LIST_FOREACH(cp, &g_classes, class) { in g_provider_by_name()
770 LIST_FOREACH(gp, &cp->geom, geom) { in g_provider_by_name()
836 struct g_consumer *cp; in redo_rank() local
857 LIST_FOREACH(cp, &gp1->consumer, consumer) { in redo_rank()
858 if (cp->provider == NULL) in redo_rank()
860 n = cp->provider->geom->rank; in redo_rank()
886 g_attach(struct g_consumer *cp, struct g_provider *pp) in g_attach() argument
891 G_VALID_CONSUMER(cp); in g_attach()
893 g_trace(G_T_TOPOLOGY, "g_attach(%p, %p)", cp, pp); in g_attach()
894 KASSERT(cp->provider == NULL, ("attach but attached")); in g_attach()
897 cp->provider = pp; in g_attach()
898 cp->flags &= ~G_CF_ORPHAN; in g_attach()
899 LIST_INSERT_HEAD(&pp->consumers, cp, consumers); in g_attach()
900 error = redo_rank(cp->geom); in g_attach()
902 LIST_REMOVE(cp, consumers); in g_attach()
903 cp->provider = NULL; in g_attach()
904 redo_rank(cp->geom); in g_attach()
910 g_detach(struct g_consumer *cp) in g_detach() argument
915 G_VALID_CONSUMER(cp); in g_detach()
916 g_trace(G_T_TOPOLOGY, "g_detach(%p)", cp); in g_detach()
917 KASSERT(cp->provider != NULL, ("detach but not attached")); in g_detach()
918 KASSERT(cp->acr == 0, ("detach but nonzero acr")); in g_detach()
919 KASSERT(cp->acw == 0, ("detach but nonzero acw")); in g_detach()
920 KASSERT(cp->ace == 0, ("detach but nonzero ace")); in g_detach()
921 KASSERT(cp->nstart == cp->nend, in g_detach()
923 pp = cp->provider; in g_detach()
924 LIST_REMOVE(cp, consumers); in g_detach()
925 cp->provider = NULL; in g_detach()
926 if ((cp->geom->flags & G_GEOM_WITHER) || in g_detach()
930 redo_rank(cp->geom); in g_detach()
941 g_access(struct g_consumer *cp, int dcr, int dcw, int dce) in g_access() argument
952 G_VALID_CONSUMER(cp); in g_access()
953 pp = cp->provider; in g_access()
959 cp, pp->name, dcr, dcw, dce); in g_access()
961 KASSERT(cp->acr + dcr >= 0, ("access resulting in negative acr")); in g_access()
962 KASSERT(cp->acw + dcw >= 0, ("access resulting in negative acw")); in g_access()
963 KASSERT(cp->ace + dce >= 0, ("access resulting in negative ace")); in g_access()
965 KASSERT(cp->acr + dcr != 0 || cp->acw + dcw != 0 || in g_access()
966 cp->ace + dce != 0 || cp->nstart == cp->nend, in g_access()
975 if (cp->geom->spoiled != NULL && (cp->flags & G_CF_SPOILED) && 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()
1010 cp->acr, cp->acw, cp->ace, in g_access()
1033 sr = cp->acr; in g_access()
1034 sw = cp->acw; in g_access()
1035 se = cp->ace; in g_access()
1046 KASSERT(cp->acr == sr && cp->acw == sw && cp->ace == se, in g_access()
1060 g_spoil(pp, cp); in g_access()
1069 cp->acr += dcr; in g_access()
1070 cp->acw += dcw; in g_access()
1071 cp->ace += dce; in g_access()
1075 if ((cp->geom->flags & G_GEOM_WITHER) && in g_access()
1076 cp->acr == 0 && cp->acw == 0 && cp->ace == 0) in g_access()
1170 g_std_spoiled(struct g_consumer *cp) in g_std_spoiled() argument
1176 G_VALID_CONSUMER(cp); in g_std_spoiled()
1177 g_trace(G_T_TOPOLOGY, "g_std_spoiled(%p)", cp); in g_std_spoiled()
1178 cp->flags |= G_CF_ORPHAN; in g_std_spoiled()
1179 g_detach(cp); in g_std_spoiled()
1180 gp = cp->geom; in g_std_spoiled()
1183 g_destroy_consumer(cp); in g_std_spoiled()
1205 struct g_consumer *cp, *cp2; in g_spoil_event() local
1214 for (cp = LIST_FIRST(&pp->consumers); cp != NULL; cp = cp2) { in g_spoil_event()
1215 cp2 = LIST_NEXT(cp, consumers); in g_spoil_event()
1216 if ((cp->flags & G_CF_SPOILED) == 0) in g_spoil_event()
1218 cp->flags &= ~G_CF_SPOILED; in g_spoil_event()
1219 if (cp->geom->spoiled == NULL) in g_spoil_event()
1221 cp->geom->spoiled(cp); in g_spoil_event()
1227 g_spoil(struct g_provider *pp, struct g_consumer *cp) in g_spoil() argument
1233 G_VALID_CONSUMER(cp); in g_spoil()
1236 if (cp2 == cp) in g_spoil()
1274 struct g_consumer *cp; in g_media_changed() local
1276 LIST_FOREACH(cp, &pp->consumers, consumers) in g_media_changed()
1277 cp->flags |= G_CF_SPOILED; in g_media_changed()
1284 struct g_consumer *cp; in g_media_gone() local
1286 LIST_FOREACH(cp, &pp->consumers, consumers) in g_media_gone()
1287 cp->flags |= G_CF_SPOILED; in g_media_gone()
1292 g_getattr__(const char *attr, struct g_consumer *cp, void *var, int len) in g_getattr__() argument
1297 error = g_io_getattr(attr, cp, &i, var); in g_getattr__()
1355 struct g_consumer *cp; in g_valid_obj() local
1369 LIST_FOREACH(cp, &gp->consumer, consumer) in g_valid_obj()
1370 if (ptr == cp) in g_valid_obj()
1430 db_show_geom_consumer(int indent, struct g_consumer *cp) in db_show_geom_consumer() argument
1434 gprintln("consumer: %p", cp); in db_show_geom_consumer()
1435 gprintln(" class: %s (%p)", cp->geom->class->name, in db_show_geom_consumer()
1436 cp->geom->class); in db_show_geom_consumer()
1437 gprintln(" geom: %s (%p)", cp->geom->name, cp->geom); in db_show_geom_consumer()
1438 if (cp->provider == NULL) in db_show_geom_consumer()
1441 gprintln(" provider: %s (%p)", cp->provider->name, in db_show_geom_consumer()
1442 cp->provider); in db_show_geom_consumer()
1444 gprintln(" access: r%dw%de%d", cp->acr, cp->acw, cp->ace); in db_show_geom_consumer()
1445 gprintln(" flags: 0x%04x", cp->flags); in db_show_geom_consumer()
1447 gprintln(" nstart: %u", cp->nstart); in db_show_geom_consumer()
1448 gprintln(" nend: %u", cp->nend); in db_show_geom_consumer()
1451 gprintf("consumer: %p (%s), access=r%dw%de%d", cp, in db_show_geom_consumer()
1452 cp->provider != NULL ? cp->provider->name : "none", in db_show_geom_consumer()
1453 cp->acr, cp->acw, cp->ace); in db_show_geom_consumer()
1454 if (cp->flags) in db_show_geom_consumer()
1455 db_printf(", flags=0x%04x", cp->flags); in db_show_geom_consumer()
1463 struct g_consumer *cp; in db_show_geom_provider() local
1494 LIST_FOREACH(cp, &pp->consumers, consumers) { in db_show_geom_provider()
1495 db_show_geom_consumer(indent + 2, cp); in db_show_geom_provider()
1506 struct g_consumer *cp; in db_show_geom_geom() local
1536 LIST_FOREACH(cp, &gp->consumer, consumer) { in db_show_geom_geom()
1537 db_show_geom_consumer(indent + 2, cp); in db_show_geom_geom()