Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 903f8e07 authored by Daniel Zheng's avatar Daniel Zheng
Browse files

libsnapshot: v3 structural changes

Changes to structure of v3 header + operation needed for variable block
size. Seperating this CL from the variable block size one so we can get
v3 enabled on cuttlefish

the op count type changes are so that op count matches the type of
max_blocks. Max_blocks is used when op buffer size is not set -> we
default to upper bound of one operation per block in the partition.

Test: th
Bug: 307452468
Change-Id: I1a2581763a4fd6be5d5795f7e4781023e9984256
parent 96b0065e
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -101,7 +101,7 @@ struct ResumePoint {
    // monotonically increasing value used by update_engine
    uint64_t label;
    // Index of last CowOperation guaranteed to be resumable
    uint32_t op_index;
    uint64_t op_index;
} __attribute__((packed));

static constexpr uint8_t kNumResumePoints = 4;
@@ -115,10 +115,12 @@ struct CowHeaderV3 : public CowHeader {
    uint32_t resume_point_max;
    // Number of CowOperationV3 structs in the operation buffer, currently and total
    // region size.
    uint32_t op_count;
    uint32_t op_count_max;
    uint64_t op_count;
    uint64_t op_count_max;
    // Compression Algorithm
    uint32_t compression_algorithm;
    // Max compression size supported
    uint32_t max_compression_size;
} __attribute__((packed));

enum class CowOperationType : uint8_t {
@@ -203,7 +205,7 @@ static constexpr uint64_t kCowOpSourceInfoTypeMask = (1ULL << kCowOpSourceInfoTy
struct CowOperationV3 {
    // If this operation reads from the data section of the COW, this contains
    // the length.
    uint16_t data_length;
    uint32_t data_length;

    // The block of data in the new image that this operation modifies.
    uint32_t new_block;