Lines Matching refs:sks

254 	spl_kmem_slab_t *sks;  in spl_slab_alloc()  local
262 sks = (spl_kmem_slab_t *)base; in spl_slab_alloc()
263 sks->sks_magic = SKS_MAGIC; in spl_slab_alloc()
264 sks->sks_objs = skc->skc_slab_objs; in spl_slab_alloc()
265 sks->sks_age = jiffies; in spl_slab_alloc()
266 sks->sks_cache = skc; in spl_slab_alloc()
267 INIT_LIST_HEAD(&sks->sks_list); in spl_slab_alloc()
268 INIT_LIST_HEAD(&sks->sks_free_list); in spl_slab_alloc()
269 sks->sks_ref = 0; in spl_slab_alloc()
272 for (int i = 0; i < sks->sks_objs; i++) { in spl_slab_alloc()
279 sko->sko_slab = sks; in spl_slab_alloc()
281 list_add_tail(&sko->sko_list, &sks->sks_free_list); in spl_slab_alloc()
284 return (sks); in spl_slab_alloc()
293 spl_slab_free(spl_kmem_slab_t *sks, in spl_slab_free() argument
298 ASSERT(sks->sks_magic == SKS_MAGIC); in spl_slab_free()
299 ASSERT(sks->sks_ref == 0); in spl_slab_free()
301 skc = sks->sks_cache; in spl_slab_free()
310 skc->skc_obj_total -= sks->sks_objs; in spl_slab_free()
312 list_del(&sks->sks_list); in spl_slab_free()
313 list_add(&sks->sks_list, sks_list); in spl_slab_free()
314 list_splice_init(&sks->sks_free_list, sko_list); in spl_slab_free()
323 spl_kmem_slab_t *sks = NULL, *m = NULL; in spl_slab_reclaim() local
335 list_for_each_entry_safe_reverse(sks, m, in spl_slab_reclaim()
338 if (sks->sks_ref > 0) in spl_slab_reclaim()
341 spl_slab_free(sks, &sks_list, &sko_list); in spl_slab_reclaim()
357 list_for_each_entry_safe(sks, m, &sks_list, sks_list) { in spl_slab_reclaim()
358 ASSERT(sks->sks_magic == SKS_MAGIC); in spl_slab_reclaim()
359 kv_free(skc, sks, skc->skc_slab_size); in spl_slab_reclaim()
888 spl_cache_obj(spl_kmem_cache_t *skc, spl_kmem_slab_t *sks) in spl_cache_obj() argument
893 ASSERT(sks->sks_magic == SKS_MAGIC); in spl_cache_obj()
895 sko = list_entry(sks->sks_free_list.next, spl_kmem_obj_t, sko_list); in spl_cache_obj()
902 sks->sks_age = jiffies; in spl_cache_obj()
903 sks->sks_ref++; in spl_cache_obj()
911 if (sks->sks_ref == 1) { in spl_cache_obj()
929 spl_kmem_slab_t *sks; in __spl_cache_grow() local
932 sks = spl_slab_alloc(skc, flags); in __spl_cache_grow()
936 if (sks) { in __spl_cache_grow()
938 skc->skc_obj_total += sks->sks_objs; in __spl_cache_grow()
939 list_add_tail(&sks->sks_list, &skc->skc_partial_list); in __spl_cache_grow()
947 return (sks == NULL ? -ENOMEM : 0); in __spl_cache_grow()
1087 spl_kmem_slab_t *sks; in spl_cache_refill() local
1129 sks = list_entry((&skc->skc_partial_list)->next, in spl_cache_refill()
1131 ASSERT(sks->sks_magic == SKS_MAGIC); in spl_cache_refill()
1132 ASSERT(sks->sks_ref < sks->sks_objs); in spl_cache_refill()
1133 ASSERT(!list_empty(&sks->sks_free_list)); in spl_cache_refill()
1139 while (sks->sks_ref < sks->sks_objs && refill-- > 0 && in spl_cache_refill()
1144 spl_cache_obj(skc, sks); in spl_cache_refill()
1148 if (sks->sks_ref == sks->sks_objs) { in spl_cache_refill()
1149 list_del(&sks->sks_list); in spl_cache_refill()
1150 list_add(&sks->sks_list, &skc->skc_complete_list); in spl_cache_refill()
1165 spl_kmem_slab_t *sks = NULL; in spl_cache_shrink() local
1172 sks = sko->sko_slab; in spl_cache_shrink()
1173 ASSERT(sks->sks_magic == SKS_MAGIC); in spl_cache_shrink()
1174 ASSERT(sks->sks_cache == skc); in spl_cache_shrink()
1175 list_add(&sko->sko_list, &sks->sks_free_list); in spl_cache_shrink()
1177 sks->sks_age = jiffies; in spl_cache_shrink()
1178 sks->sks_ref--; in spl_cache_shrink()
1186 if (sks->sks_ref == (sks->sks_objs - 1)) { in spl_cache_shrink()
1187 list_del(&sks->sks_list); in spl_cache_shrink()
1188 list_add(&sks->sks_list, &skc->skc_partial_list); in spl_cache_shrink()
1195 if (sks->sks_ref == 0) { in spl_cache_shrink()
1196 list_del(&sks->sks_list); in spl_cache_shrink()
1197 list_add_tail(&sks->sks_list, &skc->skc_partial_list); in spl_cache_shrink()