Lines Matching full:next
25 queue->stub.next = NULL; in vdo_make_funnel_queue()
41 * Barrier requirements: We need a read barrier between reading a "next" field pointer in get_oldest()
46 struct funnel_queue_entry *next = READ_ONCE(oldest->next); in get_oldest() local
53 if (next == NULL) in get_oldest()
59 oldest = next; in get_oldest()
61 next = READ_ONCE(oldest->next); in get_oldest()
68 if (next == NULL) { in get_oldest()
74 * assigned previous->next. The queue is really still empty. in get_oldest()
86 next = READ_ONCE(oldest->next); in get_oldest()
87 if (next == NULL) { in get_oldest()
90 * but who hasn't yet updated previous->next. Try again later. in get_oldest()
113 * consumer and oldest->next is never used by a producer thread after it is swung from NULL in vdo_funnel_queue_poll()
116 queue->oldest = READ_ONCE(oldest->next); in vdo_funnel_queue_poll()
120 * to the next call we'll properly see the dependent data. in vdo_funnel_queue_poll()
124 * If "oldest" is a very light-weight work item, we'll be looking for the next one very in vdo_funnel_queue_poll()
128 WRITE_ONCE(oldest->next, NULL); in vdo_funnel_queue_poll()
151 * Oldest is not the stub, so there's another entry, though if next is NULL we can't in vdo_is_funnel_queue_idle()
162 * Whether anything is retrievable depends on whether stub.next has been updated and become in vdo_is_funnel_queue_idle()