Cleanup dangling mount on update_engine start
If update_engine crashed during postintall, the snapshotted partition
would still be mounted at /postinstall. Therefore cleanup on startup.
Test: th
Change-Id: Ieaa327422bd242231466eedcb1d274d239340847
diff --git a/payload_consumer/postinstall_runner_action.cc b/payload_consumer/postinstall_runner_action.cc
index e489dfc..a72462a 100644
--- a/payload_consumer/postinstall_runner_action.cc
+++ b/payload_consumer/postinstall_runner_action.cc
@@ -91,9 +91,17 @@
fs_mount_dir_ = temp_dir.value();
#endif // __ANDROID__
CHECK(!fs_mount_dir_.empty());
+ EnsureUnmounted();
LOG(INFO) << "postinstall mount point: " << fs_mount_dir_;
}
+void PostinstallRunnerAction::EnsureUnmounted() {
+ if (utils::IsMountpoint(fs_mount_dir_)) {
+ LOG(INFO) << "Found previously mounted filesystem at " << fs_mount_dir_;
+ utils::UnmountFilesystem(fs_mount_dir_);
+ }
+}
+
void PostinstallRunnerAction::PerformAction() {
CHECK(HasInputObject());
CHECK(boot_control_);
@@ -167,10 +175,7 @@
}
// Double check that the fs_mount_dir is not busy with a previous mounted
// filesystem from a previous crashed postinstall step.
- if (utils::IsMountpoint(fs_mount_dir_)) {
- LOG(INFO) << "Found previously mounted filesystem at " << fs_mount_dir_;
- utils::UnmountFilesystem(fs_mount_dir_);
- }
+ EnsureUnmounted();
#ifdef __ANDROID__
// In Chromium OS, the postinstall step is allowed to write to the block