Lines Matching full:are
43 Most of a vdo's main data structures are designed to be easily divided into
75 there are diminishing returns to looking further back in time. Therefore,
98 Records are collected into groups called chapters. New records are added to
106 reading. The records are written to a series of record pages based on the
116 chapters are read-only structures and their contents are never altered in
123 in the index, while unreferenced block names are forgotten over time.
128 mapping is updated as records for the block name are copied or updated,
145 accessed pages are cached so that these page reads can be amortized across
148 The volume index and the chapter indexes are implemented using a
150 entire block name (the key) for each entry, the entries are sorted by name
154 the deltas are expressed using a Huffman code to take up even less space.
180 before configuring it.) There are two ways to do this.
202 vdo. The vio is kept separate from its related bio because there are many
230 collection of slabs. The slabs can be up to 32GB, and are divided into
232 These blocks are used either to store data, or to hold portions of the
237 Reference updates are written to the slab journal. Slab journal blocks are
238 written out either when they are full, or when the recovery journal
242 of updating individual reference blocks. The reference counters are kept in
243 memory and are written out, a block at a time in oldest-dirtied-order, only
245 are performed in the background as needed so they do not add latency to
248 Each slab is independent of every other. They are assigned to "physical
249 zones" in round-robin fashion. If there are P physical zones, then slab n
262 while the remainder of the dirty slabs are recovered.
269 the given logical address. The other 4 bits are used to indicate the nature
272 one represents an uncompressed block, and the other 14 states are used to
280 There are 60 radix trees which are assigned to "logical zones" in round
281 robin fashion. (If there are L logical zones, tree n will belong to zone n
282 mod L.) At each level, the trees are interleaved, so logical addresses
287 tree roots is allocated at format time. All other block map pages are
297 block map. This cache is populated as pages are needed.
303 Entries are either "data remappings" or "block map remappings." For a data
307 pages are never reclaimed or repurposed, so the old mapping is always 0.
310 that are required for a data_vio. The recovery journal issues a flush
312 new block mappings in that block are stable on storage, and journal block
313 writes are all issued with the FUA bit set to ensure the recovery journal
314 entries themselves are stable. The journal entry and the data write it
333 application bio. If there are no data_vios available, the incoming bio
381 zone to proceed. The details of allocation are the same as in
401 compression are not possible. This stage gets an implicit lock on a
405 block or decides there are none. If the first zone has no free space,
415 data_vio from considering it free. The reference counters are a
416 sub-component of the slab and are thus also covered by the implicit
434 the data_vios currently writing the same data. Active hash locks are
435 tracked in a hashtable similar to the way logical block locks are
474 to record their new mapping. If there are more data_vios in the hash
475 lock than there are references available, one of the remaining
484 are out of space, so they proceed to step 13 for cleanup.
510 are used or because it has no remaining space, it is written out
535 because there are usually too many block map leaf nodes to store
558 are in different zones, they are made concurrently, and if they are in
563 12. Once both of the reference count updates are done, the data_vio
592 nodes if they are missing. If the interior block map nodes do not exist
605 this operation are nearly identical to the normal read and write
612 recovery journal is read. The increment portion of valid entries are played
613 into the block map. Next, valid entries are played, in order as required,
617 the vdo comes back online, while the remainder of the slab journals are
628 reference counts are not rebuilt from the slab journals. Instead, the
629 reference counts are zeroed, the entire block map is traversed, and the
630 reference counts are updated from the block mappings. While this may lose
631 some data, it ensures that the block map and reference counts are