d25f1c3775
Retrofit devices will have two super partitions, spanning the A and B slots separately. By design an OTA will never cause "A" or "B" partitions to be assigned to the wrong super. However, the same is not true of fastbootd, where it is possible to flash the inactive slot. We do not want, for example, logical "system_a" flashing to super_b. When interacting with partitions, fastbootd now extracts the slot suffix from a GetSuperSlotSuffix() helper. On retrofit devices, if the partition name has a slot, that slot will override FastbootDevice::GetCurrentSlot. This forces partitions in the inactive slot to be assigned to the correct super. There are two consequences of this. First, partitions with no slot suffix will default to the current slot. That means it is possible to wind up with two "scratch" partitions, if "adb remount" is used on both the "A" and "B" slots. However, only the active slot's "scratch" will be visible to the user (either through adb or fastboot). Second, if one slot does not have dynamic partitions, flashing will default to fixed partitions. For example, if the A slot is logical and B is not, flashing "system_a" will be logical and "system_b" will be fixed. This works no matter which slot is active. We do not try to upgrade the inactive slot to dynamic partitions. Bug: 116802789 Test: fastboot set_active a fastboot flashall # dynamic partitions fastboot getvar is-logical:system_a # true fastboot getvar is-logical:system_b # false fastboot set_active b fastboot flashall --skip-secondary fastboot getvar is-logical:system_a # true fastboot getvar is-logical:system_b # true Booting both slots works. Change-Id: Ib3c91944aaee1a96b2f5ad69c90e215bd6c5a2e8 |
||
---|---|---|
.. | ||
include | ||
include_fstab/fstab | ||
libdm | ||
liblp | ||
tests | ||
tools | ||
.clang-format | ||
Android.bp | ||
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_overlayfs.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_vendor_overlay.cpp | ||
fs_mgr_verity.cpp | ||
OWNERS |