Loading init/first_stage_init.cpp +9 −1 Original line number Diff line number Diff line Loading @@ -298,7 +298,15 @@ int FirstStageMain(int argc, char** argv) { << module_elapse_time.count() << " ms"; } bool created_devices = false; if (want_console == FirstStageConsoleParam::CONSOLE_ON_FAILURE) { if (!IsRecoveryMode()) { created_devices = DoCreateDevices(); if (!created_devices){ LOG(ERROR) << "Failed to create device nodes early"; } } StartConsole(cmdline); } Loading Loading @@ -339,7 +347,7 @@ int FirstStageMain(int argc, char** argv) { } } if (!DoFirstStageMount()) { if (!DoFirstStageMount(!created_devices)) { LOG(FATAL) << "Failed to mount required partitions early ..."; } Loading init/first_stage_mount.cpp +28 −8 Original line number Diff line number Diff line Loading @@ -82,6 +82,7 @@ class FirstStageMount { // The factory method to create either FirstStageMountVBootV1 or FirstStageMountVBootV2 // based on device tree configurations. static std::unique_ptr<FirstStageMount> Create(); bool DoCreateDevices(); // Creates devices and logical partitions from storage devices bool DoFirstStageMount(); // Mounts fstab entries read from device tree. bool InitDevices(); Loading Loading @@ -244,13 +245,7 @@ std::unique_ptr<FirstStageMount> FirstStageMount::Create() { } } bool FirstStageMount::DoFirstStageMount() { if (!IsDmLinearEnabled() && fstab_.empty()) { // Nothing to mount. LOG(INFO) << "First stage mount skipped (missing/incompatible/empty fstab in device tree)"; return true; } bool FirstStageMount::DoCreateDevices() { if (!InitDevices()) return false; // Mount /metadata before creating logical partitions, since we need to Loading @@ -269,6 +264,16 @@ bool FirstStageMount::DoFirstStageMount() { if (!CreateLogicalPartitions()) return false; return true; } bool FirstStageMount::DoFirstStageMount() { if (!IsDmLinearEnabled() && fstab_.empty()) { // Nothing to mount. LOG(INFO) << "First stage mount skipped (missing/incompatible/empty fstab in device tree)"; return true; } if (!MountPartitions()) return false; return true; Loading Loading @@ -829,8 +834,18 @@ bool FirstStageMountVBootV2::InitAvbHandle() { // Public functions // ---------------- // Creates devices and logical partitions from storage devices bool DoCreateDevices() { std::unique_ptr<FirstStageMount> handle = FirstStageMount::Create(); if (!handle) { LOG(ERROR) << "Failed to create FirstStageMount"; return false; } return handle->DoCreateDevices(); } // Mounts partitions specified by fstab in device tree. bool DoFirstStageMount() { bool DoFirstStageMount(bool create_devices) { // Skips first stage mount if we're in recovery mode. if (IsRecoveryMode()) { LOG(INFO) << "First stage mount skipped (recovery mode)"; Loading @@ -842,6 +857,11 @@ bool DoFirstStageMount() { LOG(ERROR) << "Failed to create FirstStageMount"; return false; } if (create_devices) { if (!handle->DoCreateDevices()) return false; } return handle->DoFirstStageMount(); } Loading init/first_stage_mount.h +2 −1 Original line number Diff line number Diff line Loading @@ -19,7 +19,8 @@ namespace android { namespace init { bool DoFirstStageMount(); bool DoCreateDevices(); bool DoFirstStageMount(bool create_devices); void SetInitAvbVersionInRecovery(); } // namespace init Loading Loading
init/first_stage_init.cpp +9 −1 Original line number Diff line number Diff line Loading @@ -298,7 +298,15 @@ int FirstStageMain(int argc, char** argv) { << module_elapse_time.count() << " ms"; } bool created_devices = false; if (want_console == FirstStageConsoleParam::CONSOLE_ON_FAILURE) { if (!IsRecoveryMode()) { created_devices = DoCreateDevices(); if (!created_devices){ LOG(ERROR) << "Failed to create device nodes early"; } } StartConsole(cmdline); } Loading Loading @@ -339,7 +347,7 @@ int FirstStageMain(int argc, char** argv) { } } if (!DoFirstStageMount()) { if (!DoFirstStageMount(!created_devices)) { LOG(FATAL) << "Failed to mount required partitions early ..."; } Loading
init/first_stage_mount.cpp +28 −8 Original line number Diff line number Diff line Loading @@ -82,6 +82,7 @@ class FirstStageMount { // The factory method to create either FirstStageMountVBootV1 or FirstStageMountVBootV2 // based on device tree configurations. static std::unique_ptr<FirstStageMount> Create(); bool DoCreateDevices(); // Creates devices and logical partitions from storage devices bool DoFirstStageMount(); // Mounts fstab entries read from device tree. bool InitDevices(); Loading Loading @@ -244,13 +245,7 @@ std::unique_ptr<FirstStageMount> FirstStageMount::Create() { } } bool FirstStageMount::DoFirstStageMount() { if (!IsDmLinearEnabled() && fstab_.empty()) { // Nothing to mount. LOG(INFO) << "First stage mount skipped (missing/incompatible/empty fstab in device tree)"; return true; } bool FirstStageMount::DoCreateDevices() { if (!InitDevices()) return false; // Mount /metadata before creating logical partitions, since we need to Loading @@ -269,6 +264,16 @@ bool FirstStageMount::DoFirstStageMount() { if (!CreateLogicalPartitions()) return false; return true; } bool FirstStageMount::DoFirstStageMount() { if (!IsDmLinearEnabled() && fstab_.empty()) { // Nothing to mount. LOG(INFO) << "First stage mount skipped (missing/incompatible/empty fstab in device tree)"; return true; } if (!MountPartitions()) return false; return true; Loading Loading @@ -829,8 +834,18 @@ bool FirstStageMountVBootV2::InitAvbHandle() { // Public functions // ---------------- // Creates devices and logical partitions from storage devices bool DoCreateDevices() { std::unique_ptr<FirstStageMount> handle = FirstStageMount::Create(); if (!handle) { LOG(ERROR) << "Failed to create FirstStageMount"; return false; } return handle->DoCreateDevices(); } // Mounts partitions specified by fstab in device tree. bool DoFirstStageMount() { bool DoFirstStageMount(bool create_devices) { // Skips first stage mount if we're in recovery mode. if (IsRecoveryMode()) { LOG(INFO) << "First stage mount skipped (recovery mode)"; Loading @@ -842,6 +857,11 @@ bool DoFirstStageMount() { LOG(ERROR) << "Failed to create FirstStageMount"; return false; } if (create_devices) { if (!handle->DoCreateDevices()) return false; } return handle->DoFirstStageMount(); } Loading
init/first_stage_mount.h +2 −1 Original line number Diff line number Diff line Loading @@ -19,7 +19,8 @@ namespace android { namespace init { bool DoFirstStageMount(); bool DoCreateDevices(); bool DoFirstStageMount(bool create_devices); void SetInitAvbVersionInRecovery(); } // namespace init Loading