Lines Matching refs:vsd
4333 struct vsd_node *vsd; in vsd_destroy() local
4352 for (vsd = list_head(vsd_list); vsd != NULL; in vsd_destroy()
4353 vsd = list_next(vsd_list, vsd)) { in vsd_destroy()
4357 if (key > vsd->vs_nkeys) in vsd_destroy()
4362 if (vsd->vs_value[k] && vsd_destructor[k]) in vsd_destroy()
4363 (*vsd_destructor[k])(vsd->vs_value[k]); in vsd_destroy()
4367 vsd->vs_value[k] = NULL; in vsd_destroy()
4386 struct vsd_node *vsd; in vsd_get() local
4391 vsd = vp->v_vsd; in vsd_get()
4393 if (key && vsd != NULL && key <= vsd->vs_nkeys) in vsd_get()
4394 return (vsd->vs_value[key - 1]); in vsd_get()
4405 struct vsd_node *vsd; in vsd_set() local
4413 vsd = vp->v_vsd; in vsd_set()
4414 if (vsd == NULL) in vsd_set()
4415 vsd = vp->v_vsd = kmem_zalloc(sizeof (*vsd), KM_SLEEP); in vsd_set()
4424 if (key <= vsd->vs_nkeys) { in vsd_set()
4425 vsd->vs_value[key - 1] = value; in vsd_set()
4431 if (vsd->vs_nkeys == 0) { in vsd_set()
4436 list_insert_head(vsd_list, vsd); in vsd_set()
4443 vsd->vs_value = vsd_realloc(vsd->vs_value, in vsd_set()
4444 vsd->vs_nkeys * sizeof (void *), in vsd_set()
4446 vsd->vs_nkeys = key; in vsd_set()
4447 vsd->vs_value[key - 1] = value; in vsd_set()
4461 struct vsd_node *vsd = vp->v_vsd; in vsd_free() local
4463 if (vsd == NULL) in vsd_free()
4466 if (vsd->vs_nkeys == 0) { in vsd_free()
4467 kmem_free(vsd, sizeof (*vsd)); in vsd_free()
4478 for (i = 0; i < vsd->vs_nkeys; i++) { in vsd_free()
4479 if (vsd->vs_value[i] && vsd_destructor[i]) in vsd_free()
4480 (*vsd_destructor[i])(vsd->vs_value[i]); in vsd_free()
4481 vsd->vs_value[i] = NULL; in vsd_free()
4487 list_remove(vsd_list, vsd); in vsd_free()
4494 kmem_free(vsd->vs_value, vsd->vs_nkeys * sizeof (void *)); in vsd_free()
4495 kmem_free(vsd, sizeof (struct vsd_node)); in vsd_free()