diff --git a/fs_mgr/liblp/partition_opener.cpp b/fs_mgr/liblp/partition_opener.cpp index 3b12213c3..cc4a8821f 100644 --- a/fs_mgr/liblp/partition_opener.cpp +++ b/fs_mgr/liblp/partition_opener.cpp @@ -64,6 +64,12 @@ bool GetBlockDeviceInfo(const std::string& block_device, BlockDeviceInfo* device PERROR << __PRETTY_FUNCTION__ << "BLKALIGNOFF failed on " << block_device; return false; } + // The kernel can return -1 here when misaligned devices are stacked (i.e. + // device-mapper). + if (alignment_offset == -1) { + alignment_offset = 0; + } + int logical_block_size; if (ioctl(fd, BLKSSZGET, &logical_block_size) < 0) { PERROR << __PRETTY_FUNCTION__ << "BLKSSZGET failed on " << block_device;