Lines Matching refs:geometry
86 static inline u32 map_to_page_number(struct index_geometry *geometry, u32 physical_page) in map_to_page_number() argument
88 return (physical_page - HEADER_PAGES_PER_VOLUME) % geometry->pages_per_chapter; in map_to_page_number()
91 static inline u32 map_to_chapter_number(struct index_geometry *geometry, u32 physical_page) in map_to_chapter_number() argument
93 return (physical_page - HEADER_PAGES_PER_VOLUME) / geometry->pages_per_chapter; in map_to_chapter_number()
96 static inline bool is_record_page(struct index_geometry *geometry, u32 physical_page) in is_record_page() argument
98 return map_to_page_number(geometry, physical_page) >= geometry->index_pages_per_chapter; in is_record_page()
101 static u32 map_to_physical_page(const struct index_geometry *geometry, u32 chapter, u32 page) in map_to_physical_page() argument
104 return HEADER_PAGES_PER_VOLUME + (geometry->pages_per_chapter * chapter) + page; in map_to_physical_page()
425 struct index_geometry *geometry = volume->geometry; in init_chapter_index_page() local
428 result = uds_initialize_chapter_index_page(chapter_index_page, geometry, in init_chapter_index_page()
442 ci_chapter = uds_map_to_physical_chapter(geometry, ci_virtual); in init_chapter_index_page()
462 u32 chapter = map_to_chapter_number(volume->geometry, physical_page); in initialize_index_page()
463 u32 index_page_number = map_to_page_number(volume->geometry, physical_page); in initialize_index_page()
471 const struct index_geometry *geometry, in search_record_page() argument
481 while (node < geometry->records_per_page) { in search_record_page()
513 if (is_record_page(volume->geometry, physical_page)) { in search_page()
515 &request->record_name, volume->geometry, in search_page()
522 volume->geometry, in search_page()
574 if (!is_record_page(volume->geometry, page_number)) { in process_entry()
711 if (!is_record_page(volume->geometry, physical_page)) { in read_page_locked()
810 u32 physical_page = map_to_physical_page(volume->geometry, chapter, page_number); in get_volume_page()
853 u32 physical_page = map_to_physical_page(volume->geometry, chapter, in search_cached_index_page()
870 result = uds_search_chapter_index_page(&page->index_page, volume->geometry, in search_cached_index_page()
885 struct index_geometry *geometry = volume->geometry; in uds_search_cached_record_page() local
894 result = VDO_ASSERT(record_page_number < geometry->record_pages_per_chapter, in uds_search_cached_record_page()
896 geometry->record_pages_per_chapter); in uds_search_cached_record_page()
900 page_number = geometry->index_pages_per_chapter + record_page_number; in uds_search_cached_record_page()
902 physical_page = map_to_physical_page(volume->geometry, chapter, page_number); in uds_search_cached_record_page()
919 &request->record_name, geometry, &request->old_metadata)) in uds_search_cached_record_page()
928 const struct index_geometry *geometry = volume->geometry; in uds_prefetch_volume_chapter() local
929 u32 physical_page = map_to_physical_page(geometry, chapter, 0); in uds_prefetch_volume_chapter()
931 dm_bufio_prefetch(volume->client, physical_page, geometry->pages_per_chapter); in uds_prefetch_volume_chapter()
940 const struct index_geometry *geometry = volume->geometry; in uds_read_chapter_index_from_volume() local
941 u32 physical_chapter = uds_map_to_physical_chapter(geometry, virtual_chapter); in uds_read_chapter_index_from_volume()
942 u32 physical_page = map_to_physical_page(geometry, physical_chapter, 0); in uds_read_chapter_index_from_volume()
944 dm_bufio_prefetch(volume->client, physical_page, geometry->index_pages_per_chapter); in uds_read_chapter_index_from_volume()
945 for (i = 0; i < geometry->index_pages_per_chapter; i++) { in uds_read_chapter_index_from_volume()
972 uds_map_to_physical_chapter(volume->geometry, request->virtual_chapter); in uds_search_volume_page_cache()
999 struct index_geometry *geometry = volume->geometry; in uds_search_volume_page_cache_for_rebuild() local
1001 u32 physical_chapter = uds_map_to_physical_chapter(geometry, virtual_chapter); in uds_search_volume_page_cache_for_rebuild()
1014 result = uds_search_chapter_index_page(&page->index_page, geometry, name, in uds_search_volume_page_cache_for_rebuild()
1022 page_number = geometry->index_pages_per_chapter + record_page_number; in uds_search_volume_page_cache_for_rebuild()
1028 geometry, NULL); in uds_search_volume_page_cache_for_rebuild()
1052 uds_map_to_physical_chapter(volume->geometry, virtual_chapter); in uds_forget_chapter()
1053 u32 first_page = map_to_physical_page(volume->geometry, physical_chapter, 0); in uds_forget_chapter()
1058 for (i = 0; i < volume->geometry->pages_per_chapter; i++) in uds_forget_chapter()
1073 map_to_physical_page(volume->geometry, physical_chapter, in donate_index_page_locked()
1100 struct index_geometry *geometry = volume->geometry; in write_index_pages() local
1102 u32 first_index_page = map_to_physical_page(geometry, physical_chapter_number, 0); in write_index_pages()
1107 index_page_number < geometry->index_pages_per_chapter; in write_index_pages()
1121 last_page = ((index_page_number + 1) == geometry->index_pages_per_chapter); in write_index_pages()
1187 u32 records_per_page = volume->geometry->records_per_page; in encode_record_page()
1211 struct index_geometry *geometry = volume->geometry; in write_record_pages() local
1214 u32 first_record_page = map_to_physical_page(geometry, physical_chapter_number, in write_record_pages()
1215 geometry->index_pages_per_chapter); in write_record_pages()
1218 record_page_number < geometry->record_pages_per_chapter; in write_record_pages()
1238 next_record += geometry->records_per_page; in write_record_pages()
1251 uds_map_to_physical_chapter(volume->geometry, in uds_write_chapter()
1272 const struct index_geometry *geometry = volume->geometry; in probe_chapter() local
1279 map_to_physical_page(geometry, chapter_number, 0), in probe_chapter()
1280 geometry->index_pages_per_chapter); in probe_chapter()
1282 for (i = 0; i < geometry->index_pages_per_chapter; i++) { in probe_chapter()
1313 result = uds_validate_chapter_index_page(page, geometry); in probe_chapter()
1318 if (chapter_number != uds_map_to_physical_chapter(geometry, vcn)) { in probe_chapter()
1320 (unsigned long long) vcn, geometry->chapters_per_volume); in probe_chapter()
1356 struct index_geometry *geometry = volume->geometry; in find_chapter_limits() local
1386 if (geometry->remapped_physical > 0) { in find_chapter_limits()
1389 probe_chapter(volume, geometry->remapped_physical, &remapped_vcn); in find_chapter_limits()
1390 if (remapped_vcn == geometry->remapped_virtual) in find_chapter_limits()
1391 moved_chapter = geometry->remapped_physical; in find_chapter_limits()
1422 if ((moved_chapter != BAD_CHAPTER) && (lowest == geometry->remapped_virtual + 1)) in find_chapter_limits()
1423 lowest = geometry->remapped_virtual; in find_chapter_limits()
1454 u32 chapter_limit = volume->geometry->chapters_per_volume; in uds_find_volume_chapter_boundaries()
1489 return uds_open_volume_bufio(layout, volume->geometry->bytes_per_page, in uds_replace_volume_storage()
1494 const struct index_geometry *geometry, in initialize_page_cache() argument
1501 cache->indexable_pages = geometry->pages_per_volume + 1; in initialize_page_cache()
1502 cache->cache_slots = chapters_in_cache * geometry->record_pages_per_chapter; in initialize_page_cache()
1547 struct index_geometry *geometry; in uds_make_volume() local
1557 result = uds_copy_index_geometry(config->geometry, &volume->geometry); in uds_make_volume()
1563 geometry = volume->geometry; in uds_make_volume()
1569 reserved_buffers = config->cache_chapters * geometry->record_pages_per_chapter; in uds_make_volume()
1571 if (uds_is_sparse_index_geometry(geometry)) in uds_make_volume()
1572 reserved_buffers += (config->cache_chapters * geometry->index_pages_per_chapter); in uds_make_volume()
1574 result = uds_open_volume_bufio(layout, geometry->bytes_per_page, in uds_make_volume()
1581 result = uds_make_radix_sorter(geometry->records_per_page, in uds_make_volume()
1588 result = vdo_allocate(geometry->records_per_page, in uds_make_volume()
1596 if (uds_is_sparse_index_geometry(geometry)) { in uds_make_volume()
1597 size_t page_size = sizeof(struct delta_index_page) + geometry->bytes_per_page; in uds_make_volume()
1599 result = uds_make_sparse_cache(geometry, config->cache_chapters, in uds_make_volume()
1608 page_size * geometry->index_pages_per_chapter * config->cache_chapters; in uds_make_volume()
1611 result = initialize_page_cache(&volume->page_cache, geometry, in uds_make_volume()
1619 result = uds_make_index_page_map(geometry, &volume->index_page_map); in uds_make_volume()
1692 vdo_free(volume->geometry); in uds_free_volume()