e2fsdroid and mke2fs are dynamic executable in recovery partition

The two utilities are now converted to dynamic executables as shared
libraries are supported in recovery mode.

As part of the conversion, their location has moved from /sbin to
/system/bin. Reflect the change in the program 'recovery'

Bug: 79146551
Test: adb reboot recovery, and select 'Wipe data/factory reset'. The
data partition is formatted and there is no selinux denial.

Change-Id: Ie7cfc4c50ab1e6767e4a5170533ccf826ec7d7f3
This commit is contained in:
Jiyong Park
2018-06-20 14:18:18 +09:00
parent 4a2c2d8102
commit 69364fe553
3 changed files with 8 additions and 14 deletions

View File

@@ -177,8 +177,8 @@ LOCAL_STATIC_LIBRARIES := \
LOCAL_HAL_STATIC_LIBRARIES := libhealthd
LOCAL_REQUIRED_MODULES := \
e2fsdroid_static \
mke2fs_static \
e2fsdroid.recovery \
mke2fs.recovery \
mke2fs.conf
ifeq ($(TARGET_USERIMAGES_USE_F2FS),true)

View File

@@ -283,7 +283,7 @@ int format_volume(const char* volume, const char* directory) {
if (strcmp(v->fs_type, "ext4") == 0) {
static constexpr int kBlockSize = 4096;
std::vector<std::string> mke2fs_args = {
"/sbin/mke2fs_static", "-F", "-t", "ext4", "-b", std::to_string(kBlockSize),
"/system/bin/mke2fs", "-F", "-t", "ext4", "-b", std::to_string(kBlockSize),
};
int raid_stride = v->logical_blk_size / kBlockSize;
@@ -305,13 +305,7 @@ int format_volume(const char* volume, const char* directory) {
int result = exec_cmd(mke2fs_args);
if (result == 0 && directory != nullptr) {
std::vector<std::string> e2fsdroid_args = {
"/sbin/e2fsdroid_static",
"-e",
"-f",
directory,
"-a",
volume,
v->blk_device,
"/system/bin/e2fsdroid", "-e", "-f", directory, "-a", volume, v->blk_device,
};
result = exec_cmd(e2fsdroid_args);
}

View File

@@ -511,8 +511,8 @@ Value* FormatFn(const char* name, State* state, const std::vector<std::unique_pt
}
if (fs_type == "ext4") {
const char* mke2fs_argv[] = { "/sbin/mke2fs_static", "-t", "ext4", "-b", "4096",
location.c_str(), nullptr, nullptr };
const char* mke2fs_argv[] = { "/system/bin/mke2fs", "-t", "ext4", "-b", "4096",
location.c_str(), nullptr, nullptr };
std::string size_str;
if (size != 0) {
size_str = std::to_string(size / 4096LL);
@@ -525,8 +525,8 @@ Value* FormatFn(const char* name, State* state, const std::vector<std::unique_pt
return StringValue("");
}
const char* e2fsdroid_argv[] = { "/sbin/e2fsdroid_static", "-e", "-a", mount_point.c_str(),
location.c_str(), nullptr };
const char* e2fsdroid_argv[] = { "/system/bin/e2fsdroid", "-e", "-a", mount_point.c_str(),
location.c_str(), nullptr };
status = exec_cmd(e2fsdroid_argv[0], const_cast<char**>(e2fsdroid_argv));
if (status != 0) {
LOG(ERROR) << name << ": e2fsdroid failed (" << status << ") on " << location;