diff --git a/fs_mgr/liblp/builder.cpp b/fs_mgr/liblp/builder.cpp index 3d4b8263e..03fd5f940 100644 --- a/fs_mgr/liblp/builder.cpp +++ b/fs_mgr/liblp/builder.cpp @@ -505,6 +505,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); } @@ -528,6 +529,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()); }