Lines Matching +full:block +full:- +full:number

1 /* SPDX-License-Identifier: GPL-2.0-only */
10 #include <linux/dm-kcopyd.h>
15 #include "admin-state.h"
17 #include "data-vio.h"
19 #include "physical-zone.h"
20 #include "priority-table.h"
21 #include "recovery-journal.h"
25 #include "wait-queue.h"
28 * A slab_depot is responsible for managing all of the slabs and block allocators of a VDO. It has
33 * slabs assigned to that zone. The concurrency guarantees of this single-threaded model allow the
34 * code to omit more fine-grained locking for the various slab structures. Each physical zone
46 /* The number of vios in the vio pool is proportional to the throughput of the VDO. */
50 * The number of vios in the vio pool used for loading reference count data. A slab's
58 * Represents the possible status of a block.
61 RS_FREE, /* this block is free */
62 RS_SINGLE, /* this block is singly-referenced */
63 RS_SHARED, /* this block is shared */
64 RS_PROVISIONAL /* this block is provisionally allocated */
86 /* Whether a tail block commit is pending */
95 /* The oldest block in the journal on disk */
97 /* The oldest block in the journal which may not be reaped */
99 /* The end of the half-open interval of the active journal */
101 /* The next journal block to be committed */
103 /* The tail sequence number that is written in the slab summary */
105 /* The tail sequence number that was last summarized in slab summary */
108 /* The sequence number of the recovery journal lock */
112 * The number of entries which fit in a single block. Can't use the constant because unit
113 * tests change this number.
117 * The number of full entries which fit in a single block. Can't use the constant because
118 * unit tests change this number.
127 /* A list of the VIO pool entries for outstanding journal block writes */
131 * The current tail block header state. This will be packed into the block just before it
135 /* A pointer to a block-sized buffer holding the packed block data */
136 struct packed_slab_journal_block *block; member
138 /* The number of blocks in the on-disk journal */
140 /* The number of blocks at which to start pushing reference blocks */
142 /* The number of blocks at which all reference blocks should be writing */
144 /* The number of blocks at which to wait for reference blocks to write */
146 /* The number of blocks at which to scrub the slab before coming online */
152 /* The lock for the oldest unreaped block of the journal */
154 /* The locks for each on disk block */
164 /* This block waits on the ref_counts to tell it to write */
168 /* The number of references in this block that represent allocations */
170 /* The slab journal block on which this block must hold a lock */
172 /* The slab journal block which should be released when this block is committed */
176 /* Whether this block has been modified since it was written to disk */
178 /* Whether this block is currently writing */
182 /* The search_cursor represents the saved position of a free block search. */
184 /* The reference block containing the current search index */
185 struct reference_block *block; member
188 /* The position just past the last valid counter in the current block */
191 /* A pointer to the first reference block in the slab */
193 /* A pointer to the last reference block in the slab */
207 * 2^23 data blocks, but that will soon change to dedicate a small number of those blocks for
210 * A reference count is maintained for each physical block number. The vast majority of blocks have
224 /* The slab number of this slab */
226 /* The offset in the allocator partition of the first block in this slab */
228 /* The offset of the first block past the end of this slab */
248 /* The number of free blocks */
253 /* The saved block pointer and array indexes for the free block search */
258 /* The number of blocks which are currently reading or writing */
267 /* The number of reference count blocks */
269 /* reference count block array */
290 * The number of slabs that are unrecovered or being scrubbed. This field is modified by
297 /* Whether to only scrub high-priority slabs */
305 /* A sub-structure for applying actions in parallel to all an allocator's slabs. */
307 /* The number of slabs performing a slab action */
325 * The information in the summary for each slab includes the rough number of free blocks (which is
327 * space will be used on restart), and the location of the tail block of the slab's journal.
336 * number.
350 /* The block_allocator to which this block belongs */
352 /* The index of this block in its zone's summary */
354 /* Whether this block has a write outstanding */
360 /* The active slab_summary_entry array for this block */
362 /* The vio used to write this block */
364 /* The packed entries, one block long, backing the vio */
374 /* Number of blocks written */
384 /* The physical zone number of this allocator */
388 /* The number of slabs in this allocator */
390 /* The number of the last slab owned by this allocator */
417 /* Statistics for this block allocator */
433 /* The vio pool for reading and writing block allocator metadata */
447 /* The number of outstanding summary writes */
487 /* The number of slabs currently allocated and stored in 'slabs' */
492 /* The number of slabs currently allocated and stored in 'new_slabs' */
497 /* The last block before resize, for rollback */
499 /* The last block after resize, for resize */
506 /* The number of bits to shift to get a 7-bit fullness hint */
511 /* The block allocators for this depot */