![]() Block devices in the Linux kernel have a "minimum I/O request" size. The minimum size is usually acquired by the block driver and can change from device to device. When stacking devices (such as with device-mapper), the kernel goes through great lengths to make sure this alignment is respected for optimal I/O. In device-mapper's case, misalignment can lead to kernel warnings and performance issues. While this is unlikely to matter with a few targets, it could become problematic on a large number of targets, and so we would prefer to align all partition extents to the minimum I/O size. We now support two new properties in the partition table geometry: an "alignment", which is the minimum I/O size, and an "alignment offset", which is an offset that when applied to sector 0, causes the sector to be properly aligned within its parent device (for example, if a physical partition is misaligned). All partition extents now begin on a sector that respects this alignment. One major caveat is that it is difficult for the initial partition table to have the correct alignment without build system and/or flash tool support. To accomodate this, all alignment is optional, and the lpmake tool will support a default alignment of 1MiB as a failsafe. Bug: 79173901 Test: liblp_test gtest Change-Id: I5bc41b90aa085f4f30393951af0d2b37c4ac2a72 |
||
---|---|---|
.. | ||
include | ||
include_fstab/fstab | ||
libdm | ||
liblp | ||
tests | ||
tools | ||
.clang-format | ||
Android.bp | ||
OWNERS | ||
fs_mgr.cpp | ||
fs_mgr_avb.cpp | ||
fs_mgr_avb_ops.cpp | ||
fs_mgr_boot_config.cpp | ||
fs_mgr_dm_linear.cpp | ||
fs_mgr_format.cpp | ||
fs_mgr_fstab.cpp | ||
fs_mgr_priv.h | ||
fs_mgr_priv_avb_ops.h | ||
fs_mgr_priv_boot_config.h | ||
fs_mgr_priv_sha.h | ||
fs_mgr_slotselect.cpp | ||
fs_mgr_verity.cpp |