Index: delta_diff_generator.cc |
diff --git a/delta_diff_generator.cc b/delta_diff_generator.cc |
index 23c2dd0335afbff549bf5cc8f569849717b13f72..0d19145a321152ad7c29a0681153a9ecbb3c298c 100644 |
--- a/delta_diff_generator.cc |
+++ b/delta_diff_generator.cc |
@@ -1221,6 +1221,7 @@ bool DeltaDiffGenerator::ReadFullUpdateFromDisk( |
op->set_type(DeltaArchiveManifest_InstallOperation_Type_REPLACE); |
} |
op->set_data_offset(*data_file_size); |
+ TEST_AND_RETURN_FALSE(utils::WriteAll(fd, &use_buf[0], use_buf.size())); |
*data_file_size += use_buf.size(); |
op->set_data_length(use_buf.size()); |
Extent* dst_extent = op->add_dst_extents(); |
@@ -1281,61 +1282,62 @@ bool DeltaDiffGenerator::GenerateDeltaUpdateFile( |
vector<DeltaArchiveManifest_InstallOperation> kernel_ops; |
vector<Vertex::Index> final_order; |
- if (!old_image.empty()) { |
- // Delta update |
+ { |
int fd; |
TEST_AND_RETURN_FALSE( |
utils::MakeTempFile(kTempFileTemplate, &temp_file_path, &fd)); |
TEST_AND_RETURN_FALSE(fd >= 0); |
ScopedFdCloser fd_closer(&fd); |
+ if (!old_image.empty()) { |
+ // Delta update |
- TEST_AND_RETURN_FALSE(DeltaReadFiles(&graph, |
- &blocks, |
- old_root, |
- new_root, |
- fd, |
- &data_file_size)); |
- LOG(INFO) << "done reading normal files"; |
- CheckGraph(graph); |
- |
- graph.resize(graph.size() + 1); |
- TEST_AND_RETURN_FALSE(ReadUnwrittenBlocks(blocks, |
+ TEST_AND_RETURN_FALSE(DeltaReadFiles(&graph, |
+ &blocks, |
+ old_root, |
+ new_root, |
+ fd, |
+ &data_file_size)); |
+ LOG(INFO) << "done reading normal files"; |
+ CheckGraph(graph); |
+ |
+ graph.resize(graph.size() + 1); |
+ TEST_AND_RETURN_FALSE(ReadUnwrittenBlocks(blocks, |
+ fd, |
+ &data_file_size, |
+ new_image, |
+ &graph.back())); |
+ |
+ // Read kernel partition |
+ TEST_AND_RETURN_FALSE(DeltaCompressKernelPartition(old_kernel_part, |
+ new_kernel_part, |
+ &kernel_ops, |
+ fd, |
+ &data_file_size)); |
+ |
+ LOG(INFO) << "done reading kernel"; |
+ CheckGraph(graph); |
+ |
+ LOG(INFO) << "Creating edges..."; |
+ CreateEdges(&graph, blocks); |
+ LOG(INFO) << "Done creating edges"; |
+ CheckGraph(graph); |
+ |
+ TEST_AND_RETURN_FALSE(ConvertGraphToDag(&graph, |
+ new_root, |
fd, |
&data_file_size, |
- new_image, |
- &graph.back())); |
- |
- // Read kernel partition |
- TEST_AND_RETURN_FALSE(DeltaCompressKernelPartition(old_kernel_part, |
- new_kernel_part, |
- &kernel_ops, |
- fd, |
- &data_file_size)); |
- |
- LOG(INFO) << "done reading kernel"; |
- CheckGraph(graph); |
- |
- LOG(INFO) << "Creating edges..."; |
- CreateEdges(&graph, blocks); |
- LOG(INFO) << "Done creating edges"; |
- CheckGraph(graph); |
- |
- TEST_AND_RETURN_FALSE(ConvertGraphToDag(&graph, |
- new_root, |
- fd, |
- &data_file_size, |
- &final_order)); |
- } else { |
- // Full update |
- int fd = 0; |
- TEST_AND_RETURN_FALSE(ReadFullUpdateFromDisk(&graph, |
- new_kernel_part, |
- new_image, |
- fd, |
- &data_file_size, |
- kFullUpdateChunkSize, |
- &kernel_ops, |
- &final_order)); |
+ &final_order)); |
+ } else { |
+ // Full update |
+ TEST_AND_RETURN_FALSE(ReadFullUpdateFromDisk(&graph, |
+ new_kernel_part, |
+ new_image, |
+ fd, |
+ &data_file_size, |
+ kFullUpdateChunkSize, |
+ &kernel_ops, |
+ &final_order)); |
+ } |
} |
// Convert to protobuf Manifest object |
@@ -1482,6 +1484,8 @@ bool DeltaDiffGenerator::GenerateDeltaUpdateFile( |
static_cast<ssize_t>(signature_blob.size())); |
} |
+ LOG(INFO) << "final dump"; |
+ graph_utils::DumpGraph(graph); |
ReportPayloadUsage(graph, manifest); |
LOG(INFO) << "All done. Successfully created delta file."; |