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

Commit 563fbeac authored by Daniel Zheng's avatar Daniel Zheng Committed by Automerger Merge Worker
Browse files

Merge "Update API usage for source" into main am: a065e873 am: 79693491...

Merge "Update API usage for source" into main am: a065e873 am: 79693491 am: dcdab5ec am: aa1950c4

Original change: https://android-review.googlesource.com/c/platform/system/core/+/2779370



Change-Id: Ib1eef77413f1cf35a83f5abdec1c0b4ea9611605
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 31f8a58f aa1950c4
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -202,8 +202,8 @@ static constexpr uint8_t kCowReadAheadDone = 2;


static constexpr uint64_t kCowOpSourceInfoDataMask = (1ULL << 48) - 1;
static constexpr uint64_t kCowOpSourceInfoDataMask = (1ULL << 48) - 1;


static inline uint64_t GetCowOpSourceInfoData(const CowOperation* op) {
static inline uint64_t GetCowOpSourceInfoData(const CowOperation& op) {
    return op->source_info & kCowOpSourceInfoDataMask;
    return op.source_info & kCowOpSourceInfoDataMask;
}
}


struct CowFooter {
struct CowFooter {
+4 −4
Original line number Original line Diff line number Diff line
@@ -576,7 +576,7 @@ bool CowReader::GetRawBytes(const CowOperation* op, void* buffer, size_t len, si
        case kCowSequenceOp:
        case kCowSequenceOp:
        case kCowReplaceOp:
        case kCowReplaceOp:
        case kCowXorOp:
        case kCowXorOp:
            return GetRawBytes(GetCowOpSourceInfoData(op), buffer, len, read);
            return GetRawBytes(GetCowOpSourceInfoData(*op), buffer, len, read);
        default:
        default:
            LOG(ERROR) << "Cannot get raw bytes of non-data op: " << *op;
            LOG(ERROR) << "Cannot get raw bytes of non-data op: " << *op;
            return false;
            return false;
@@ -668,7 +668,7 @@ ssize_t CowReader::ReadData(const CowOperation* op, void* buffer, size_t buffer_
    if (op->type == kCowXorOp) {
    if (op->type == kCowXorOp) {
        offset = data_loc_->at(op->new_block);
        offset = data_loc_->at(op->new_block);
    } else {
    } else {
        offset = GetCowOpSourceInfoData(op);
        offset = GetCowOpSourceInfoData(*op);
    }
    }


    if (!decompressor) {
    if (!decompressor) {
@@ -684,10 +684,10 @@ ssize_t CowReader::ReadData(const CowOperation* op, void* buffer, size_t buffer_
bool CowReader::GetSourceOffset(const CowOperation* op, uint64_t* source_offset) {
bool CowReader::GetSourceOffset(const CowOperation* op, uint64_t* source_offset) {
    switch (op->type) {
    switch (op->type) {
        case kCowCopyOp:
        case kCowCopyOp:
            *source_offset = GetCowOpSourceInfoData(op) * header_.block_size;
            *source_offset = GetCowOpSourceInfoData(*op) * header_.block_size;
            return true;
            return true;
        case kCowXorOp:
        case kCowXorOp:
            *source_offset = GetCowOpSourceInfoData(op);
            *source_offset = GetCowOpSourceInfoData(*op);
            return true;
            return true;
        default:
        default:
            return false;
            return false;
+18 −18
Original line number Original line Diff line number Diff line
@@ -88,7 +88,7 @@ TEST_F(CowTest, CopyContiguous) {
        ASSERT_EQ(op->type, kCowCopyOp);
        ASSERT_EQ(op->type, kCowCopyOp);
        ASSERT_EQ(op->data_length, 0);
        ASSERT_EQ(op->data_length, 0);
        ASSERT_EQ(op->new_block, 10 + i);
        ASSERT_EQ(op->new_block, 10 + i);
        ASSERT_EQ(op->source_info, 1000 + i);
        ASSERT_EQ(GetCowOpSourceInfoData(*op), 1000 + i);
        iter->Next();
        iter->Next();
        i += 1;
        i += 1;
    }
    }
@@ -134,7 +134,7 @@ TEST_F(CowTest, ReadWrite) {
    ASSERT_EQ(op->type, kCowCopyOp);
    ASSERT_EQ(op->type, kCowCopyOp);
    ASSERT_EQ(op->data_length, 0);
    ASSERT_EQ(op->data_length, 0);
    ASSERT_EQ(op->new_block, 10);
    ASSERT_EQ(op->new_block, 10);
    ASSERT_EQ(op->source_info, 20);
    ASSERT_EQ(GetCowOpSourceInfoData(*op), 20);


    std::string sink(data.size(), '\0');
    std::string sink(data.size(), '\0');


@@ -156,7 +156,7 @@ TEST_F(CowTest, ReadWrite) {
    ASSERT_EQ(op->type, kCowZeroOp);
    ASSERT_EQ(op->type, kCowZeroOp);
    ASSERT_EQ(op->data_length, 0);
    ASSERT_EQ(op->data_length, 0);
    ASSERT_EQ(op->new_block, 51);
    ASSERT_EQ(op->new_block, 51);
    ASSERT_EQ(op->source_info, 0);
    ASSERT_EQ(GetCowOpSourceInfoData(*op), 0);


    iter->Next();
    iter->Next();
    ASSERT_FALSE(iter->AtEnd());
    ASSERT_FALSE(iter->AtEnd());
@@ -165,7 +165,7 @@ TEST_F(CowTest, ReadWrite) {
    ASSERT_EQ(op->type, kCowZeroOp);
    ASSERT_EQ(op->type, kCowZeroOp);
    ASSERT_EQ(op->data_length, 0);
    ASSERT_EQ(op->data_length, 0);
    ASSERT_EQ(op->new_block, 52);
    ASSERT_EQ(op->new_block, 52);
    ASSERT_EQ(op->source_info, 0);
    ASSERT_EQ(GetCowOpSourceInfoData(*op), 0);


    iter->Next();
    iter->Next();
    ASSERT_TRUE(iter->AtEnd());
    ASSERT_TRUE(iter->AtEnd());
@@ -209,7 +209,7 @@ TEST_F(CowTest, ReadWriteXor) {
    ASSERT_EQ(op->type, kCowCopyOp);
    ASSERT_EQ(op->type, kCowCopyOp);
    ASSERT_EQ(op->data_length, 0);
    ASSERT_EQ(op->data_length, 0);
    ASSERT_EQ(op->new_block, 10);
    ASSERT_EQ(op->new_block, 10);
    ASSERT_EQ(op->source_info, 20);
    ASSERT_EQ(GetCowOpSourceInfoData(*op), 20);


    std::string sink(data.size(), '\0');
    std::string sink(data.size(), '\0');


@@ -220,7 +220,7 @@ TEST_F(CowTest, ReadWriteXor) {
    ASSERT_EQ(op->type, kCowXorOp);
    ASSERT_EQ(op->type, kCowXorOp);
    ASSERT_EQ(op->data_length, 4096);
    ASSERT_EQ(op->data_length, 4096);
    ASSERT_EQ(op->new_block, 50);
    ASSERT_EQ(op->new_block, 50);
    ASSERT_EQ(GetCowOpSourceInfoData(op), 98314);  // 4096 * 24 + 10
    ASSERT_EQ(GetCowOpSourceInfoData(*op), 98314);  // 4096 * 24 + 10
    ASSERT_TRUE(ReadData(reader, op, sink.data(), sink.size()));
    ASSERT_TRUE(ReadData(reader, op, sink.data(), sink.size()));
    ASSERT_EQ(sink, data);
    ASSERT_EQ(sink, data);


@@ -232,7 +232,7 @@ TEST_F(CowTest, ReadWriteXor) {
    ASSERT_EQ(op->type, kCowZeroOp);
    ASSERT_EQ(op->type, kCowZeroOp);
    ASSERT_EQ(op->data_length, 0);
    ASSERT_EQ(op->data_length, 0);
    ASSERT_EQ(op->new_block, 51);
    ASSERT_EQ(op->new_block, 51);
    ASSERT_EQ(op->source_info, 0);
    ASSERT_EQ(GetCowOpSourceInfoData(*op), 0);


    iter->Next();
    iter->Next();
    ASSERT_FALSE(iter->AtEnd());
    ASSERT_FALSE(iter->AtEnd());
@@ -241,7 +241,7 @@ TEST_F(CowTest, ReadWriteXor) {
    ASSERT_EQ(op->type, kCowZeroOp);
    ASSERT_EQ(op->type, kCowZeroOp);
    ASSERT_EQ(op->data_length, 0);
    ASSERT_EQ(op->data_length, 0);
    ASSERT_EQ(op->new_block, 52);
    ASSERT_EQ(op->new_block, 52);
    ASSERT_EQ(op->source_info, 0);
    ASSERT_EQ(GetCowOpSourceInfoData(*op), 0);


    iter->Next();
    iter->Next();
    ASSERT_TRUE(iter->AtEnd());
    ASSERT_TRUE(iter->AtEnd());
@@ -329,7 +329,7 @@ TEST_P(CompressionTest, ThreadedBatchWrites) {
            total_blocks += 1;
            total_blocks += 1;
            std::string sink(xor_data.size(), '\0');
            std::string sink(xor_data.size(), '\0');
            ASSERT_EQ(op->new_block, 50);
            ASSERT_EQ(op->new_block, 50);
            ASSERT_EQ(GetCowOpSourceInfoData(op), 98314);  // 4096 * 24 + 10
            ASSERT_EQ(GetCowOpSourceInfoData(*op), 98314);  // 4096 * 24 + 10
            ASSERT_TRUE(ReadData(reader, op, sink.data(), sink.size()));
            ASSERT_TRUE(ReadData(reader, op, sink.data(), sink.size()));
            ASSERT_EQ(sink, xor_data);
            ASSERT_EQ(sink, xor_data);
        }
        }
@@ -664,7 +664,7 @@ TEST_F(CowTest, AppendLabelSmall) {
    ASSERT_FALSE(iter->AtEnd());
    ASSERT_FALSE(iter->AtEnd());
    op = iter->Get();
    op = iter->Get();
    ASSERT_EQ(op->type, kCowLabelOp);
    ASSERT_EQ(op->type, kCowLabelOp);
    ASSERT_EQ(op->source_info, 3);
    ASSERT_EQ(GetCowOpSourceInfoData(*op), 3);


    iter->Next();
    iter->Next();


@@ -717,7 +717,7 @@ TEST_F(CowTest, AppendLabelMissing) {
    ASSERT_FALSE(iter->AtEnd());
    ASSERT_FALSE(iter->AtEnd());
    auto op = iter->Get();
    auto op = iter->Get();
    ASSERT_EQ(op->type, kCowLabelOp);
    ASSERT_EQ(op->type, kCowLabelOp);
    ASSERT_EQ(op->source_info, 0);
    ASSERT_EQ(GetCowOpSourceInfoData(*op), 0);


    iter->Next();
    iter->Next();


@@ -775,7 +775,7 @@ TEST_F(CowTest, AppendExtendedCorrupted) {
    ASSERT_FALSE(iter->AtEnd());
    ASSERT_FALSE(iter->AtEnd());
    auto op = iter->Get();
    auto op = iter->Get();
    ASSERT_EQ(op->type, kCowLabelOp);
    ASSERT_EQ(op->type, kCowLabelOp);
    ASSERT_EQ(op->source_info, 5);
    ASSERT_EQ(GetCowOpSourceInfoData(*op), 5);


    iter->Next();
    iter->Next();
    ASSERT_TRUE(iter->AtEnd());
    ASSERT_TRUE(iter->AtEnd());
@@ -844,7 +844,7 @@ TEST_F(CowTest, AppendbyLabel) {
    ASSERT_FALSE(iter->AtEnd());
    ASSERT_FALSE(iter->AtEnd());
    op = iter->Get();
    op = iter->Get();
    ASSERT_EQ(op->type, kCowLabelOp);
    ASSERT_EQ(op->type, kCowLabelOp);
    ASSERT_EQ(op->source_info, 4);
    ASSERT_EQ(GetCowOpSourceInfoData(*op), 4);


    iter->Next();
    iter->Next();


@@ -862,7 +862,7 @@ TEST_F(CowTest, AppendbyLabel) {
    ASSERT_FALSE(iter->AtEnd());
    ASSERT_FALSE(iter->AtEnd());
    op = iter->Get();
    op = iter->Get();
    ASSERT_EQ(op->type, kCowLabelOp);
    ASSERT_EQ(op->type, kCowLabelOp);
    ASSERT_EQ(op->source_info, 5);
    ASSERT_EQ(GetCowOpSourceInfoData(*op), 5);


    iter->Next();
    iter->Next();


@@ -915,7 +915,7 @@ TEST_F(CowTest, ClusterTest) {
    ASSERT_FALSE(iter->AtEnd());
    ASSERT_FALSE(iter->AtEnd());
    op = iter->Get();
    op = iter->Get();
    ASSERT_EQ(op->type, kCowLabelOp);
    ASSERT_EQ(op->type, kCowLabelOp);
    ASSERT_EQ(op->source_info, 4);
    ASSERT_EQ(GetCowOpSourceInfoData(*op), 4);


    iter->Next();
    iter->Next();


@@ -940,7 +940,7 @@ TEST_F(CowTest, ClusterTest) {
    ASSERT_FALSE(iter->AtEnd());
    ASSERT_FALSE(iter->AtEnd());
    op = iter->Get();
    op = iter->Get();
    ASSERT_EQ(op->type, kCowLabelOp);
    ASSERT_EQ(op->type, kCowLabelOp);
    ASSERT_EQ(op->source_info, 5);
    ASSERT_EQ(GetCowOpSourceInfoData(*op), 5);


    iter->Next();
    iter->Next();


@@ -959,7 +959,7 @@ TEST_F(CowTest, ClusterTest) {
    ASSERT_FALSE(iter->AtEnd());
    ASSERT_FALSE(iter->AtEnd());
    op = iter->Get();
    op = iter->Get();
    ASSERT_EQ(op->type, kCowLabelOp);
    ASSERT_EQ(op->type, kCowLabelOp);
    ASSERT_EQ(op->source_info, 6);
    ASSERT_EQ(GetCowOpSourceInfoData(*op), 6);


    iter->Next();
    iter->Next();


@@ -1006,7 +1006,7 @@ TEST_F(CowTest, ClusterAppendTest) {
    ASSERT_FALSE(iter->AtEnd());
    ASSERT_FALSE(iter->AtEnd());
    auto op = iter->Get();
    auto op = iter->Get();
    ASSERT_EQ(op->type, kCowLabelOp);
    ASSERT_EQ(op->type, kCowLabelOp);
    ASSERT_EQ(op->source_info, 50);
    ASSERT_EQ(GetCowOpSourceInfoData(*op), 50);


    iter->Next();
    iter->Next();


+1 −1
Original line number Original line Diff line number Diff line
@@ -508,7 +508,7 @@ bool Snapuserd::ReadMetadata() {
            // the merge of operations are done based on the ops present
            // the merge of operations are done based on the ops present
            // in the file.
            // in the file.
            //===========================================================
            //===========================================================
            uint64_t block_source = GetCowOpSourceInfoData(cow_op);
            uint64_t block_source = GetCowOpSourceInfoData(*cow_op);
            if (prev_id.has_value()) {
            if (prev_id.has_value()) {
                if (dest_blocks.count(cow_op->new_block) || source_blocks.count(block_source)) {
                if (dest_blocks.count(cow_op->new_block) || source_blocks.count(block_source)) {
                    break;
                    break;
+3 −3
Original line number Original line Diff line number Diff line
@@ -172,7 +172,7 @@ ReadAheadThread::ReadAheadThread(const std::string& cow_device, const std::strin
}
}


void ReadAheadThread::CheckOverlap(const CowOperation* cow_op) {
void ReadAheadThread::CheckOverlap(const CowOperation* cow_op) {
    uint64_t source_block = GetCowOpSourceInfoData(cow_op);
    uint64_t source_block = GetCowOpSourceInfoData(*cow_op);
    if (dest_blocks_.count(cow_op->new_block) || source_blocks_.count(source_block)) {
    if (dest_blocks_.count(cow_op->new_block) || source_blocks_.count(source_block)) {
        overlap_ = true;
        overlap_ = true;
    }
    }
@@ -191,7 +191,7 @@ void ReadAheadThread::PrepareReadAhead(uint64_t* source_offset, int* pending_ops
        // Get the first block with offset
        // Get the first block with offset
        const CowOperation* cow_op = GetRAOpIter();
        const CowOperation* cow_op = GetRAOpIter();
        CHECK_NE(cow_op, nullptr);
        CHECK_NE(cow_op, nullptr);
        *source_offset = GetCowOpSourceInfoData(cow_op);
        *source_offset = GetCowOpSourceInfoData(*cow_op);
        if (cow_op->type == kCowCopyOp) {
        if (cow_op->type == kCowCopyOp) {
            *source_offset *= BLOCK_SZ;
            *source_offset *= BLOCK_SZ;
        }
        }
@@ -210,7 +210,7 @@ void ReadAheadThread::PrepareReadAhead(uint64_t* source_offset, int* pending_ops
        while (!RAIterDone() && num_ops) {
        while (!RAIterDone() && num_ops) {
            const CowOperation* op = GetRAOpIter();
            const CowOperation* op = GetRAOpIter();
            CHECK_NE(op, nullptr);
            CHECK_NE(op, nullptr);
            uint64_t next_offset = GetCowOpSourceInfoData(op);
            uint64_t next_offset = GetCowOpSourceInfoData(*op);
            if (op->type == kCowCopyOp) {
            if (op->type == kCowCopyOp) {
                next_offset *= BLOCK_SZ;
                next_offset *= BLOCK_SZ;
            }
            }