Lines Matching +full:needs +full:- +full:reset +full:- +full:on +full:- +full:resume
1 .. SPDX-License-Identifier: GPL-2.0-only
4 Design of dm-vdo
7 The dm-vdo (virtual data optimizer) target provides inline deduplication,
8 compression, zero-block elimination, and thin provisioning. A dm-vdo target
12 production environments ever since. It was made open-source in 2017 after
14 dm-vdo. For usage, see vdo.rst in the same directory as this file.
25 The design of dm-vdo is based on the idea that deduplication is a two-part
27 storing multiple copies of those duplicates. Therefore, dm-vdo has two main
34 -------------------
38 than most other targets. Furthermore, because vdo must operate on small
41 design attempts to be lock-free.
54 each zone has an implicit lock on the structures it manages for all its
59 reflected in the on-disk representation of each data structure. Therefore,
64 -----------------------
79 trade-off between the storage saved and the resources expended to achieve
83 Each block of data is hashed to produce a 16-byte block name. An index
85 that data on the underlying storage. However, it is not possible to
87 because it is too costly to update the index when a block is over-written
89 with the blocks, which is difficult to do efficiently in block-based
106 reading. The records are written to a series of record pages based on the
108 locality should be on a small number of pages, reducing the I/O required to
115 there is a record for this name, it will be on the indicated page. Closed
116 chapters are read-only structures and their contents are never altered in
149 memory-efficient structure called a delta index. Instead of storing the
159 to find the record it needs. The delta index reduces this lookup cost by
160 splitting its key space into many sub-lists, each starting at a fixed key
190 indexing, the memory requirements do not increase. The trade-off is
193 duplicate data, sparse indexing will detect 97-99% of the deduplication
197 -------------------------------
200 fields and data to track vdo-specific information. A struct vio maintains a
212 set of steps to handle the application data, after which it is reset and
221 --------------
243 memory and are written out, a block at a time in oldest-dirtied-order, only
249 zones" in round-robin fashion. If there are P physical zones, then slab n
260 available, the target can resume normal operation in a degraded mode. Read
283 0-811 belong to tree 0, logical addresses 812-1623 belong to tree 1, and so
284 on. The interleaving is maintained all the way up to the 60 root nodes.
289 need to pre-allocate space for the entire set of logical mappings and also
296 time, and is large enough to hold all the non-leaf pages of the entire
312 new block mappings in that block are stable on storage, and journal block
315 represents must be stable on disk before the other metadata structures may
326 requires data to be stable on storage, it must issue a flush or write the
337 The newly acquired data_vio is reset and the bio's data is copied into
346 2. The data_vio places a claim (the "logical lock") on the logical address
354 already operating on that logical address, it waits until the previous
361 This stage requires the data_vio to get an implicit lock on the
372 a. If any page-node in the tree has not yet been allocated, it must be
374 data_vio to lock the page-node that needs to be allocated. This
389 waiting on this allocation also proceed.
391 b. In the steady-state case, the block map tree nodes will already be
401 compression are not possible. This stage gets an implicit lock on a
409 struct pbn_lock (the "physical block lock") on the free block. The
411 claims that data_vios can have on physical blocks. The pbn_lock is
416 sub-component of the slab and are thus also covered by the implicit
420 needs to complete the write. The application bio can safely be
421 acknowledged at this point. The acknowledgment happens on a separate
436 tracked in step 2. This hashtable is covered by the implicit lock on
464 obtain a physical block lock on the indicated physical address, in
472 agent and any other data_vios waiting on it will record this
493 data_vios. All compression operations require the implicit lock on
515 The data_vio obtains an implicit lock on the physical zone and
541 on the block map cache structures, covered by the implicit logical zone
549 and flushed to ensure the transaction is stable on storage.
554 holding a lock on the affected physical slab, covered by its implicit
565 logical-to-physical mapping in the block map to point to the new
589 logical-to-physical mapping by traversing the block map tree as in step 3,
595 acknowledgment as in step 13, although it only needs to release the logical
602 a read-modify-write operation that reads the relevant 4K block, copies the
611 recovery journal. During the pre-resume phase of the next start, the
620 *Read-only Rebuild*
622 If a vdo encounters an unrecoverable error, it will enter read-only mode.
626 to the possibility that data has been lost. During a read-only rebuild, the
632 consistent with each other. This allows vdo to resume normal operation and