Don't error on block size mismatches.
liblp treats the term "block size" ambiguously when it compares the logical hardware block size with the file system block size (which for all intents and purposes must be 4K). This warning is thus spurious on devices with say a 512 logical block size. However, liblp's block size should at least be a multiple of this, so change the check accordingly. Bug: 123317012 Test: liblp_test gtest Change-Id: I0f41f6bae60a512ab8d313e487c28606daa661a6
This commit is contained in:
parent
dec436438a
commit
2e1c5ac5fd
2 changed files with 9 additions and 3 deletions
|
|
@ -838,9 +838,10 @@ bool MetadataBuilder::UpdateBlockDeviceInfo(size_t index, const BlockDeviceInfo&
|
|||
<< block_device.size << ")";
|
||||
return false;
|
||||
}
|
||||
if (device_info.logical_block_size != geometry_.logical_block_size) {
|
||||
LERROR << "Device logical block size does not match (got " << device_info.logical_block_size
|
||||
<< ", expected " << geometry_.logical_block_size << ")";
|
||||
if (geometry_.logical_block_size % device_info.logical_block_size) {
|
||||
LERROR << "Device logical block size is misaligned (block size="
|
||||
<< device_info.logical_block_size << ", alignment=" << geometry_.logical_block_size
|
||||
<< ")";
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -495,6 +495,11 @@ TEST_F(BuilderTest, UpdateBlockDeviceInfo) {
|
|||
EXPECT_EQ(new_info.size, 1024 * 1024);
|
||||
|
||||
new_info.logical_block_size = 512;
|
||||
ASSERT_TRUE(builder->UpdateBlockDeviceInfo("super", new_info));
|
||||
ASSERT_TRUE(builder->GetBlockDeviceInfo("super", &new_info));
|
||||
EXPECT_EQ(new_info.logical_block_size, 4096);
|
||||
|
||||
new_info.logical_block_size = 7;
|
||||
ASSERT_FALSE(builder->UpdateBlockDeviceInfo("super", new_info));
|
||||
ASSERT_TRUE(builder->GetBlockDeviceInfo("super", &new_info));
|
||||
EXPECT_EQ(new_info.logical_block_size, 4096);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue