Lines Matching refs:slots
90 * be enough slots to hold all possible variants
106 * @slots: pointer to the structure holding buddy slots
120 struct z3fold_buddy_slots *slots;
213 struct z3fold_buddy_slots *slots;
215 slots = kmem_cache_zalloc(pool->c_handle,
218 if (slots) {
220 kmemleak_not_leak(slots);
221 slots->pool = (unsigned long)pool;
222 rwlock_init(&slots->lock);
225 return slots;
260 struct z3fold_buddy_slots *slots;
265 slots = handle_to_slots(handle);
269 read_lock(&slots->lock);
274 read_unlock(&slots->lock);
308 struct z3fold_buddy_slots *slots;
318 slots = handle_to_slots(handle);
319 write_lock(&slots->lock);
322 if (test_bit(HANDLES_NOFREE, &slots->pool)) {
323 write_unlock(&slots->lock);
327 if (zhdr->slots != slots)
332 if (slots->slot[i]) {
337 write_unlock(&slots->lock);
340 struct z3fold_pool *pool = slots_to_pool(slots);
342 if (zhdr->slots == slots)
343 zhdr->slots = NULL;
344 kmem_cache_free(pool->c_handle, slots);
401 struct z3fold_buddy_slots *slots;
412 slots = alloc_slots(pool, gfp);
413 if (!slots)
426 zhdr->slots = slots;
456 struct z3fold_buddy_slots *slots,
475 write_lock(&slots->lock);
476 slots->slot[idx] = h;
477 write_unlock(&slots->lock);
478 return (unsigned long)&slots->slot[idx];
483 return __encode_handle(zhdr, zhdr->slots, bud);
489 struct z3fold_buddy_slots *slots = handle_to_slots(handle);
492 read_lock(&slots->lock);
494 read_unlock(&slots->lock);
506 struct z3fold_buddy_slots *slots = handle_to_slots(handle);
509 read_lock(&slots->lock);
512 read_unlock(&slots->lock);
688 * No need to protect slots here -- all the slots are "local" and
691 if (zhdr->first_chunks && zhdr->slots->slot[first_idx]) {
694 old_handle = (unsigned long)&zhdr->slots->slot[first_idx];
696 } else if (zhdr->middle_chunks && zhdr->slots->slot[middle_idx]) {
699 old_handle = (unsigned long)&zhdr->slots->slot[middle_idx];
701 } else if (zhdr->last_chunks && zhdr->slots->slot[last_idx]) {
704 old_handle = (unsigned long)&zhdr->slots->slot[last_idx];
742 write_lock(&zhdr->slots->lock);
748 write_unlock(&zhdr->slots->lock);
970 if (zhdr && !zhdr->slots)
971 zhdr->slots = alloc_slots(pool,
1335 struct z3fold_buddy_slots slots __attribute__((aligned(SLOTS_ALIGN)));
1337 rwlock_init(&slots.lock);
1338 slots.pool = (unsigned long)pool | (1 << HANDLES_NOFREE);
1411 * use our local slots structure because z3fold_free
1412 * can zero out zhdr->slots and we can't do much
1418 memset(slots.slot, 0, sizeof(slots.slot));
1420 first_handle = __encode_handle(zhdr, &slots,
1423 middle_handle = __encode_handle(zhdr, &slots,
1426 last_handle = __encode_handle(zhdr, &slots,
1465 struct z3fold_buddy_slots *slots = zhdr->slots;
1469 kmem_cache_free(pool->c_handle, slots);