diff options
author | David Anderson <dvander@google.com> | 2019-02-01 16:27:18 -0800 |
---|---|---|
committer | David Anderson <dvander@google.com> | 2019-02-01 18:00:46 -0800 |
commit | a64e392d414e6a0d48d4dc8175aa5992670f780c (patch) | |
tree | b4707c6460b4a8517b742366647c569ff10850dd /gsi_service.h | |
parent | 84fb504fb6dd6a2ca458288cc8984294831c4c89 (diff) | |
download | gsid-a64e392d414e6a0d48d4dc8175aa5992670f780c.tar.gz |
Refactor partition and image handling.
Currently the image creation/extent mapping process is hardcoded to two
partitions, system_gsi and userdata_gsi. Adding a third case stretches
the maintainability of this code, so this patch refactors things. Each
image/partition gets added to an ImageMap that can be handed off to
CreateMetadata.
Bug: 123777418
Test: builds
Change-Id: I5824674faddc4b2cf2f639f18cae974a870025fb
Diffstat (limited to 'gsi_service.h')
-rw-r--r-- | gsi_service.h | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/gsi_service.h b/gsi_service.h index a69f72d..55c83b1 100644 --- a/gsi_service.h +++ b/gsi_service.h @@ -15,9 +15,11 @@ */ #pragma once +#include <map> #include <memory> #include <mutex> #include <sstream> +#include <string> #include <vector> #include <android-base/unique_fd.h> @@ -60,10 +62,13 @@ class GsiService : public BinderService<GsiService>, public BnGsiService { private: using LpMetadata = android::fs_mgr::LpMetadata; using MetadataBuilder = android::fs_mgr::MetadataBuilder; + using ImageMap = std::map<std::string, android::fiemap_writer::FiemapUniquePtr>; int StartInstall(int64_t gsi_size, int64_t userdata_size, bool wipe_userdata); int PerformSanityChecks(); int PreallocateFiles(); + int PreallocateUserdata(ImageMap* partitions); + int PreallocateSystem(ImageMap* partitions); bool FormatUserdata(); bool CommitGsiChunk(int stream_fd, int64_t bytes); bool CommitGsiChunk(const void* data, size_t bytes); @@ -74,8 +79,7 @@ class GsiService : public BinderService<GsiService>, public BnGsiService { bool AddPartitionFiemap(android::fs_mgr::MetadataBuilder* builder, android::fs_mgr::Partition* partition, android::fiemap_writer::FiemapWriter* writer); - std::unique_ptr<LpMetadata> CreateMetadata(android::fiemap_writer::FiemapWriter* userdata, - android::fiemap_writer::FiemapWriter* system); + std::unique_ptr<LpMetadata> CreateMetadata(const ImageMap& partitions); fiemap_writer::FiemapUniquePtr CreateFiemapWriter(const std::string& path, uint64_t size, int* error); bool CreateInstallStatusFile(); |