From 875434618ff96e05ec3cd2f13ce2726d2ef7cb05 Mon Sep 17 00:00:00 2001 From: David Anderson Date: Tue, 16 Oct 2018 15:27:56 -0700 Subject: [PATCH] liblp: Add partitions to the correct group when writing LpMetadata. The group_indices variable was intended to facilitate this, but I forgot to actually use it. Bug: 116817738 Test: lpmake, lpdump super_empty.img Change-Id: Ia0da50b56b6c09e277324ec9d7aea6ce48fdc10a --- fs_mgr/liblp/builder.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/fs_mgr/liblp/builder.cpp b/fs_mgr/liblp/builder.cpp index 743a3fec3..0fc2051e4 100644 --- a/fs_mgr/liblp/builder.cpp +++ b/fs_mgr/liblp/builder.cpp @@ -523,6 +523,7 @@ std::unique_ptr MetadataBuilder::Export() { strncpy(out.name, group->name().c_str(), sizeof(out.name)); out.maximum_size = group->maximum_size(); + group_indices[group->name()] = metadata->groups.size(); metadata->groups.push_back(out); } @@ -546,6 +547,14 @@ std::unique_ptr MetadataBuilder::Export() { part.num_extents = static_cast(partition->extents().size()); part.attributes = partition->attributes(); + auto iter = group_indices.find(partition->group_name()); + if (iter == group_indices.end()) { + LERROR << "Partition " << partition->name() << " is a member of unknown group " + << partition->group_name(); + return nullptr; + } + part.group_index = iter->second; + for (const auto& extent : partition->extents()) { extent->AddTo(metadata.get()); }