Lines Matching defs:gsp

249 g_gsched_ref(struct g_gsched *gsp)
252 atomic_add_int(&gsp->gs_refs, 1);
256 g_gsched_unref(struct g_gsched *gsp)
259 atomic_add_int(&gsp->gs_refs, -1);
285 struct g_gsched *gsp = sc->sc_gsched;
291 while ((bp = gsp->gs_next(sc->sc_data, 1)) != NULL)
305 struct g_gsched *gsp = sc->sc_gsched;
313 while ((bp = gsp->gs_next(sc->sc_data, 0)) != NULL)
373 struct g_gsched *gsp;
387 gsp = sc->sc_gsched;
388 gsc = malloc(sizeof(*gsc) + gsp->gs_priv_size,
393 if (gsp->gs_init_class(sc->sc_data, gsc->gsc_priv)) {
431 struct g_gsched *gsp, void *data)
439 if (data && gsp->gs_hash_unref)
440 gsp->gs_hash_unref(data);
451 g_sched_hash_init(struct g_gsched *gsp, u_long *mask, int flags)
455 if (gsp->gs_priv_size == 0)
507 g_sched_remove_locked(struct g_geom *gp, struct g_gsched *gsp)
520 /* No more requests pending or in flight from the old gsp. */
522 g_sched_hash_fini(gp, sc->sc_hash, sc->sc_mask, gsp, sc->sc_data);
533 gsp->gs_fini(sc->sc_data);
538 g_gsched_unref(gsp);
547 g_sched_remove(struct g_geom *gp, struct g_gsched *gsp)
552 error = g_sched_remove_locked(gp, gsp); /* gsp is surely non-null */
565 struct g_gsched *gsp = NULL;
568 LIST_FOREACH(gsp, &me.gs_scheds, glist) {
569 if (strcmp(name, gsp->gs_name) == 0) {
570 g_gsched_ref(gsp);
576 return (gsp);
584 g_gsched_build_names(struct g_gsched *gsp)
606 g_gsched_register(struct g_gsched *gsp)
613 if (strcmp(gsp->gs_name, cur->gs_name) == 0)
618 "exists.", gsp->gs_name);
621 LIST_INSERT_HEAD(&me.gs_scheds, gsp, glist);
622 gsp->gs_refs = 1;
624 g_gsched_build_names(gsp);
640 struct g_gsched *gsp = parm->gup_gsp, *cur, *tmp;
659 if (sc->sc_gsched == gsp) {
660 error = g_sched_remove(gp, gsp);
667 if (cur != gsp)
670 if (gsp->gs_refs != 1) {
672 gsp->gs_name);
675 LIST_REMOVE(gsp, glist);
677 g_gsched_build_names(gsp);
683 G_SCHED_DEBUG(0, "%s not registered.", gsp->gs_name);
711 struct g_gsched *gsp = arg;
727 error = g_gsched_register(gsp);
729 gsp->gs_name, error);
735 parm.gup_gsp = gsp;
743 gsp->gs_name, error);
973 * If successful, add a reference to this gsp.
977 struct g_provider *pp, struct g_gsched *gsp, int proxy)
1001 sc->sc_gsched = gsp;
1002 sc->sc_data = gsp->gs_init(gp);
1008 sc->sc_hash = g_sched_hash_init(gsp, &sc->sc_mask, HASH_WAITOK);
1043 g_gsched_ref(gsp);
1057 gsp, sc->sc_data);
1059 gsp->gs_fini(sc->sc_data);
1074 struct g_provider *pp, struct g_gsched *gsp)
1086 data = gsp->gs_init(gp);
1090 newh = g_sched_hash_init(gsp, &mask, HASH_WAITOK);
1091 if (gsp->gs_priv_size && !newh) {
1103 g_gsched_ref(gsp);
1104 sc->sc_gsched = gsp;
1115 g_sched_hash_fini(gp, newh, mask, gsp, data);
1118 gsp->gs_fini(data);
1238 struct g_gsched *gsp;
1262 gsp = sc->sc_gsched;
1263 if (gsp) {
1314 gsp, sc->sc_data);
1316 gsp->gs_fini(sc->sc_data);
1317 g_gsched_unref(gsp);
1485 struct g_gsched *gsp = NULL; /* the . algorithm we want */
1523 gsp = g_gsched_find(s); /* also get a reference */
1524 if (gsp == NULL) {
1530 g_sched_create(NULL, mp, pp, gsp, 0);
1531 g_gsched_unref(gsp);
1540 struct g_gsched *gsp;
1552 gsp = g_gsched_find(name); /* also get a reference */
1553 if (gsp == NULL) {
1574 if (g_sched_create(req, mp, pp, gsp, proxy) != 0)
1578 g_gsched_unref(gsp);
1585 struct g_gsched *gsp;
1597 gsp = g_gsched_find(name); /* also get a reference */
1598 if (gsp == NULL) {
1619 if (g_sched_change_algo(req, mp, pp, gsp) != 0)
1623 g_gsched_unref(gsp);
1717 struct g_gsched *gsp = sc->sc_gsched;
1719 sbuf_printf(sb, " algo %s", gsp ? gsp->gs_name : "--");
1721 if (gsp != NULL && gsp->gs_dumpconf)
1722 gsp->gs_dumpconf(sb, indent, gp, cp, pp);