From 37bd44174bf2511320961f3f8cd1f698a1c72b66 Mon Sep 17 00:00:00 2001 From: Bowgo Tsai Date: Fri, 24 Mar 2017 01:19:38 +0800 Subject: libbootloader_message: use different fstab paths for normal/recovery boot libbootloader_message is used by both normal boot and recovery boot. It needs to use different fstab paths, respectively. Otherwise, factory reset will fail when we move /fstab.{ro.hardware} to /vendor/etc/. Recovery boot: fs_mgr_read_fstab_with_dt("/etc/recovery.fstab") Normal boot: fs_mgr_read_fstab_default() Bug: 35811655 Bug: 36502022 Test: normal boot sailfish, go to Settings > System & tap on "Factory Data reset" Test: recovery boot sailfish Change-Id: I253f5bdfb9be8a01f80856eb1194f85cdf992bbd --- bootloader_message/bootloader_message.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/bootloader_message/bootloader_message.cpp b/bootloader_message/bootloader_message.cpp index d8086be28..d17e055bb 100644 --- a/bootloader_message/bootloader_message.cpp +++ b/bootloader_message/bootloader_message.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include @@ -30,8 +31,13 @@ #include static std::string get_misc_blk_device(std::string* err) { - std::unique_ptr fstab(fs_mgr_read_fstab_default(), - fs_mgr_free_fstab); + std::unique_ptr fstab(nullptr, fs_mgr_free_fstab); + // Use different fstab paths for normal boot and recovery boot, respectively + if (access("/sbin/recovery", F_OK) == 0) { + fstab.reset(fs_mgr_read_fstab_with_dt("/etc/recovery.fstab")); + } else { + fstab.reset(fs_mgr_read_fstab_default()); + } if (!fstab) { *err = "failed to read default fstab"; return ""; -- cgit v1.2.3