Lines Matching full:roll
62 int rolling_buffer_init(struct rolling_buffer *roll, unsigned int rreq_id, in rolling_buffer_init() argument
71 roll->head = fq; in rolling_buffer_init()
72 roll->tail = fq; in rolling_buffer_init()
73 iov_iter_folio_queue(&roll->iter, direction, fq, 0, 0, 0); in rolling_buffer_init()
80 int rolling_buffer_make_space(struct rolling_buffer *roll) in rolling_buffer_make_space() argument
82 struct folio_queue *fq, *head = roll->head; in rolling_buffer_make_space()
92 roll->head = fq; in rolling_buffer_make_space()
97 if (roll->iter.folioq == head && in rolling_buffer_make_space()
98 roll->iter.folioq_slot == folioq_nr_slots(head)) { in rolling_buffer_make_space()
99 roll->iter.folioq = fq; in rolling_buffer_make_space()
100 roll->iter.folioq_slot = 0; in rolling_buffer_make_space()
116 ssize_t rolling_buffer_load_from_ra(struct rolling_buffer *roll, in rolling_buffer_load_from_ra() argument
125 if (rolling_buffer_make_space(roll) < 0) in rolling_buffer_load_from_ra()
128 fq = roll->head; in rolling_buffer_load_from_ra()
145 WRITE_ONCE(roll->iter.count, roll->iter.count + size); in rolling_buffer_load_from_ra()
148 smp_store_release(&roll->next_head_slot, to); in rolling_buffer_load_from_ra()
155 ssize_t rolling_buffer_append(struct rolling_buffer *roll, struct folio *folio, in rolling_buffer_append() argument
161 if (rolling_buffer_make_space(roll) < 0) in rolling_buffer_append()
164 slot = folioq_append(roll->head, folio); in rolling_buffer_append()
166 folioq_mark(roll->head, slot); in rolling_buffer_append()
168 folioq_mark2(roll->head, slot); in rolling_buffer_append()
170 WRITE_ONCE(roll->iter.count, roll->iter.count + size); in rolling_buffer_append()
173 smp_store_release(&roll->next_head_slot, slot); in rolling_buffer_append()
182 struct folio_queue *rolling_buffer_delete_spent(struct rolling_buffer *roll) in rolling_buffer_delete_spent() argument
184 struct folio_queue *spent = roll->tail, *next = READ_ONCE(spent->next); in rolling_buffer_delete_spent()
190 roll->tail = next; in rolling_buffer_delete_spent()
197 void rolling_buffer_clear(struct rolling_buffer *roll) in rolling_buffer_clear() argument
204 while ((p = roll->tail)) { in rolling_buffer_clear()
205 roll->tail = p->next; in rolling_buffer_clear()