Lines Matching refs:osd

56 	LIST_HEAD(, osd)	 osd_list;		/* (l) */
66 SYSCTL_INT(_debug, OID_AUTO, osd, CTLFLAG_RWTUN, &osd_debug, 0, "OSD debug level");
76 static void do_osd_del(u_int type, struct osd *osd, u_int slot,
152 struct osd *osd, *tosd; in osd_deregister() local
165 LIST_FOREACH_SAFE(osd, &osdm[type].osd_list, osd_next, tosd) in osd_deregister()
166 do_osd_del(type, osd, slot, 1); in osd_deregister()
185 osd_set(u_int type, struct osd *osd, u_int slot, void *value) in osd_set() argument
188 return (osd_set_reserved(type, osd, slot, NULL, value)); in osd_set()
202 osd_set_reserved(u_int type, struct osd *osd, u_int slot, void **rsv, in osd_set_reserved() argument
213 if (slot > osd->osd_nslots) { in osd_set_reserved()
236 if (osd->osd_nslots != 0) { in osd_set_reserved()
237 memcpy(newptr, osd->osd_slots, in osd_set_reserved()
238 sizeof(void *) * osd->osd_nslots); in osd_set_reserved()
239 free(osd->osd_slots, M_OSD); in osd_set_reserved()
242 newptr = realloc(osd->osd_slots, sizeof(void *) * slot, in osd_set_reserved()
250 if (osd->osd_nslots == 0) { in osd_set_reserved()
256 LIST_INSERT_HEAD(&osdm[type].osd_list, osd, osd_next); in osd_set_reserved()
261 osd->osd_slots = newptr; in osd_set_reserved()
262 osd->osd_nslots = slot; in osd_set_reserved()
267 osd->osd_slots[slot - 1] = value; in osd_set_reserved()
281 osd_get_unlocked(u_int type, struct osd *osd, u_int slot) in osd_get_unlocked() argument
287 if (slot > osd->osd_nslots) { in osd_get_unlocked()
291 value = atomic_load_ptr(&osd->osd_slots[slot - 1]); in osd_get_unlocked()
299 osd_get(u_int type, struct osd *osd, u_int slot) in osd_get() argument
308 value = osd_get_unlocked(type, osd, slot); in osd_get()
314 osd_del(u_int type, struct osd *osd, u_int slot) in osd_del() argument
319 do_osd_del(type, osd, slot, 0); in osd_del()
324 do_osd_del(u_int type, struct osd *osd, u_int slot, int list_locked) in do_osd_del() argument
334 if (slot > osd->osd_nslots) { in do_osd_del()
338 if (osd->osd_slots[slot - 1] != NULL) { in do_osd_del()
339 osdm[type].osd_destructors[slot - 1](osd->osd_slots[slot - 1]); in do_osd_del()
340 osd->osd_slots[slot - 1] = NULL; in do_osd_del()
342 for (i = osd->osd_nslots - 1; i >= 0; i--) { in do_osd_del()
343 if (osd->osd_slots[i] != NULL) { in do_osd_del()
354 LIST_REMOVE(osd, osd_next); in do_osd_del()
357 free(osd->osd_slots, M_OSD); in do_osd_del()
358 osd->osd_slots = NULL; in do_osd_del()
359 osd->osd_nslots = 0; in do_osd_del()
360 } else if (slot == osd->osd_nslots) { in do_osd_del()
362 osd->osd_slots = realloc(osd->osd_slots, in do_osd_del()
368 KASSERT(osd->osd_slots != NULL, ("realloc() failed")); in do_osd_del()
369 osd->osd_nslots = i + 1; in do_osd_del()
371 osd->osd_nslots, type); in do_osd_del()
404 osd_exit(u_int type, struct osd *osd) in osd_exit() argument
411 if (osd->osd_nslots == 0) { in osd_exit()
412 KASSERT(osd->osd_slots == NULL, ("Non-null osd_slots.")); in osd_exit()
418 for (i = 1; i <= osd->osd_nslots; i++) { in osd_exit()
420 do_osd_del(type, osd, i, 0); in osd_exit()
443 SYSINIT(osd, SI_SUB_LOCK, SI_ORDER_ANY, osd_init, NULL);