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

Commit 81027407 authored by Akilesh Kailash's avatar Akilesh Kailash
Browse files

Create_cow: Hash of target blocks should not be stored.



Target block hash was in-correctly getting added to map thereby
overriding the source-hash.

Bug: 299011882
Test: Flash Pixel 6 Pro from A->B and from B->A
Change-Id: Ib3887c29cd6b8f2abd50e932273a5cfc2a096bd5
Signed-off-by: default avatarAkilesh Kailash <akailash@google.com>
parent d091aa44
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -240,9 +240,11 @@ bool CreateSnapshot::ReadBlocks(off_t offset, const int skip_blocks, const uint6
            SHA256(bufptr, BLOCK_SZ, checksum);
            std::string hash = ToHexString(checksum, sizeof(checksum));

            if (create_snapshot_patch_ && !WriteSnapshot(bufptr, blkindex, hash)) {
            if (create_snapshot_patch_) {
                if (!WriteSnapshot(bufptr, blkindex, hash)) {
                    LOG(ERROR) << "WriteSnapshot failed for block: " << blkindex;
                    return false;
                }
            } else {
                std::lock_guard<std::mutex> lock(source_block_hash_lock_);
                {
@@ -256,7 +258,7 @@ bool CreateSnapshot::ReadBlocks(off_t offset, const int skip_blocks, const uint6
            num_blocks -= 1;
        }

        file_offset += (skip_blocks * kBlockSizeToRead);
        file_offset += (skip_blocks * to_read);
        if (file_offset >= dev_sz) {
            break;
        }