Support multiple partition for /data
Bug: 336319772
Change-Id: I92eca566063b7d8ad74a15c7b74d809b452ace72
Signed-off-by: Jaegeuk Kim <jaegeuk@google.com>
diff --git a/vdc.cpp b/vdc.cpp
index 7d72535..ee8cf9e 100644
--- a/vdc.cpp
+++ b/vdc.cpp
@@ -86,6 +86,38 @@
checkStatus(args, vold->setStorageBindingSeed(seed));
}
+static void mountFstab(std::vector<std::string>& args,
+ const android::sp<android::os::IVold>& vold) {
+ auto isZoned = android::base::ParseBool(args[4]);
+ if (isZoned == android::base::ParseBoolResult::kError) exit(EINVAL);
+
+ std::vector<std::string> userDevices = {};
+ if (args[5] != "") {
+ userDevices = android::base::Split(args[5], " ");
+ }
+ checkStatus(args,
+ vold->mountFstab(args[2], args[3], isZoned == android::base::ParseBoolResult::kTrue,
+ userDevices));
+}
+
+static void encryptFstab(std::vector<std::string>& args,
+ const android::sp<android::os::IVold>& vold) {
+ auto shouldFormat = android::base::ParseBool(args[4]);
+ if (shouldFormat == android::base::ParseBoolResult::kError) exit(EINVAL);
+
+ auto isZoned = android::base::ParseBool(args[6]);
+ if (isZoned == android::base::ParseBoolResult::kError) exit(EINVAL);
+
+ std::vector<std::string> userDevices = {};
+ if (args[7] != "") {
+ userDevices = android::base::Split(args[7], " ");
+ }
+ checkStatus(args,
+ vold->encryptFstab(args[2], args[3],
+ shouldFormat == android::base::ParseBoolResult::kTrue, args[5],
+ isZoned == android::base::ParseBoolResult::kTrue, userDevices));
+}
+
int main(int argc, char** argv) {
setenv("ANDROID_LOG_TAGS", "*:v", 1);
if (getppid() == 1) {
@@ -128,14 +160,10 @@
LOG(INFO) << size;
} else if (args[0] == "cryptfs" && args[1] == "bindkeys") {
bindkeys(args, vold);
- } else if (args[0] == "cryptfs" && args[1] == "mountFstab" && args.size() == 5) {
- checkStatus(args, vold->mountFstab(args[2], args[3], args[4]));
- } else if (args[0] == "cryptfs" && args[1] == "encryptFstab" && args.size() == 7) {
- auto shouldFormat = android::base::ParseBool(args[4]);
- if (shouldFormat == android::base::ParseBoolResult::kError) exit(EINVAL);
- checkStatus(args, vold->encryptFstab(args[2], args[3],
- shouldFormat == android::base::ParseBoolResult::kTrue,
- args[5], args[6]));
+ } else if (args[0] == "cryptfs" && args[1] == "mountFstab" && args.size() == 6) {
+ mountFstab(args, vold);
+ } else if (args[0] == "cryptfs" && args[1] == "encryptFstab" && args.size() == 8) {
+ encryptFstab(args, vold);
} else if (args[0] == "checkpoint" && args[1] == "supportsCheckpoint" && args.size() == 2) {
bool supported = false;
checkStatus(args, vold->supportsCheckpoint(&supported));