Lines Matching +full:trim +full:- +full:data +full:- +full:valid

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
17 and new data. Applications may not be prepared to handle such a scenario.
23 the heart of it, is an indirection table that re-maps all the blocks on the
37 next arena). The following depicts the "On-disk" metadata layout::
40 Backing Store +-------> Arena
41 +---------------+ | +------------------+
43 | Arena 0 +---+ | 4K |
44 | 512G | +------------------+
46 +---------------+ | |
48 | Arena 1 | | Data Blocks |
51 +---------------+ | |
57 +---------------+ +------------------+
62 +------------------+
66 +------------------+
69 +------------------+
77 --------------
86 31 - 30 Error and Zero flags - Used in the following way::
94 1 1 Normal Block – has valid postmap
97 29 - 0 Mappings to internal 'postmap' blocks
105 ABA Arena Block Address - Block offset/number within an arena
108 Postmap ABA The block number in the "Data Blocks" area obtained after
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 ------------------------------------------------------
181 incorrect data. To prevent this, we introduce the RTT.
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]
232 5. If TRIM flag set in map, return zeroes, and end IO (go to step 8)
234 7. Read data from this block
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
245 5. Write data to this free block
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.