From c674dfb5848845afa1de64cab1e94693c54f741e Mon Sep 17 00:00:00 2001 From: Tao Bao Date: Thu, 20 Dec 2018 14:25:15 -0800 Subject: Use dynamically linked f2fs executables. It also reduces the space cost for devices using f2fs (e.g. crosshatch). /sbin/mkfs.f2fs 722560 => /system/bin/make_f2fs 49568 /sbin/sload.f2fs 1182456 => /system/bin/sload_f2fs 150032 Test: Build and boot recovery on crosshatch. Factory reset. Test: Install a non-A/B OTA package that formats a f2fs partition. Change-Id: Ibe70c8d91a1d07e1c78ff9eac19b1f7955800161 --- Android.mk | 4 ++-- CleanSpec.mk | 1 + roots.cpp | 32 +++++++++++++------------------- updater/install.cpp | 9 +++++---- 4 files changed, 21 insertions(+), 25 deletions(-) diff --git a/Android.mk b/Android.mk index 7be123069..429c52dbf 100644 --- a/Android.mk +++ b/Android.mk @@ -58,8 +58,8 @@ LOCAL_MODULE := recovery_deps ifeq ($(TARGET_USERIMAGES_USE_F2FS),true) ifeq ($(HOST_OS),linux) LOCAL_REQUIRED_MODULES += \ - sload.f2fs \ - mkfs.f2fs + make_f2fs.recovery \ + sload_f2fs.recovery endif endif diff --git a/CleanSpec.mk b/CleanSpec.mk index e2d97d42b..fec823e7e 100644 --- a/CleanSpec.mk +++ b/CleanSpec.mk @@ -49,3 +49,4 @@ # ************************************************ $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/EXECUTABLES/recovery_intermediates) $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libminui_intermediates/import_includes) +$(call add-clean-step, rm -rf $(PRODUCT_OUT)/recovery/root/sbin) diff --git a/roots.cpp b/roots.cpp index 6db0ca519..290be477c 100644 --- a/roots.cpp +++ b/roots.cpp @@ -223,34 +223,28 @@ int format_volume(const std::string& volume, const std::string& directory) { // Has to be f2fs because we checked earlier. static constexpr int kSectorSize = 4096; - std::string cmd("/sbin/mkfs.f2fs"); - // clang-format off std::vector make_f2fs_cmd = { - cmd, - "-g", "android", + "/system/bin/make_f2fs", + "-g", + "android", v->blk_device, }; - // clang-format on if (length >= kSectorSize) { make_f2fs_cmd.push_back(std::to_string(length / kSectorSize)); } - int result = exec_cmd(make_f2fs_cmd); - if (result == 0 && !directory.empty()) { - cmd = "/sbin/sload.f2fs"; - // clang-format off + if (exec_cmd(make_f2fs_cmd) != 0) { + PLOG(ERROR) << "format_volume: Failed to make_f2fs on " << v->blk_device; + return -1; + } + if (!directory.empty()) { std::vector sload_f2fs_cmd = { - cmd, - "-f", directory, - "-t", volume, - v->blk_device, + "/system/bin/sload_f2fs", "-f", directory, "-t", volume, v->blk_device, }; - // clang-format on - result = exec_cmd(sload_f2fs_cmd); - } - if (result != 0) { - PLOG(ERROR) << "format_volume: Failed " << cmd << " on " << v->blk_device; - return -1; + if (exec_cmd(sload_f2fs_cmd) != 0) { + PLOG(ERROR) << "format_volume: Failed to sload_f2fs on " << v->blk_device; + return -1; + } } return 0; } diff --git a/updater/install.cpp b/updater/install.cpp index 0e1028bd1..20a204a83 100644 --- a/updater/install.cpp +++ b/updater/install.cpp @@ -482,18 +482,19 @@ Value* FormatFn(const char* name, State* state, const std::vector f2fs_args = { - "/sbin/mkfs.f2fs", "-g", "android", "-w", "512", location + "/system/bin/make_f2fs", "-g", "android", "-w", "512", location }; if (size >= 512) { f2fs_args.push_back(std::to_string(size / 512)); } if (auto status = exec_cmd(f2fs_args); status != 0) { - LOG(ERROR) << name << ": mkfs.f2fs failed (" << status << ") on " << location; + LOG(ERROR) << name << ": make_f2fs failed (" << status << ") on " << location; return StringValue(""); } - if (auto status = exec_cmd({ "/sbin/sload.f2fs", "-t", mount_point, location }); status != 0) { - LOG(ERROR) << name << ": sload.f2fs failed (" << status << ") on " << location; + if (auto status = exec_cmd({ "/system/bin/sload_f2fs", "-t", mount_point, location }); + status != 0) { + LOG(ERROR) << name << ": sload_f2fs failed (" << status << ") on " << location; return StringValue(""); } -- cgit v1.2.3