No description
Find a file
David Anderson d25f1c3775 fastbootd: Support two super partitions for retrofit devices.
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
2018-11-20 13:47:01 -08:00
adb logical -> dynamic partitions. 2018-11-16 12:53:18 -08:00
adf Make libadf, libsync_recovery recovery_available. 2018-08-07 10:53:07 -07:00
base base: TemporaryDir add DoNotRemove() method 2018-11-14 12:54:08 -08:00
bootstat switch to using android-base/file.h instead of android-base/test_utils.h 2018-11-14 09:35:34 -08:00
cpio Convert more modules to Android.bp 2018-10-31 21:53:37 -07:00
debuggerd switch to using android-base/file.h instead of android-base/test_utils.h 2018-11-14 09:35:34 -08:00
demangle Build adbd for recovery 2018-05-24 14:11:11 +09:00
diagnose_usb Build adbd for recovery 2018-05-24 14:11:11 +09:00
fastboot fastbootd: Support two super partitions for retrofit devices. 2018-11-20 13:47:01 -08:00
fs_mgr fastbootd: Support two super partitions for retrofit devices. 2018-11-20 13:47:01 -08:00
gatekeeperd Multi-threaded Keystore 2018-11-07 11:39:23 -08:00
healthd healthd: BatteryMonitor: Fix compiler warning 2018-11-02 17:59:09 +00:00
include Move android_filesystem_config.h => fs_config.h 2017-08-02 16:31:19 -07:00
init Merge "fs_mgr: remove by_name_symlinks_map_ from AvpOps" 2018-11-19 05:56:36 +00:00
libappfuse Stop using SO_SNDBUFFORCE 2018-03-15 14:22:27 +09:00
libasyncio Build adbd for recovery 2018-05-24 14:11:11 +09:00
libbacktrace Verify that the elf matches the expected arch. 2018-10-29 18:08:09 -07:00
libbinderwrapper Make libbinderwrapper available in /vendor partition 2018-04-06 08:41:21 +09:00
libcrypto_utils Convert more modules to Android.bp 2018-10-31 21:53:37 -07:00
libcutils switch to using android-base/file.h instead of android-base/test_utils.h 2018-11-14 09:35:34 -08:00
libdiskconfig Rename target.linux[_x86[_64]] to target.linux_glibc[_x86[_64]] 2017-10-02 10:44:29 -07:00
libgrallocusage Merge "Build both static and shared lib." 2018-09-25 22:29:31 +00:00
libion libion: cleanup logging 2018-03-07 10:56:06 -08:00
libkeyutils Build adbd for recovery 2018-05-24 14:11:11 +09:00
liblog Merge "Add missing <android/log.h> documentation." 2018-11-02 23:32:43 +00:00
libmeminfo switch to using android-base/file.h instead of android-base/test_utils.h 2018-11-14 09:35:34 -08:00
libmemtrack Add OWNERS. 2017-12-07 13:30:03 -08:00
libmemunreachable Merge "Revert "Use ld when lld fails"" 2018-11-08 20:27:58 +00:00
libmetricslogger Make native metrics logger write to statsd socket 2018-10-24 15:19:14 -07:00
libnativebridge Convert more modules to Android.bp 2018-10-31 21:53:37 -07:00
libnativeloader Add error_msg argument to CloseNativeLibrary 2018-09-12 01:36:06 +02:00
libnetutils Merge "Add OWNERS." am: 3289b9c928 2017-12-07 23:51:13 +00:00
libpackagelistparser Mark as recovery_available: true 2018-05-15 09:47:04 +09:00
libpixelflinger Convert libpixelflinger to Android.bp 2018-11-16 19:15:38 -08:00
libprocessgroup Introduce additional service options for controlling memory cgroups. 2018-10-31 17:09:59 -07:00
libprocinfo libprocinfo: provide MapInfo structure for reading maps. 2018-10-30 17:36:09 -07:00
libqtaguid Redirect qtaguid native call to netd fwmark client 2017-11-09 18:02:22 -08:00
libsparse Revert "libsparse: Add sparse typed callback" 2018-07-26 05:23:45 +00:00
libstats Make native metrics logger write to statsd socket 2018-10-24 15:19:14 -07:00
libsuspend Remove libsuspend from VNDK. 2018-08-14 13:39:55 -07:00
libsync Merge libsync_recovery rules into libsync. 2018-08-07 11:00:50 -07:00
libsystem Move system/core/ off NO_ERROR. 2018-10-08 11:15:52 -07:00
libsysutils Suppress implicit-fallthrough warning. 2018-10-10 14:39:02 -07:00
libunwindstack Remove overly restrictive check for memory. 2018-11-15 14:06:26 -08:00
libusbhost Merge "Remove urb request size maximum." am: 1cb765c867 am: 1ab6e9d018 2018-02-13 09:02:38 +00:00
libutils Suppress lint warnings on google-default-arguments 2018-10-29 23:06:23 +09:00
libvndksupport bpfmt. 2018-02-16 17:58:14 -08:00
libziparchive Fix double closes in ziparchive tests. 2018-11-16 19:54:41 +00:00
llkd llkd: stutter pre-panic message to both last kernel and last logcat 2018-11-01 08:14:03 -07:00
lmkd lmkd: Cleanup unused code for killing processes in bulk 2018-10-29 16:20:50 +00:00
logcat Stop using __STRING unnecessarily. 2018-11-14 14:27:22 -08:00
logd logd: fix memory leak due to slow reader 2018-11-12 10:24:15 -08:00
logwrapper Build adbd for recovery 2018-05-24 14:11:11 +09:00
mkbootimg Revert "Revert "mkbootimg: Build mkbootimg with Soong."" 2018-09-27 14:11:51 +00:00
property_service Add recovery_available: true to init dependencies 2018-07-24 13:45:50 -07:00
qemu_pipe Build adbd for recovery 2018-05-24 14:11:11 +09:00
reboot reboot: only pause indefinitely for non-shutdown operations 2017-09-29 16:29:52 +00:00
rootdir Writes cpu variant information to dev/ 2018-11-19 18:57:50 +00:00
run-as run-as: add ":fromRunAs" selector in seinfo. 2018-11-06 15:31:59 -08:00
sdcard Add support for esdfs mounting 2018-01-19 12:58:42 -08:00
shell_and_utilities Make unzip available. 2018-09-04 13:33:30 -07:00
storaged Move system/core/ off NO_ERROR. 2018-10-08 11:15:52 -07:00
toolbox getevent: O_RDWR -> O_RDONLY | O_CLOEXEC 2018-08-24 12:16:17 -07:00
trusty Add noexcept to move constructors and assignment operators. 2018-10-05 16:43:47 +00:00
usbd bpfmt. 2018-02-16 17:58:14 -08:00
watchdogd Move watchdogd out of init 2018-08-02 12:25:58 -07:00
.clang-format Add a 2 width option of clang format. 2017-03-10 13:01:39 -08:00
.clang-format-2 Remove PenaltyExcessCharacter from clang-formats. 2018-07-19 13:50:41 -07:00
.clang-format-4 Remove PenaltyExcessCharacter from clang-formats. 2018-07-19 13:50:41 -07:00
.gitignore Ignore adb/*.pyc files 2015-08-11 12:59:58 -07:00
Android.bp Export android_filesystem_config.h as a filegroup 2017-01-17 18:20:28 -08:00
Android.mk Remove the simulator target from all makefiles. 2011-07-11 22:12:32 -07:00
CleanSpec.mk Shared libs are supported in recovery mode 2018-06-10 08:32:24 +09:00
MODULE_LICENSE_APACHE2 auto import from //depot/cupcake/@135843 2013-07-30 13:56:49 -07:00
NOTICE Fix omission in NOTICE file. 2013-07-30 13:56:55 -07:00
OWNERS Move per-file OWNERS directives to their directories. 2018-06-06 11:49:40 +09:00
PREUPLOAD.cfg Add a PREUPLOAD.cfg file to run git-clang-format on every commit 2017-03-08 16:51:26 +08:00
TEST_MAPPING Add adbd_test to presubmit test mapping 2018-10-23 14:03:15 -07:00