diff options
author | Kelvin Zhang <zhangkelvin@google.com> | 2021-03-12 14:28:33 -0500 |
---|---|---|
committer | Kelvin Zhang <zhangkelvin@google.com> | 2021-03-24 10:08:49 -0400 |
commit | 21a4991833d778725eef1fdbf7866c3aa0f1dbad (patch) | |
tree | 5093e3a4c420ff1e81aebd58bc5ee5ebf036b847 /aosp/dynamic_partition_control_android.cc | |
parent | 569c97eebd46b7c7a7740dea837f2e86475c02c2 (diff) |
Make dynamic partition control android return a writable fd
We can return a FileDescriptor object, which encapsulates logic needed
to write to a COW. This way, filesystem verfication action can use the
turend value directly for computing verity and hash the partition.
Test: th
Change-Id: Iafe9699ef0cc15961641fc94f8ad2820230a56e1
Diffstat (limited to 'aosp/dynamic_partition_control_android.cc')
-rw-r--r-- | aosp/dynamic_partition_control_android.cc | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/aosp/dynamic_partition_control_android.cc b/aosp/dynamic_partition_control_android.cc index e1f86d88..1db8da8d 100644 --- a/aosp/dynamic_partition_control_android.cc +++ b/aosp/dynamic_partition_control_android.cc @@ -49,6 +49,7 @@ #include "update_engine/common/dynamic_partition_control_interface.h" #include "update_engine/common/platform_constants.h" #include "update_engine/common/utils.h" +#include "update_engine/payload_consumer/cow_writer_file_descriptor.h" #include "update_engine/payload_consumer/delta_performer.h" using android::base::GetBoolProperty; @@ -1329,7 +1330,7 @@ DynamicPartitionControlAndroid::OpenCowWriter( return snapshot_->OpenSnapshotWriter(params, std::move(source_path)); } // namespace chromeos_update_engine -FileDescriptorPtr DynamicPartitionControlAndroid::OpenCowReader( +FileDescriptorPtr DynamicPartitionControlAndroid::OpenCowFd( const std::string& unsuffixed_partition_name, const std::optional<std::string>& source_path, bool is_append) { @@ -1338,8 +1339,10 @@ FileDescriptorPtr DynamicPartitionControlAndroid::OpenCowReader( if (cow_writer == nullptr) { return nullptr; } - cow_writer->InitializeAppend(kEndOfInstallLabel); - return cow_writer->OpenReader(); + if (!cow_writer->InitializeAppend(kEndOfInstallLabel)) { + return nullptr; + } + return std::make_shared<CowWriterFileDescriptor>(std::move(cow_writer)); } std::optional<base::FilePath> DynamicPartitionControlAndroid::GetSuperDevice() { |