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

Side by Side Diff: delta_performer.cc

Issue 4042004: AU: When applying delta locally, get source checksums (Closed) Base URL: http://git.chromium.org/git/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
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_performer.h" 5 #include "update_engine/delta_performer.h"
6 6
7 #include <endian.h> 7 #include <endian.h>
8 #include <errno.h> 8 #include <errno.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 if (close(fd_) == -1) { 158 if (close(fd_) == -1) {
159 err = errno; 159 err = errno;
160 PLOG(ERROR) << "Unable to close rootfs fd:"; 160 PLOG(ERROR) << "Unable to close rootfs fd:";
161 } 161 }
162 LOG_IF(ERROR, !hash_calculator_.Finalize()) << "Unable to finalize the hash."; 162 LOG_IF(ERROR, !hash_calculator_.Finalize()) << "Unable to finalize the hash.";
163 fd_ = -2; // Set so that isn't not valid AND calls to Open() will fail. 163 fd_ = -2; // Set so that isn't not valid AND calls to Open() will fail.
164 path_ = ""; 164 path_ = "";
165 return -err; 165 return -err;
166 } 166 }
167 167
168 namespace {
169 void LogPartitionInfoHash(const PartitionInfo& info, const string& tag) {
170 string sha256;
171 if (OmahaHashCalculator::Base64Encode(info.hash().data(),
172 info.hash().size(),
173 &sha256)) {
174 LOG(INFO) << "PartitionInfo " << tag << " sha256:" << sha256
175 << " length:" << tag.size();
176 } else {
177 LOG(ERROR) << "Base64Encode failed for tag: " << tag;
178 }
179 }
180 void LogPartitionInfo(const DeltaArchiveManifest& manifest) {
petkov 2010/10/22 20:15:16 add blank line before
adlr 2010/10/22 20:40:18 Done.
181 if (manifest.has_old_kernel_info())
182 LogPartitionInfoHash(manifest.old_kernel_info(), "old_kernel_info");
183 if (manifest.has_old_rootfs_info())
184 LogPartitionInfoHash(manifest.old_rootfs_info(), "old_rootfs_info");
185 if (manifest.has_new_kernel_info())
186 LogPartitionInfoHash(manifest.new_kernel_info(), "new_kernel_info");
187 if (manifest.has_new_rootfs_info())
188 LogPartitionInfoHash(manifest.new_rootfs_info(), "new_rootfs_info");
189 }
190 } // namespace {}
191
168 // Wrapper around write. Returns bytes written on success or 192 // Wrapper around write. Returns bytes written on success or
169 // -errno on error. 193 // -errno on error.
170 // This function performs as many actions as it can, given the amount of 194 // This function performs as many actions as it can, given the amount of
171 // data received thus far. 195 // data received thus far.
172 ssize_t DeltaPerformer::Write(const void* bytes, size_t count) { 196 ssize_t DeltaPerformer::Write(const void* bytes, size_t count) {
173 const char* c_bytes = reinterpret_cast<const char*>(bytes); 197 const char* c_bytes = reinterpret_cast<const char*>(bytes);
174 buffer_.insert(buffer_.end(), c_bytes, c_bytes + count); 198 buffer_.insert(buffer_.end(), c_bytes, c_bytes + count);
175 199
176 if (!manifest_valid_) { 200 if (!manifest_valid_) {
177 // See if we have enough bytes for the manifest yet 201 // See if we have enough bytes for the manifest yet
(...skipping 22 matching lines...) Expand all
200 } 224 }
201 // Remove protobuf and header info from buffer_, so buffer_ contains 225 // Remove protobuf and header info from buffer_, so buffer_ contains
202 // just data blobs 226 // just data blobs
203 manifest_metadata_size_ = strlen(kDeltaMagic) + kDeltaVersionLength + 227 manifest_metadata_size_ = strlen(kDeltaMagic) + kDeltaVersionLength +
204 kDeltaProtobufLengthLength + protobuf_length; 228 kDeltaProtobufLengthLength + protobuf_length;
205 DiscardBufferHeadBytes(manifest_metadata_size_); 229 DiscardBufferHeadBytes(manifest_metadata_size_);
206 LOG_IF(WARNING, !prefs_->SetInt64(kPrefsManifestMetadataSize, 230 LOG_IF(WARNING, !prefs_->SetInt64(kPrefsManifestMetadataSize,
207 manifest_metadata_size_)) 231 manifest_metadata_size_))
208 << "Unable to save the manifest metadata size."; 232 << "Unable to save the manifest metadata size.";
209 manifest_valid_ = true; 233 manifest_valid_ = true;
234 LogPartitionInfo(manifest_);
210 if (!PrimeUpdateState()) { 235 if (!PrimeUpdateState()) {
211 LOG(ERROR) << "Unable to prime the update state."; 236 LOG(ERROR) << "Unable to prime the update state.";
212 return -EINVAL; 237 return -EINVAL;
213 } 238 }
214 } 239 }
215 ssize_t total_operations = manifest_.install_operations_size() + 240 ssize_t total_operations = manifest_.install_operations_size() +
216 manifest_.kernel_install_operations_size(); 241 manifest_.kernel_install_operations_size();
217 while (next_operation_num_ < total_operations) { 242 while (next_operation_num_ < total_operations) {
218 const DeltaArchiveManifest_InstallOperation &op = 243 const DeltaArchiveManifest_InstallOperation &op =
219 next_operation_num_ < manifest_.install_operations_size() ? 244 next_operation_num_ < manifest_.install_operations_size() ?
(...skipping 496 matching lines...) Expand 10 before | Expand all | Expand 10 after
716 if (prefs_->GetInt64(kPrefsResumedUpdateFailures, &resumed_update_failures)) { 741 if (prefs_->GetInt64(kPrefsResumedUpdateFailures, &resumed_update_failures)) {
717 resumed_update_failures++; 742 resumed_update_failures++;
718 } else { 743 } else {
719 resumed_update_failures = 1; 744 resumed_update_failures = 1;
720 } 745 }
721 prefs_->SetInt64(kPrefsResumedUpdateFailures, resumed_update_failures); 746 prefs_->SetInt64(kPrefsResumedUpdateFailures, resumed_update_failures);
722 return true; 747 return true;
723 } 748 }
724 749
725 } // namespace chromeos_update_engine 750 } // namespace chromeos_update_engine
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698