summaryrefslogtreecommitdiff
path: root/gsi_service.h
diff options
context:
space:
mode:
authorDavid Anderson <dvander@google.com>2019-02-01 16:27:18 -0800
committerDavid Anderson <dvander@google.com>2019-02-01 18:00:46 -0800
commita64e392d414e6a0d48d4dc8175aa5992670f780c (patch)
treeb4707c6460b4a8517b742366647c569ff10850dd /gsi_service.h
parent84fb504fb6dd6a2ca458288cc8984294831c4c89 (diff)
downloadgsid-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.h8
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();