Lines Matching refs:q
140 static void queue_init(struct queue *q) in queue_init() argument
144 q->nr_elts = 0; in queue_init()
145 q->current_writeback_sentinels = false; in queue_init()
146 q->next_writeback = 0; in queue_init()
148 INIT_LIST_HEAD(q->qs + i); in queue_init()
149 INIT_LIST_HEAD(q->sentinels + i); in queue_init()
150 INIT_LIST_HEAD(q->sentinels + NR_QUEUE_LEVELS + i); in queue_init()
151 INIT_LIST_HEAD(q->sentinels + (2 * NR_QUEUE_LEVELS) + i); in queue_init()
155 static unsigned queue_size(struct queue *q) in queue_size() argument
157 return q->nr_elts; in queue_size()
160 static bool queue_empty(struct queue *q) in queue_empty() argument
162 return q->nr_elts == 0; in queue_empty()
168 static void queue_push(struct queue *q, unsigned level, struct list_head *elt) in queue_push() argument
170 q->nr_elts++; in queue_push()
171 list_add_tail(elt, q->qs + level); in queue_push()
174 static void queue_remove(struct queue *q, struct list_head *elt) in queue_remove() argument
176 q->nr_elts--; in queue_remove()
180 static bool is_sentinel(struct queue *q, struct list_head *h) in is_sentinel() argument
182 return (h >= q->sentinels) && (h < (q->sentinels + NR_SENTINELS)); in is_sentinel()
189 static struct list_head *queue_peek(struct queue *q) in queue_peek() argument
195 list_for_each(h, q->qs + level) in queue_peek()
196 if (!is_sentinel(q, h)) in queue_peek()
202 static struct list_head *queue_pop(struct queue *q) in queue_pop() argument
204 struct list_head *r = queue_peek(q); in queue_pop()
207 q->nr_elts--; in queue_pop()
217 static struct list_head *queue_pop_old(struct queue *q) in queue_pop_old() argument
223 list_for_each(h, q->qs + level) { in queue_pop_old()
224 if (is_sentinel(q, h)) in queue_pop_old()
227 q->nr_elts--; in queue_pop_old()
245 static struct list_head *writeback_sentinel(struct queue *q, unsigned level) in writeback_sentinel() argument
247 if (q->current_writeback_sentinels) in writeback_sentinel()
248 return q->sentinels + NR_QUEUE_LEVELS + level; in writeback_sentinel()
250 return q->sentinels + 2 * NR_QUEUE_LEVELS + level; in writeback_sentinel()
253 static void queue_update_writeback_sentinels(struct queue *q) in queue_update_writeback_sentinels() argument
258 if (time_after(jiffies, q->next_writeback)) { in queue_update_writeback_sentinels()
260 h = writeback_sentinel(q, i); in queue_update_writeback_sentinels()
262 list_add_tail(h, q->qs + i); in queue_update_writeback_sentinels()
265 q->next_writeback = jiffies + WRITEBACK_PERIOD; in queue_update_writeback_sentinels()
266 q->current_writeback_sentinels = !q->current_writeback_sentinels; in queue_update_writeback_sentinels()
275 static void queue_tick(struct queue *q) in queue_tick() argument
280 list_del(q->sentinels + i); in queue_tick()
281 list_add_tail(q->sentinels + i, q->qs + i); in queue_tick()
286 static void queue_iterate_tick(struct queue *q, iter_fn fn, void *context) in queue_iterate_tick() argument
292 list_for_each_prev(h, q->qs + i) { in queue_iterate_tick()
293 if (is_sentinel(q, h)) in queue_iterate_tick()
589 static struct entry *pop(struct mq_policy *mq, struct queue *q) in pop() argument
592 struct list_head *h = queue_pop(q); in pop()
603 static struct entry *pop_old(struct mq_policy *mq, struct queue *q) in pop_old() argument
606 struct list_head *h = queue_pop_old(q); in pop_old()
617 static struct entry *peek(struct queue *q) in peek() argument
619 struct list_head *h = queue_peek(q); in peek()
1120 static int mq_save_hints(struct mq_policy *mq, struct queue *q, in mq_save_hints() argument
1129 list_for_each(h, q->qs + level) { in mq_save_hints()
1130 if (is_sentinel(q, h)) in mq_save_hints()