fs_mgr: update to new androidboot.slot param

androidboot.slot_suffix is being deprecated for a androidboot.slot.
Bootloader must pass slot used to boot into the androidboot.slot which
does not include the '_' character

Test: boot android
Bug: 36533366
Change-Id: I6137bd08418f67a88120c8609eda10b2ada4607d
Signed-off-by: Fernando Lugo <flugo@google.com>
This commit is contained in:
Fernando Lugo 2017-03-23 15:47:38 -07:00
parent c10c31e8ba
commit 9c7ae587c2
2 changed files with 14 additions and 7 deletions

View file

@ -489,7 +489,13 @@ int fs_mgr_load_vbmeta_images(struct fstab* fstab) {
// fs_mgr only deals with HASHTREE partitions.
const char *requested_partitions[] = {nullptr};
std::string ab_suffix;
fs_mgr_get_boot_config("slot_suffix", &ab_suffix);
std::string slot;
if (fs_mgr_get_boot_config("slot", &slot)) {
ab_suffix = "_" + slot;
} else {
// remove slot_suffix once bootloaders update to new androidboot.slot param
fs_mgr_get_boot_config("slot_suffix", &ab_suffix);
}
AvbSlotVerifyResult verify_result =
avb_slot_verify(fs_mgr_avb_ops, requested_partitions, ab_suffix.c_str(),
fs_mgr_vbmeta_prop.allow_verification_error, &fs_mgr_avb_verify_data);

View file

@ -31,15 +31,16 @@ int fs_mgr_update_for_slotselect(struct fstab *fstab)
char *tmp;
if (!got_suffix) {
if (!fs_mgr_get_boot_config("slot_suffix", &suffix)) {
return -1;
std::string slot;
if (fs_mgr_get_boot_config("slot", &slot)) {
suffix = "_" + slot;
} else if (!fs_mgr_get_boot_config("slot_suffix", &suffix)) {
// remove slot_suffix once bootloaders update to new androidboot.slot param
return -1;
}
got_suffix = 1;
// remove below line when bootloaders fix androidboot.slot_suffix param
if (suffix[0] == '_') suffix.erase(suffix.begin());
}
if (asprintf(&tmp, "%s_%s", fstab->recs[n].blk_device, suffix.c_str()) > 0) {
if (asprintf(&tmp, "%s%s", fstab->recs[n].blk_device, suffix.c_str()) > 0) {
free(fstab->recs[n].blk_device);
fstab->recs[n].blk_device = tmp;
} else {