liblp: Handle invalid alignment offsets correctly.
When stacking devices with dm-linear, it is possible to get a -1 alignment offset. In this case we should set alignment_offset to 0 rather than fail later trying to divide -1 by the sector size. Bug: 134536978 Test: manual test Change-Id: I3862fdda69531a3b230b7316707469a49ba871d6
This commit is contained in:
parent
3215fd93c7
commit
2ca0700b45
1 changed files with 6 additions and 0 deletions
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue