recovery: replacing fs_mgr_read_fstab() with new fs_mgr APIs
The fstab settings of early-mounted partitions (e.g., /vendor) will be in
kernel device tree. Switch to the new API to get the whole settings with
those in device tree:
fs_mgr_read_fstab_with_dt("/etc/recovery.fstab")
The original default /fstab.{ro.hardware} might be moved to
/vendor/etc/. or /odm/etc/. Use another new API to get the default fstab
instead of using the hard-coded /fstab.{ro.hardware}. This API also
includes the settings from device tree:
fs_mgr_read_fstab_default()
Bug: 35811655
Test: boot sailfish recovery
Change-Id: Iaa56ac7f7b4c4dfc7180c65f03e9a37b94f1de09
This commit is contained in:
@@ -29,27 +29,14 @@
|
||||
#include <android-base/unique_fd.h>
|
||||
#include <fs_mgr.h>
|
||||
|
||||
static struct fstab* read_fstab(std::string* err) {
|
||||
std::string ro_hardware = android::base::GetProperty("ro.hardware", "");
|
||||
if (ro_hardware.empty()) {
|
||||
*err = "failed to get ro.hardware";
|
||||
return nullptr;
|
||||
}
|
||||
// The fstab path is always "/fstab.${ro.hardware}".
|
||||
std::string fstab_path = "/fstab." + ro_hardware;
|
||||
struct fstab* fstab = fs_mgr_read_fstab(fstab_path.c_str());
|
||||
if (fstab == nullptr) {
|
||||
*err = "failed to read " + fstab_path;
|
||||
}
|
||||
return fstab;
|
||||
}
|
||||
|
||||
static std::string get_misc_blk_device(std::string* err) {
|
||||
struct fstab* fstab = read_fstab(err);
|
||||
if (fstab == nullptr) {
|
||||
std::unique_ptr<fstab, decltype(&fs_mgr_free_fstab)> fstab(fs_mgr_read_fstab_default(),
|
||||
fs_mgr_free_fstab);
|
||||
if (!fstab) {
|
||||
*err = "failed to read default fstab";
|
||||
return "";
|
||||
}
|
||||
fstab_rec* record = fs_mgr_get_entry_for_mount_point(fstab, "/misc");
|
||||
fstab_rec* record = fs_mgr_get_entry_for_mount_point(fstab.get(), "/misc");
|
||||
if (record == nullptr) {
|
||||
*err = "failed to find /misc partition";
|
||||
return "";
|
||||
|
||||
Reference in New Issue
Block a user