Loading fs_mgr/fs_mgr_dm_linear.cpp +15 −8 Original line number Original line Diff line number Diff line Loading @@ -168,17 +168,12 @@ bool CreateLogicalPartitions(const LpMetadata& metadata, const std::string& supe return true; return true; } } bool CreateLogicalPartition(const std::string& block_device, uint32_t metadata_slot, bool CreateLogicalPartition(const std::string& block_device, const LpMetadata& metadata, const std::string& partition_name, bool force_writable, const std::string& partition_name, bool force_writable, const std::chrono::milliseconds& timeout_ms, std::string* path) { const std::chrono::milliseconds& timeout_ms, std::string* path) { auto metadata = ReadMetadata(block_device.c_str(), metadata_slot); for (const auto& partition : metadata.partitions) { if (!metadata) { LOG(ERROR) << "Could not read partition table."; return true; } for (const auto& partition : metadata->partitions) { if (GetPartitionName(partition) == partition_name) { if (GetPartitionName(partition) == partition_name) { return CreateLogicalPartition(*metadata.get(), partition, force_writable, timeout_ms, return CreateLogicalPartition(metadata, partition, force_writable, timeout_ms, block_device, path); block_device, path); } } } } Loading @@ -186,6 +181,18 @@ bool CreateLogicalPartition(const std::string& block_device, uint32_t metadata_s return false; return false; } } bool CreateLogicalPartition(const std::string& block_device, uint32_t metadata_slot, const std::string& partition_name, bool force_writable, const std::chrono::milliseconds& timeout_ms, std::string* path) { auto metadata = ReadMetadata(block_device.c_str(), metadata_slot); if (!metadata) { LOG(ERROR) << "Could not read partition table."; return true; } return CreateLogicalPartition(block_device, *metadata.get(), partition_name, force_writable, timeout_ms, path); } bool DestroyLogicalPartition(const std::string& name, const std::chrono::milliseconds& timeout_ms) { bool DestroyLogicalPartition(const std::string& name, const std::chrono::milliseconds& timeout_ms) { DeviceMapper& dm = DeviceMapper::Instance(); DeviceMapper& dm = DeviceMapper::Instance(); std::string path; std::string path; Loading fs_mgr/include/fs_mgr_dm_linear.h +6 −0 Original line number Original line Diff line number Diff line Loading @@ -60,6 +60,12 @@ bool CreateLogicalPartition(const std::string& block_device, uint32_t metadata_s const std::string& partition_name, bool force_writable, const std::string& partition_name, bool force_writable, const std::chrono::milliseconds& timeout_ms, std::string* path); const std::chrono::milliseconds& timeout_ms, std::string* path); // Same as above, but with a given metadata object. Care should be taken that // the metadata represents a valid partition layout. bool CreateLogicalPartition(const std::string& block_device, const LpMetadata& metadata, const std::string& partition_name, bool force_writable, const std::chrono::milliseconds& timeout_ms, std::string* path); // Destroy the block device for a logical partition, by name. If |timeout_ms| // Destroy the block device for a logical partition, by name. If |timeout_ms| // is non-zero, then this will block until the device path has been unlinked. // is non-zero, then this will block until the device path has been unlinked. bool DestroyLogicalPartition(const std::string& name, const std::chrono::milliseconds& timeout_ms); bool DestroyLogicalPartition(const std::string& name, const std::chrono::milliseconds& timeout_ms); Loading Loading
fs_mgr/fs_mgr_dm_linear.cpp +15 −8 Original line number Original line Diff line number Diff line Loading @@ -168,17 +168,12 @@ bool CreateLogicalPartitions(const LpMetadata& metadata, const std::string& supe return true; return true; } } bool CreateLogicalPartition(const std::string& block_device, uint32_t metadata_slot, bool CreateLogicalPartition(const std::string& block_device, const LpMetadata& metadata, const std::string& partition_name, bool force_writable, const std::string& partition_name, bool force_writable, const std::chrono::milliseconds& timeout_ms, std::string* path) { const std::chrono::milliseconds& timeout_ms, std::string* path) { auto metadata = ReadMetadata(block_device.c_str(), metadata_slot); for (const auto& partition : metadata.partitions) { if (!metadata) { LOG(ERROR) << "Could not read partition table."; return true; } for (const auto& partition : metadata->partitions) { if (GetPartitionName(partition) == partition_name) { if (GetPartitionName(partition) == partition_name) { return CreateLogicalPartition(*metadata.get(), partition, force_writable, timeout_ms, return CreateLogicalPartition(metadata, partition, force_writable, timeout_ms, block_device, path); block_device, path); } } } } Loading @@ -186,6 +181,18 @@ bool CreateLogicalPartition(const std::string& block_device, uint32_t metadata_s return false; return false; } } bool CreateLogicalPartition(const std::string& block_device, uint32_t metadata_slot, const std::string& partition_name, bool force_writable, const std::chrono::milliseconds& timeout_ms, std::string* path) { auto metadata = ReadMetadata(block_device.c_str(), metadata_slot); if (!metadata) { LOG(ERROR) << "Could not read partition table."; return true; } return CreateLogicalPartition(block_device, *metadata.get(), partition_name, force_writable, timeout_ms, path); } bool DestroyLogicalPartition(const std::string& name, const std::chrono::milliseconds& timeout_ms) { bool DestroyLogicalPartition(const std::string& name, const std::chrono::milliseconds& timeout_ms) { DeviceMapper& dm = DeviceMapper::Instance(); DeviceMapper& dm = DeviceMapper::Instance(); std::string path; std::string path; Loading
fs_mgr/include/fs_mgr_dm_linear.h +6 −0 Original line number Original line Diff line number Diff line Loading @@ -60,6 +60,12 @@ bool CreateLogicalPartition(const std::string& block_device, uint32_t metadata_s const std::string& partition_name, bool force_writable, const std::string& partition_name, bool force_writable, const std::chrono::milliseconds& timeout_ms, std::string* path); const std::chrono::milliseconds& timeout_ms, std::string* path); // Same as above, but with a given metadata object. Care should be taken that // the metadata represents a valid partition layout. bool CreateLogicalPartition(const std::string& block_device, const LpMetadata& metadata, const std::string& partition_name, bool force_writable, const std::chrono::milliseconds& timeout_ms, std::string* path); // Destroy the block device for a logical partition, by name. If |timeout_ms| // Destroy the block device for a logical partition, by name. If |timeout_ms| // is non-zero, then this will block until the device path has been unlinked. // is non-zero, then this will block until the device path has been unlinked. bool DestroyLogicalPartition(const std::string& name, const std::chrono::milliseconds& timeout_ms); bool DestroyLogicalPartition(const std::string& name, const std::chrono::milliseconds& timeout_ms); Loading