aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKelvin Zhang <zhangkelvin@google.com>2021-05-13 21:26:03 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-05-13 21:26:03 +0000
commit3c9703d23d0d9898ccbb894f3f9e22fbac5cbfef (patch)
tree73ba6c6d6d6a1721f428e0d5c0a0ddfc52d3276e
parent022e20e284b0ce5f0ad6e683bb77325cdf16e0dd (diff)
parent5ac9a7d20d21f7a55173a8027430503315bb5796 (diff)
downloadupdate_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.cc52
-rw-r--r--payload_consumer/filesystem_verifier_action.h6
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();