Merge changes Ibe310d58,If88dceda into main
* changes:
Move Cow Header child writer
Add v3 Cow Header
diff --git a/fs_mgr/libsnapshot/include/libsnapshot/cow_format.h b/fs_mgr/libsnapshot/include/libsnapshot/cow_format.h
index bfa8f6b..b271dad 100644
--- a/fs_mgr/libsnapshot/include/libsnapshot/cow_format.h
+++ b/fs_mgr/libsnapshot/include/libsnapshot/cow_format.h
@@ -91,6 +91,18 @@
// Scratch space used during merge
uint32_t buffer_size;
+
+} __attribute__((packed));
+
+struct CowHeaderV3 : public CowHeader {
+ // Location of sequence buffer in COW.
+ uint64_t sequence_buffer_offset;
+ // Size, in bytes, of the CowResumePoint buffer.
+ uint32_t resume_buffer_size;
+ // Size, in bytes, of the CowOperation buffer.
+ uint32_t op_buffer_size;
+ // Compression Algorithm
+ uint32_t compression_algorithm;
} __attribute__((packed));
// This structure is the same size of a normal Operation, but is repurposed for the footer.
diff --git a/fs_mgr/libsnapshot/libsnapshot_cow/writer_base.h b/fs_mgr/libsnapshot/libsnapshot_cow/writer_base.h
index cdf6222..709b248 100644
--- a/fs_mgr/libsnapshot/libsnapshot_cow/writer_base.h
+++ b/fs_mgr/libsnapshot/libsnapshot_cow/writer_base.h
@@ -63,7 +63,6 @@
bool ValidateNewBlock(uint64_t new_block);
CowOptions options_;
- CowHeader header_{};
android::base::unique_fd fd_;
bool is_dev_null_ = false;
diff --git a/fs_mgr/libsnapshot/libsnapshot_cow/writer_v2.cpp b/fs_mgr/libsnapshot/libsnapshot_cow/writer_v2.cpp
index e51dbde..a6f449f 100644
--- a/fs_mgr/libsnapshot/libsnapshot_cow/writer_v2.cpp
+++ b/fs_mgr/libsnapshot/libsnapshot_cow/writer_v2.cpp
@@ -243,7 +243,7 @@
// Headers are not complete, but this ensures the file is at the right
// position.
- if (!android::base::WriteFully(fd_, &header_, sizeof(header_))) {
+ if (!android::base::WriteFully(fd_, &header_, sizeof(CowHeader))) {
PLOG(ERROR) << "write failed";
return false;
}
@@ -262,7 +262,7 @@
return false;
}
- if (lseek(fd_.get(), sizeof(header_) + header_.buffer_size, SEEK_SET) < 0) {
+ if (lseek(fd_.get(), sizeof(CowHeader) + header_.buffer_size, SEEK_SET) < 0) {
PLOG(ERROR) << "lseek failed";
return false;
}
diff --git a/fs_mgr/libsnapshot/libsnapshot_cow/writer_v2.h b/fs_mgr/libsnapshot/libsnapshot_cow/writer_v2.h
index ce97b01..24170eb 100644
--- a/fs_mgr/libsnapshot/libsnapshot_cow/writer_v2.h
+++ b/fs_mgr/libsnapshot/libsnapshot_cow/writer_v2.h
@@ -63,6 +63,7 @@
private:
CowFooter footer_{};
+ CowHeader header_{};
CowCompression compression_;
// in the case that we are using one thread for compression, we can store and re-use the same
// compressor