Lines Matching refs:nr_entries
48 static unsigned int pblk_rb_calculate_size(unsigned int nr_entries,
52 unsigned int max_sz = max(thr_sz, nr_entries);
81 unsigned int nr_entries;
83 nr_entries = pblk_rb_calculate_size(size, threshold);
84 entries = vzalloc(array_size(nr_entries, sizeof(struct pblk_rb_entry)));
88 power_size = get_count_order(nr_entries);
94 rb->nr_entries = (1 << power_size);
165 pblk_rl_init(&pblk->rl, rb->nr_entries, threshold);
197 return pblk_rb_ring_space(rb, mem, sync, rb->nr_entries);
201 unsigned int nr_entries)
203 return (p + nr_entries) & (rb->nr_entries - 1);
215 return pblk_rb_ring_count(mem, subm, rb->nr_entries);
223 return pblk_rb_ring_count(mem, sync, rb->nr_entries);
226 unsigned int pblk_rb_read_commit(struct pblk_rb *rb, unsigned int nr_entries)
232 smp_store_release(&rb->subm, pblk_rb_ptr_wrap(rb, subm, nr_entries));
279 static int pblk_rb_update_l2p(struct pblk_rb *rb, unsigned int nr_entries,
288 space = pblk_rb_ring_space(rb, mem, rb->l2p_update, rb->nr_entries);
289 if (space > nr_entries)
292 count = nr_entries - space;
315 to_update = pblk_rb_ring_count(sync, rb->l2p_update, rb->nr_entries);
322 * Write @nr_entries to ring buffer from @data buffer if there is enough space.
404 flush_point = (pos == 0) ? (rb->nr_entries - 1) : (pos - 1);
418 static int __pblk_rb_may_write(struct pblk_rb *rb, unsigned int nr_entries,
428 threshold = nr_entries + rb->back_thres;
430 if (pblk_rb_ring_space(rb, mem, sync, rb->nr_entries) < threshold)
433 if (pblk_rb_update_l2p(rb, nr_entries, mem, sync))
441 static int pblk_rb_may_write(struct pblk_rb *rb, unsigned int nr_entries,
444 if (!__pblk_rb_may_write(rb, nr_entries, pos))
448 smp_store_release(&rb->mem, pblk_rb_ptr_wrap(rb, *pos, nr_entries));
463 static int pblk_rb_may_write_flush(struct pblk_rb *rb, unsigned int nr_entries,
469 if (!__pblk_rb_may_write(rb, nr_entries, pos))
472 mem = pblk_rb_ptr_wrap(rb, *pos, nr_entries);
495 unsigned int nr_entries, unsigned int *pos)
501 io_ret = pblk_rl_user_may_insert(&pblk->rl, nr_entries);
507 if (!pblk_rb_may_write_flush(rb, nr_entries, pos, bio, &io_ret)) {
512 pblk_rl_user_in(&pblk->rl, nr_entries);
521 int pblk_rb_may_write_gc(struct pblk_rb *rb, unsigned int nr_entries,
527 if (!pblk_rl_gc_may_insert(&pblk->rl, nr_entries)) {
532 if (!pblk_rb_may_write(rb, nr_entries, pos)) {
537 pblk_rl_gc_in(&pblk->rl, nr_entries);
551 unsigned int pos, unsigned int nr_entries,
560 unsigned int pad = 0, to_read = nr_entries;
564 if (count < nr_entries) {
565 pad = nr_entries - count;
659 BUG_ON(pos >= rb->nr_entries);
713 unsigned int pblk_rb_sync_advance(struct pblk_rb *rb, unsigned int nr_entries)
725 rb->nr_entries);
726 if (secs_to_flush < nr_entries) {
732 sync = pblk_rb_ptr_wrap(rb, sync, nr_entries);
755 submitted = pblk_rb_ring_count(subm, sync, rb->nr_entries);
758 to_flush = pblk_rb_ring_count(flush_point, sync, rb->nr_entries) + 1;
783 for (i = 0; i < rb->nr_entries; i++) {
801 return (pos & (rb->nr_entries - 1));
806 return (pos >= rb->nr_entries);
824 rb->nr_entries,
842 rb->nr_entries,