Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(523)

Side by Side Diff: delta_diff_generator.cc

Issue 3633003: AU: fix report generation to handle invalid nodes and final rootfs op (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/update_engine.git
Patch Set: Created 10 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "update_engine/delta_diff_generator.h" 5 #include "update_engine/delta_diff_generator.h"
6 6
7 #include <errno.h> 7 #include <errno.h>
8 #include <fcntl.h> 8 #include <fcntl.h>
9 #include <inttypes.h> 9 #include <inttypes.h>
10 #include <sys/stat.h> 10 #include <sys/stat.h>
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 // In the future we might consider intelligent diffing between this data 253 // In the future we might consider intelligent diffing between this data
254 // and data in the previous image, but for now we just bzip2 compress it 254 // and data in the previous image, but for now we just bzip2 compress it
255 // and include it in the update. 255 // and include it in the update.
256 // Creates a new node in the graph to write these blocks and writes the 256 // Creates a new node in the graph to write these blocks and writes the
257 // appropriate blob to blobs_fd. Reads and updates blobs_length; 257 // appropriate blob to blobs_fd. Reads and updates blobs_length;
258 bool ReadUnwrittenBlocks(const vector<Block>& blocks, 258 bool ReadUnwrittenBlocks(const vector<Block>& blocks,
259 int blobs_fd, 259 int blobs_fd,
260 off_t* blobs_length, 260 off_t* blobs_length,
261 const string& image_path, 261 const string& image_path,
262 Vertex* vertex) { 262 Vertex* vertex) {
263 vertex->file_name = "<rootfs-non-file-data>";
264
263 DeltaArchiveManifest_InstallOperation* out_op = &vertex->op; 265 DeltaArchiveManifest_InstallOperation* out_op = &vertex->op;
264 int image_fd = open(image_path.c_str(), O_RDONLY, 000); 266 int image_fd = open(image_path.c_str(), O_RDONLY, 000);
265 TEST_AND_RETURN_FALSE_ERRNO(image_fd >= 0); 267 TEST_AND_RETURN_FALSE_ERRNO(image_fd >= 0);
266 ScopedFdCloser image_fd_closer(&image_fd); 268 ScopedFdCloser image_fd_closer(&image_fd);
267 269
268 string temp_file_path; 270 string temp_file_path;
269 TEST_AND_RETURN_FALSE(utils::MakeTempFile("/tmp/CrAU_temp_data.XXXXXX", 271 TEST_AND_RETURN_FALSE(utils::MakeTempFile("/tmp/CrAU_temp_data.XXXXXX",
270 &temp_file_path, 272 &temp_file_path,
271 NULL)); 273 NULL));
272 274
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
461 "BSDIFF" 463 "BSDIFF"
462 }; 464 };
463 465
464 void ReportPayloadUsage(const Graph& graph, 466 void ReportPayloadUsage(const Graph& graph,
465 const DeltaArchiveManifest& manifest) { 467 const DeltaArchiveManifest& manifest) {
466 vector<DeltaObject> objects; 468 vector<DeltaObject> objects;
467 off_t total_size = 0; 469 off_t total_size = 0;
468 470
469 // Graph nodes with information about file names. 471 // Graph nodes with information about file names.
470 for (Vertex::Index node = 0; node < graph.size(); node++) { 472 for (Vertex::Index node = 0; node < graph.size(); node++) {
471 objects.push_back(DeltaObject(graph[node].file_name, 473 const Vertex& vertex = graph[node];
472 graph[node].op.type(), 474 if (!vertex.valid) {
473 graph[node].op.data_length())); 475 continue;
474 total_size += graph[node].op.data_length(); 476 }
477 objects.push_back(DeltaObject(vertex.file_name,
478 vertex.op.type(),
479 vertex.op.data_length()));
480 total_size += vertex.op.data_length();
475 } 481 }
476 482
477 // Final rootfs operation writing non-file-data.
478 const DeltaArchiveManifest_InstallOperation& final_op =
479 manifest.install_operations(manifest.install_operations_size() - 1);
480 objects.push_back(DeltaObject("<rootfs-final-operation>",
481 final_op.type(),
482 final_op.data_length()));
483 total_size += final_op.data_length();
484
485 // Kernel install operations. 483 // Kernel install operations.
486 for (int i = 0; i < manifest.kernel_install_operations_size(); ++i) { 484 for (int i = 0; i < manifest.kernel_install_operations_size(); ++i) {
487 const DeltaArchiveManifest_InstallOperation& op = 485 const DeltaArchiveManifest_InstallOperation& op =
488 manifest.kernel_install_operations(i); 486 manifest.kernel_install_operations(i);
489 objects.push_back(DeltaObject(StringPrintf("<kernel-operation-%d>", i), 487 objects.push_back(DeltaObject(StringPrintf("<kernel-operation-%d>", i),
490 op.type(), 488 op.type(),
491 op.data_length())); 489 op.data_length()));
492 total_size += op.data_length(); 490 total_size += op.data_length();
493 } 491 }
494 492
(...skipping 991 matching lines...) Expand 10 before | Expand all | Expand 10 after
1486 1484
1487 LOG(INFO) << "All done. Successfully created delta file."; 1485 LOG(INFO) << "All done. Successfully created delta file.";
1488 return true; 1486 return true;
1489 } 1487 }
1490 1488
1491 const char* const kBsdiffPath = "/usr/bin/bsdiff"; 1489 const char* const kBsdiffPath = "/usr/bin/bsdiff";
1492 const char* const kBspatchPath = "/usr/bin/bspatch"; 1490 const char* const kBspatchPath = "/usr/bin/bspatch";
1493 const char* const kDeltaMagic = "CrAU"; 1491 const char* const kDeltaMagic = "CrAU";
1494 1492
1495 }; // namespace chromeos_update_engine 1493 }; // namespace chromeos_update_engine
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698