diff options
-rw-r--r-- | fs_mgr/liblp/builder.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/fs_mgr/liblp/builder.cpp b/fs_mgr/liblp/builder.cpp index ea78e9bd1..80257fe50 100644 --- a/fs_mgr/liblp/builder.cpp +++ b/fs_mgr/liblp/builder.cpp @@ -268,8 +268,13 @@ bool MetadataBuilder::Init(const BlockDeviceInfo& device_info, uint32_t metadata } // Compute the first free sector, factoring in alignment. - uint64_t free_area_start = - AlignTo(total_reserved, device_info.alignment, device_info.alignment_offset); + uint64_t free_area_start = total_reserved; + if (device_info.alignment || device_info.alignment_offset) { + free_area_start = + AlignTo(free_area_start, device_info.alignment, device_info.alignment_offset); + } else { + free_area_start = AlignTo(free_area_start, device_info.logical_block_size); + } uint64_t first_sector = free_area_start / LP_SECTOR_SIZE; // There must be one logical block of free space remaining (enough for one partition). |