Lines Matching defs:nlru
46 list_lru_from_memcg_idx(struct list_lru_node *nlru, int idx)
53 memcg_lrus = rcu_dereference_check(nlru->memcg_lrus,
54 lockdep_is_held(&nlru->lock));
57 return &nlru->lru;
61 list_lru_from_kmem(struct list_lru_node *nlru, void *ptr,
64 struct list_lru_one *l = &nlru->lru;
67 if (!nlru->memcg_lrus)
74 l = list_lru_from_memcg_idx(nlru, memcg_cache_id(memcg));
100 list_lru_from_memcg_idx(struct list_lru_node *nlru, int idx)
102 return &nlru->lru;
106 list_lru_from_kmem(struct list_lru_node *nlru, void *ptr,
111 return &nlru->lru;
118 struct list_lru_node *nlru = &lru->node[nid];
122 spin_lock(&nlru->lock);
124 l = list_lru_from_kmem(nlru, item, &memcg);
130 nlru->nr_items++;
131 spin_unlock(&nlru->lock);
134 spin_unlock(&nlru->lock);
142 struct list_lru_node *nlru = &lru->node[nid];
145 spin_lock(&nlru->lock);
147 l = list_lru_from_kmem(nlru, item, NULL);
150 nlru->nr_items--;
151 spin_unlock(&nlru->lock);
154 spin_unlock(&nlru->lock);
177 struct list_lru_node *nlru = &lru->node[nid];
182 l = list_lru_from_memcg_idx(nlru, memcg_cache_id(memcg));
192 struct list_lru_node *nlru;
194 nlru = &lru->node[nid];
195 return nlru->nr_items;
200 __list_lru_walk_one(struct list_lru_node *nlru, int memcg_idx,
209 l = list_lru_from_memcg_idx(nlru, memcg_idx);
222 ret = isolate(item, l, &nlru->lock, cb_arg);
225 assert_spin_locked(&nlru->lock);
229 nlru->nr_items--;
248 assert_spin_locked(&nlru->lock);
262 struct list_lru_node *nlru = &lru->node[nid];
265 spin_lock(&nlru->lock);
266 ret = __list_lru_walk_one(nlru, memcg_cache_id(memcg), isolate, cb_arg,
268 spin_unlock(&nlru->lock);
278 struct list_lru_node *nlru = &lru->node[nid];
281 spin_lock_irq(&nlru->lock);
282 ret = __list_lru_walk_one(nlru, memcg_cache_id(memcg), isolate, cb_arg,
284 spin_unlock_irq(&nlru->lock);
299 struct list_lru_node *nlru = &lru->node[nid];
301 spin_lock(&nlru->lock);
302 isolated += __list_lru_walk_one(nlru, memcg_idx,
305 spin_unlock(&nlru->lock);
352 static int memcg_init_list_lru_node(struct list_lru_node *nlru)
366 RCU_INIT_POINTER(nlru->memcg_lrus, memcg_lrus);
371 static void memcg_destroy_list_lru_node(struct list_lru_node *nlru)
378 memcg_lrus = rcu_dereference_protected(nlru->memcg_lrus, true);
391 static int memcg_update_list_lru_node(struct list_lru_node *nlru,
398 old = rcu_dereference_protected(nlru->memcg_lrus,
412 * The locking below allows readers that hold nlru->lock avoid taking
418 spin_lock_irq(&nlru->lock);
419 rcu_assign_pointer(nlru->memcg_lrus, new);
420 spin_unlock_irq(&nlru->lock);
426 static void memcg_cancel_update_list_lru_node(struct list_lru_node *nlru,
431 memcg_lrus = rcu_dereference_protected(nlru->memcg_lrus,
534 struct list_lru_node *nlru = &lru->node[nid];
542 spin_lock_irq(&nlru->lock);
544 src = list_lru_from_memcg_idx(nlru, src_idx);
545 dst = list_lru_from_memcg_idx(nlru, dst_idx);
555 spin_unlock_irq(&nlru->lock);