Lines Matching refs:lru

86 	struct lru *lru;  member
92 struct lru { struct
101 static void lru_init(struct lru *lru) in lru_init() argument
103 lru->cursor = NULL; in lru_init()
104 lru->count = 0; in lru_init()
105 INIT_LIST_HEAD(&lru->iterators); in lru_init()
108 static void lru_destroy(struct lru *lru) in lru_destroy() argument
110 WARN_ON_ONCE(lru->cursor); in lru_destroy()
111 WARN_ON_ONCE(!list_empty(&lru->iterators)); in lru_destroy()
117 static void lru_insert(struct lru *lru, struct lru_entry *le) in lru_insert() argument
125 if (lru->cursor) { in lru_insert()
126 list_add_tail(&le->list, lru->cursor); in lru_insert()
129 lru->cursor = &le->list; in lru_insert()
131 lru->count++; in lru_insert()
147 static void lru_iter_begin(struct lru *lru, struct lru_iter *it) in lru_iter_begin() argument
149 it->lru = lru; in lru_iter_begin()
150 it->stop = lru->cursor ? to_le(lru->cursor->prev) : NULL; in lru_iter_begin()
151 it->e = lru->cursor ? to_le(lru->cursor) : NULL; in lru_iter_begin()
152 list_add(&it->list, &lru->iterators); in lru_iter_begin()
196 static void lru_iter_invalidate(struct lru *lru, struct lru_entry *e) in lru_iter_invalidate() argument
200 list_for_each_entry(it, &lru->iterators, list) { in lru_iter_invalidate()
222 static void lru_remove(struct lru *lru, struct lru_entry *le) in lru_remove() argument
224 lru_iter_invalidate(lru, le); in lru_remove()
225 if (lru->count == 1) { in lru_remove()
226 lru->cursor = NULL; in lru_remove()
228 if (lru->cursor == &le->list) in lru_remove()
229 lru->cursor = lru->cursor->next; in lru_remove()
232 lru->count--; in lru_remove()
257 static struct lru_entry *lru_evict(struct lru *lru, le_predicate pred, void *context, bool no_sleep) in lru_evict() argument
260 struct list_head *h = lru->cursor; in lru_evict()
270 while (tested < lru->count) { in lru_evict()
283 lru->cursor = le->list.next; in lru_evict()
284 lru_remove(lru, le); in lru_evict()
291 lru->cursor = le->list.next; in lru_evict()
347 struct lru_entry lru; member
394 struct lru lru[LIST_SIZE]; member
525 return container_of(le, struct dm_buffer, lru); in le_to_buffer()
550 lru_init(&bc->lru[LIST_CLEAN]); in cache_init()
551 lru_init(&bc->lru[LIST_DIRTY]); in cache_init()
561 lru_destroy(&bc->lru[LIST_CLEAN]); in cache_destroy()
562 lru_destroy(&bc->lru[LIST_DIRTY]); in cache_destroy()
572 return bc->lru[list_mode].count; in cache_count()
619 lru_reference(&b->lru); in cache_get()
685 le = lru_evict(&bc->lru[list_mode], __evict_pred, &w, bc->no_sleep); in __cache_evict()
718 lru_remove(&bc->lru[b->list_mode], &b->lru); in cache_mark()
720 lru_insert(&bc->lru[b->list_mode], &b->lru); in cache_mark()
739 le = lru_evict(&bc->lru[old_mode], __evict_pred, &w, bc->no_sleep); in __cache_mark_many()
745 lru_insert(&bc->lru[b->list_mode], &b->lru); in __cache_mark_many()
780 struct lru *lru = &bc->lru[list_mode]; in __cache_iterate() local
783 if (!lru->cursor) in __cache_iterate()
786 first = le = to_le(lru->cursor); in __cache_iterate()
859 lru_insert(&bc->lru[b->list_mode], &b->lru); in cache_insert()
884 lru_remove(&bc->lru[b->list_mode], &b->lru); in cache_remove()
940 lru_remove(&bc->lru[b->list_mode], &b->lru); in __remove_range()
1633 list_del(&b->lru.list); in __alloc_buffer_wait_no_callback()
1671 list_add(&b->lru.list, &c->reserved_buffers); in __free_buffer_wake()
2140 lru_iter_begin(&c->cache.lru[LIST_DIRTY], &it); in dm_bufio_write_dirty_buffers()
2588 list_del(&b->lru.list); in dm_bufio_client_create()
2630 list_del(&b->lru.list); in dm_bufio_client_destroy()