diff options
author | Kelvin Zhang <zhangkelvin@google.com> | 2021-05-13 21:26:03 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-05-13 21:26:03 +0000 |
commit | 3c9703d23d0d9898ccbb894f3f9e22fbac5cbfef (patch) | |
tree | 73ba6c6d6d6a1721f428e0d5c0a0ddfc52d3276e | |
parent | 022e20e284b0ce5f0ad6e683bb77325cdf16e0dd (diff) | |
parent | 5ac9a7d20d21f7a55173a8027430503315bb5796 (diff) | |
download | update_engine-3c9703d23d0d9898ccbb894f3f9e22fbac5cbfef.tar.gz |
Refactor get partition path and IsVABC into separate function am: e012f65a1b am: 5ac9a7d20d
Original change: https://android-review.googlesource.com/c/platform/system/update_engine/+/1701825
Change-Id: I84994a0b514153386b1e47e5da957b18bff9ee73
-rw-r--r-- | payload_consumer/filesystem_verifier_action.cc | 52 | ||||
-rw-r--r-- | payload_consumer/filesystem_verifier_action.h | 6 |
2 files changed, 43 insertions, 15 deletions
diff --git a/payload_consumer/filesystem_verifier_action.cc b/payload_consumer/filesystem_verifier_action.cc index b14cbc8d..8d496a61 100644 --- a/payload_consumer/filesystem_verifier_action.cc +++ b/payload_consumer/filesystem_verifier_action.cc @@ -201,25 +201,13 @@ void FilesystemVerifierAction::StartPartitionHashing() { } const InstallPlan::Partition& partition = install_plan_.partitions[partition_index_]; - string part_path; - switch (verifier_step_) { - case VerifierStep::kVerifySourceHash: - part_path = partition.source_path; - partition_size_ = partition.source_size; - break; - case VerifierStep::kVerifyTargetHash: - part_path = partition.target_path; - partition_size_ = partition.target_size; - break; - } + const auto& part_path = GetPartitionPath(); + partition_size_ = GetPartitionSize(); LOG(INFO) << "Hashing partition " << partition_index_ << " (" << partition.name << ") on device " << part_path; auto success = false; - if (dynamic_control_->UpdateUsesSnapshotCompression() && - verifier_step_ == VerifierStep::kVerifyTargetHash && - dynamic_control_->IsDynamicPartition(partition.name, - install_plan_.target_slot)) { + if (IsVABC(partition)) { success = InitializeFdVABC(); } else { if (part_path.empty()) { @@ -268,6 +256,40 @@ void FilesystemVerifierAction::StartPartitionHashing() { ScheduleFileSystemRead(); } +bool FilesystemVerifierAction::IsVABC( + const InstallPlan::Partition& partition) const { + return dynamic_control_->UpdateUsesSnapshotCompression() && + verifier_step_ == VerifierStep::kVerifyTargetHash && + dynamic_control_->IsDynamicPartition(partition.name, + install_plan_.target_slot); +} + +const std::string& FilesystemVerifierAction::GetPartitionPath() const { + const InstallPlan::Partition& partition = + install_plan_.partitions[partition_index_]; + switch (verifier_step_) { + case VerifierStep::kVerifySourceHash: + return partition.source_path; + case VerifierStep::kVerifyTargetHash: + if (IsVABC(partition)) { + return partition.readonly_target_path; + } else { + return partition.target_path; + } + } +} + +size_t FilesystemVerifierAction::GetPartitionSize() const { + const InstallPlan::Partition& partition = + install_plan_.partitions[partition_index_]; + switch (verifier_step_) { + case VerifierStep::kVerifySourceHash: + return partition.source_size; + case VerifierStep::kVerifyTargetHash: + return partition.target_size; + } +} + bool FilesystemVerifierAction::ShouldWriteVerity() { const InstallPlan::Partition& partition = install_plan_.partitions[partition_index_]; diff --git a/payload_consumer/filesystem_verifier_action.h b/payload_consumer/filesystem_verifier_action.h index 78634cb3..68a94328 100644 --- a/payload_consumer/filesystem_verifier_action.h +++ b/payload_consumer/filesystem_verifier_action.h @@ -91,6 +91,12 @@ class FilesystemVerifierAction : public InstallPlanAction { // remaining to be hashed, it finishes the action. void StartPartitionHashing(); + const std::string& GetPartitionPath() const; + + bool IsVABC(const InstallPlan::Partition& partition) const; + + size_t GetPartitionSize() const; + // Schedules the asynchronous read of the filesystem part of this // partition(not including hashtree/verity). void ScheduleFileSystemRead(); |