Initialize writer before executing zucchini ops am: ed3863c764
Original change: https://android-review.googlesource.com/c/platform/system/update_engine/+/1845833
Change-Id: I134038ad964f0144605d2f721addaaf903af6341
diff --git a/payload_consumer/install_operation_executor.cc b/payload_consumer/install_operation_executor.cc
index 47c6b5c..e95130b 100644
--- a/payload_consumer/install_operation_executor.cc
+++ b/payload_consumer/install_operation_executor.cc
@@ -234,6 +234,7 @@
const void* data,
size_t count) {
TEST_AND_RETURN_FALSE(source_fd != nullptr);
+ TEST_AND_RETURN_FALSE(writer->Init(operation.dst_extents(), block_size_));
switch (operation.type()) {
case InstallOperation::SOURCE_BSDIFF:
case InstallOperation::BSDIFF:
@@ -266,7 +267,6 @@
std::move(reader),
utils::BlocksInExtents(operation.src_extents()) * block_size_);
- TEST_AND_RETURN_FALSE(writer->Init(operation.dst_extents(), block_size_));
auto dst_file = std::make_unique<BsdiffExtentFile>(
std::move(writer),
utils::BlocksInExtents(operation.dst_extents()) * block_size_);
@@ -291,7 +291,6 @@
std::move(reader),
utils::BlocksInExtents(operation.src_extents()) * block_size_));
- TEST_AND_RETURN_FALSE(writer->Init(operation.dst_extents(), block_size_));
puffin::UniqueStreamPtr dst_stream(new PuffinExtentStream(
std::move(writer),
utils::BlocksInExtents(operation.dst_extents()) * block_size_));
diff --git a/payload_consumer/partition_writer.cc b/payload_consumer/partition_writer.cc
index 15996d4..4625a7a 100644
--- a/payload_consumer/partition_writer.cc
+++ b/payload_consumer/partition_writer.cc
@@ -195,7 +195,6 @@
size_t count) {
// Setup the ExtentWriter stack based on the operation type.
std::unique_ptr<ExtentWriter> writer = CreateBaseExtentWriter();
- writer->Init(operation.dst_extents(), block_size_);
return install_op_executor_.ExecuteReplaceOperation(
operation, std::move(writer), data, count);
}
@@ -222,7 +221,6 @@
PLOG(WARNING) << "BlkIoctl failed. Falling back to write 0s for remainder "
"of this operation.";
auto writer = CreateBaseExtentWriter();
- writer->Init(operation.dst_extents(), block_size_);
return install_op_executor_.ExecuteZeroOrDiscardOperation(
operation, std::move(writer));
}
@@ -253,7 +251,6 @@
}
auto writer = CreateBaseExtentWriter();
- writer->Init(optimized.dst_extents(), block_size_);
return install_op_executor_.ExecuteSourceCopyOperation(
optimized, std::move(writer), source_fd);
}
@@ -266,7 +263,6 @@
TEST_AND_RETURN_FALSE(source_fd != nullptr);
auto writer = CreateBaseExtentWriter();
- writer->Init(operation.dst_extents(), block_size_);
return install_op_executor_.ExecuteDiffOperation(
operation, std::move(writer), source_fd, data, count);
}