Lines Matching defs:geometry

6 #include "geometry.h"
33 * configurations: 0.25GB, 0.5GB and 0.75GB. The default geometry for each is 1024 index records
39 * For a larger index with a memory footprint that is a multiple of 1 GB, the geometry is 1024
62 struct index_geometry *geometry;
64 result = vdo_allocate(1, struct index_geometry, "geometry", &geometry);
68 geometry->bytes_per_page = bytes_per_page;
69 geometry->record_pages_per_chapter = record_pages_per_chapter;
70 geometry->chapters_per_volume = chapters_per_volume;
71 geometry->sparse_chapters_per_volume = sparse_chapters_per_volume;
72 geometry->dense_chapters_per_volume = chapters_per_volume - sparse_chapters_per_volume;
73 geometry->remapped_virtual = remapped_virtual;
74 geometry->remapped_physical = remapped_physical;
76 geometry->records_per_page = bytes_per_page / BYTES_PER_RECORD;
77 geometry->records_per_chapter = geometry->records_per_page * record_pages_per_chapter;
78 geometry->records_per_volume = (u64) geometry->records_per_chapter * chapters_per_volume;
80 geometry->chapter_mean_delta = 1 << DEFAULT_CHAPTER_MEAN_DELTA_BITS;
81 geometry->chapter_payload_bits = bits_per(record_pages_per_chapter - 1);
87 geometry->chapter_delta_list_bits =
88 bits_per((geometry->records_per_chapter - 1) | 077) - 6;
89 geometry->delta_lists_per_chapter = 1 << geometry->chapter_delta_list_bits;
91 geometry->chapter_address_bits =
93 geometry->chapter_delta_list_bits +
94 bits_per(geometry->records_per_chapter - 1));
95 geometry->index_pages_per_chapter =
96 uds_get_delta_index_page_count(geometry->records_per_chapter,
97 geometry->delta_lists_per_chapter,
98 geometry->chapter_mean_delta,
99 geometry->chapter_payload_bits,
102 geometry->pages_per_chapter = geometry->index_pages_per_chapter + record_pages_per_chapter;
103 geometry->pages_per_volume = geometry->pages_per_chapter * chapters_per_volume;
104 geometry->bytes_per_volume =
105 bytes_per_page * (geometry->pages_per_volume + HEADER_PAGES_PER_VOLUME);
107 *geometry_ptr = geometry;
122 void uds_free_index_geometry(struct index_geometry *geometry)
124 vdo_free(geometry);
127 u32 __must_check uds_map_to_physical_chapter(const struct index_geometry *geometry,
132 if (!uds_is_reduced_index_geometry(geometry))
133 return virtual_chapter % geometry->chapters_per_volume;
135 if (likely(virtual_chapter > geometry->remapped_virtual)) {
136 delta = virtual_chapter - geometry->remapped_virtual;
137 if (likely(delta > geometry->remapped_physical))
138 return delta % geometry->chapters_per_volume;
143 if (virtual_chapter == geometry->remapped_virtual)
144 return geometry->remapped_physical;
146 delta = geometry->remapped_virtual - virtual_chapter;
147 if (delta < geometry->chapters_per_volume)
148 return geometry->chapters_per_volume - delta;
155 bool uds_has_sparse_chapters(const struct index_geometry *geometry,
158 return uds_is_sparse_index_geometry(geometry) &&
160 geometry->dense_chapters_per_volume);
163 bool uds_is_chapter_sparse(const struct index_geometry *geometry,
167 return uds_has_sparse_chapters(geometry, oldest_virtual_chapter,
169 ((virtual_chapter_number + geometry->dense_chapters_per_volume) <=
174 u32 uds_chapters_to_expire(const struct index_geometry *geometry, u64 newest_chapter)
177 if (newest_chapter < geometry->chapters_per_volume)
181 if (geometry->remapped_physical > 0) {
182 u64 oldest_chapter = newest_chapter - geometry->chapters_per_volume;
188 if (oldest_chapter == geometry->remapped_virtual)
195 if (oldest_chapter == (geometry->remapped_virtual + geometry->remapped_physical))