Lines Matching +full:keep +full:- +full:a +full:- +full:live
1 /* SPDX-License-Identifier: GPL-2.0 */
6 * In extent bkeys, the value is a list of pointers (bch_extent_ptr), optionally
15 * merely adjust ptr->offset to point to the start of the data that is currently
16 * live. The size field in struct bkey records the current (live) size of the
20 * Thus an extent that is not checksummed or compressed will consist only of a
25 * the data that is currently live: we have to read the entire extent that was
27 * currently live.
30 * to store the size of the originally allocated space - this is the
33 * pointer, we keep a second smaller offset field - "offset into the original
34 * extent of the currently live region".
38 * Each pointer may have its own bch_extent_crc32/64. When doing a replicated
40 * same checksum type and compression format - however, when copygc runs later (or
42 * going to rewrite all the pointers at once - one of the replicas may be in a
44 * in a bucket that has become heavily fragmented, and thus is being rewritten
47 * Thus it will only move a subset of the pointers (or in the case of
48 * tiering/cache promotion perhaps add a single pointer without dropping any
50 * write only the currently live portion (or copygc would not be able to reduce
51 * fragmentation!) - which necessitates a different bch_extent_crc format for
57 * Thus, a bch_extent consists of bch_extent_crc32s, bch_extent_crc64s, and
59 * type of a given entry with a scheme similar to utf8 (except we're encoding a
60 * type, not a size), encoding the type in the position of the first set bit:
62 * bch_extent_crc32 - 0b1
63 * bch_extent_ptr - 0b10
64 * bch_extent_crc64 - 0b100
72 * If there are no bch_extent_crcs preceding a bch_extent_ptr, then that pointer
141 #define CRC64_NONCE_MAX ((1U << 10) - 1)
165 #define CRC128_NONCE_MAX ((1U << 13) - 1)
168 * @reservation - pointer hasn't been written to, just reserved
263 /* Maximum size (in u64s) a single pointer could be: */