Lines Matching refs:cache

234 static int __must_check make_search_list(struct sparse_cache *cache,  in make_search_list()  argument
243 (cache->capacity * sizeof(struct cached_chapter_index *))); in make_search_list()
248 list->capacity = cache->capacity; in make_search_list()
252 list->entries[i] = &cache->chapters[i]; in make_search_list()
263 struct sparse_cache *cache; in uds_make_sparse_cache() local
267 result = vdo_allocate_cache_aligned(bytes, "sparse cache", &cache); in uds_make_sparse_cache()
271 cache->geometry = geometry; in uds_make_sparse_cache()
272 cache->capacity = capacity; in uds_make_sparse_cache()
273 cache->zone_count = zone_count; in uds_make_sparse_cache()
279 cache->skip_threshold = (SKIP_SEARCH_THRESHOLD / zone_count); in uds_make_sparse_cache()
281 initialize_threads_barrier(&cache->begin_update_barrier, zone_count); in uds_make_sparse_cache()
282 initialize_threads_barrier(&cache->end_update_barrier, zone_count); in uds_make_sparse_cache()
285 result = initialize_cached_chapter_index(&cache->chapters[i], geometry); in uds_make_sparse_cache()
291 result = make_search_list(cache, &cache->search_lists[i]); in uds_make_sparse_cache()
298 "scratch entries", &cache->scratch_entries); in uds_make_sparse_cache()
302 *cache_ptr = cache; in uds_make_sparse_cache()
305 uds_free_sparse_cache(cache); in uds_make_sparse_cache()
323 static void score_search_miss(struct sparse_cache *cache, in score_search_miss() argument
327 if (chapter->counters.consecutive_misses > cache->skip_threshold) in score_search_miss()
345 void uds_free_sparse_cache(struct sparse_cache *cache) in uds_free_sparse_cache() argument
349 if (cache == NULL) in uds_free_sparse_cache()
352 vdo_free(cache->scratch_entries); in uds_free_sparse_cache()
354 for (i = 0; i < cache->zone_count; i++) in uds_free_sparse_cache()
355 vdo_free(cache->search_lists[i]); in uds_free_sparse_cache()
357 for (i = 0; i < cache->capacity; i++) { in uds_free_sparse_cache()
358 release_cached_chapter_index(&cache->chapters[i]); in uds_free_sparse_cache()
359 vdo_free(cache->chapters[i].index_pages); in uds_free_sparse_cache()
360 vdo_free(cache->chapters[i].page_buffers); in uds_free_sparse_cache()
363 vdo_free(cache); in uds_free_sparse_cache()
389 bool uds_sparse_cache_contains(struct sparse_cache *cache, u64 virtual_chapter, in uds_sparse_cache_contains() argument
403 search_list = cache->search_lists[zone_number]; in uds_sparse_cache_contains()
425 struct sparse_cache *cache, u64 oldest_virtual_chapter) in purge_search_list() argument
437 skipped = &cache->scratch_entries[0]; in purge_search_list()
438 dead = &cache->scratch_entries[search_list->capacity]; in purge_search_list()
496 struct sparse_cache *cache = index->volume->sparse_cache; in uds_update_sparse_cache() local
498 if (uds_sparse_cache_contains(cache, virtual_chapter, zone->id)) in uds_update_sparse_cache()
505 enter_threads_barrier(&cache->begin_update_barrier); in uds_update_sparse_cache()
516 struct search_list *list = cache->search_lists[ZONE_ZERO]; in uds_update_sparse_cache()
518 purge_search_list(list, cache, zone->oldest_virtual_chapter); in uds_update_sparse_cache()
526 for (z = 1; z < cache->zone_count; z++) in uds_update_sparse_cache()
527 copy_search_list(list, cache->search_lists[z]); in uds_update_sparse_cache()
533 enter_threads_barrier(&cache->end_update_barrier); in uds_update_sparse_cache()
537 void uds_invalidate_sparse_cache(struct sparse_cache *cache) in uds_invalidate_sparse_cache() argument
541 for (i = 0; i < cache->capacity; i++) in uds_invalidate_sparse_cache()
542 release_cached_chapter_index(&cache->chapters[i]); in uds_invalidate_sparse_cache()
580 struct sparse_cache *cache = volume->sparse_cache; in uds_search_sparse_cache() local
588 search_list = cache->search_lists[zone->id]; in uds_search_sparse_cache()
596 result = search_cached_chapter_index(chapter, cache->geometry, in uds_search_sparse_cache()
617 score_search_miss(cache, chapter); in uds_search_sparse_cache()