Lines Matching +full:pre +full:- +full:its
2 BTT - Block Translation Table
14 using stored energy in capacitors to complete in-flight block writes, or perhaps
15 in firmware. We don't have this luxury with persistent memory - if a write is in
22 device, and reserves a portion of the underlying storage for its metadata. At
23 the heart of it, is an indirection table that re-maps all the blocks on the
35 Each arena follows the same layout for its metadata, and all references in an
37 next arena). The following depicts the "On-disk" metadata layout::
40 Backing Store +-------> Arena
41 +---------------+ | +------------------+
43 | Arena 0 +---+ | 4K |
44 | 512G | +------------------+
46 +---------------+ | |
51 +---------------+ | |
57 +---------------+ +------------------+
62 +------------------+
66 +------------------+
69 +------------------+
77 --------------
86 31 - 30 Error and Zero flags - Used in the following way::
97 29 - 0 Mappings to internal 'postmap' blocks
105 ABA Arena Block Address - Block offset/number within an arena
124 ---------------
133 old_map The old postmap ABA - after 'this' write completes, this will be a
136 lba->postmap_aba mapping, but we log it here in case we have to
139 valid/newest. It cycles between 01->10->11->01 (binary) under normal
147 Each of the above fields is 32-bit, making one entry 32 bytes. Entries are also
155 -----------------------
164 all the on-disk and in-memory data structures for the duration of the IO. If
169 d. In-memory data structure: Read Tracking Table (RTT)
170 ------------------------------------------------------
177 the map for that external LBA to point to its new postmap ABA. At this point the
186 RTT for its presence. If the postmap free block is in the RTT, it waits till the
190 e. In-memory data structure: map locks
191 --------------------------------------
210 -------------------------------
217 - Read map[log_entry.lba].
218 - If log_entry.new matches the map entry, then log_entry.old is free.
219 - If log_entry.new does not match the map entry, then log_entry.new is free.
220 (This case can only be caused by power-fails/unsafe shutdowns)
223 g. Summarizing - Read and Write flows
224 -------------------------------------
228 1. Convert external LBA to arena number + pre-map ABA
230 3. Read map to get the entry for this pre-map ABA
231 4. Enter post-map ABA into RTT[lane]
235 8. Remove post-map ABA entry from RTT[lane]
240 1. Convert external LBA to Arena number + pre-map ABA
242 3. Use lane to index into in-memory free list and obtain a new block, next flog
246 6. Read map to get the existing post-map ABA entry for this pre-map ABA
248 8. Write new post-map ABA into map.
249 9. Write old post-map entry into the free list
261 - Info block checksum does not match (and recovering from the copy also fails)
262 - All internal available blocks are not uniquely and entirely addressed by the
264 - Rebuilding free list from the flog reveals missing/duplicate/impossible
266 - A map entry is out of bounds
281 ndctl create-namespace -f -e namespace0.0 -m sector -l 4k
283 See ndctl create-namespace --help for more options.