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
diff --git a/roots.cpp b/roots.cpp
index 6db0ca5..290be47 100644
--- a/roots.cpp
+++ b/roots.cpp
@@ -223,35 +223,29 @@
// Has to be f2fs because we checked earlier.
static constexpr int kSectorSize = 4096;
- std::string cmd("/sbin/mkfs.f2fs");
- // clang-format off
std::vector<std::string> 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
- std::vector<std::string> sload_f2fs_cmd = {
- cmd,
- "-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;
+ 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<std::string> sload_f2fs_cmd = {
+ "/system/bin/sload_f2fs", "-f", directory, "-t", volume, v->blk_device,
+ };
+ if (exec_cmd(sload_f2fs_cmd) != 0) {
+ PLOG(ERROR) << "format_volume: Failed to sload_f2fs on " << v->blk_device;
+ return -1;
+ }
+ }
return 0;
}