136 unsigned int migrated = 0;
151 if (!list_empty(lru_list))
152 list_splice_init(lru_list, mru->
reap_list.prev);
173 for (grp = 0; grp < mru->
grp_count; grp++) {
177 if (!list_empty(lru_list))
199 unsigned int grp = 0;
240 INIT_LIST_HEAD(&tmp);
252 spin_unlock(&mru->lock);
260 mru->free_func(elem->
key, elem->
value);
263 kmem_zone_free(xfs_mru_elem_zone, elem);
266 spin_lock(&mru->lock);
281 unsigned long now,
next;
284 if (!mru || !mru->
lists)
287 spin_lock(&mru->
lock);
301 spin_unlock(&mru->
lock);
308 "xfs_mru_cache_elem");
309 if (!xfs_mru_elem_zone)
313 if (!xfs_mru_reap_wq)
314 goto out_destroy_mru_elem_zone;
318 out_destroy_mru_elem_zone:
319 kmem_zone_destroy(xfs_mru_elem_zone);
328 kmem_zone_destroy(xfs_mru_elem_zone);
340 unsigned int lifetime_ms,
341 unsigned int grp_count,
346 unsigned int grp_time;
351 if (!mrup || !grp_count || !lifetime_ms || !free_func)
369 for (grp = 0; grp < mru->
grp_count; grp++)
370 INIT_LIST_HEAD(mru->
lists + grp);
387 if (err && mru && mru->
lists)
405 if (!mru || !mru->
lists)
408 spin_lock(&mru->
lock);
410 spin_unlock(&mru->
lock);
412 spin_lock(&mru->
lock);
418 spin_unlock(&mru->
lock);
425 if (!mru || !mru->
lists)
428 xfs_mru_cache_flush(mru);
448 if (!mru || !mru->
lists)
456 kmem_zone_free(xfs_mru_elem_zone, elem);
464 spin_lock(&mru->
lock);
467 radix_tree_preload_end();
470 spin_unlock(&mru->
lock);
490 if (!mru || !mru->
lists)
493 spin_lock(&mru->
lock);
500 spin_unlock(&mru->
lock);
503 kmem_zone_free(xfs_mru_elem_zone, elem);
551 if (!mru || !mru->
lists)
554 spin_lock(&mru->
lock);
561 spin_unlock(&mru->
lock);
575 spin_unlock(&mru->
lock);