diff --git a/updater/Android.bp b/updater/Android.bp
index 872ef86..8a60ef7 100644
--- a/updater/Android.bp
+++ b/updater/Android.bp
@@ -81,6 +81,7 @@
         "blockimg.cpp",
         "commands.cpp",
         "install.cpp",
+        "mounts.cpp",
         "updater.cpp",
     ],
 
diff --git a/updater/install.cpp b/updater/install.cpp
index b617f62..62ff87e 100644
--- a/updater/install.cpp
+++ b/updater/install.cpp
@@ -60,7 +60,6 @@
 #include "edify/updater_runtime_interface.h"
 #include "otautil/dirutil.h"
 #include "otautil/error_code.h"
-#include "otautil/mounts.h"
 #include "otautil/print_sha1.h"
 #include "otautil/sysutil.h"
 
diff --git a/updater/mounts.cpp b/updater/mounts.cpp
new file mode 100644
index 0000000..943d35c
--- /dev/null
+++ b/updater/mounts.cpp
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2007 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "mounts.h"
+
+#include <errno.h>
+#include <fcntl.h>
+#include <mntent.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/mount.h>
+
+#include <string>
+#include <vector>
+
+#include <android-base/logging.h>
+
+struct MountedVolume {
+  std::string device;
+  std::string mount_point;
+  std::string filesystem;
+  std::string flags;
+};
+
+static std::vector<MountedVolume*> g_mounts_state;
+
+bool scan_mounted_volumes() {
+  for (size_t i = 0; i < g_mounts_state.size(); ++i) {
+    delete g_mounts_state[i];
+  }
+  g_mounts_state.clear();
+
+  // Open and read mount table entries.
+  FILE* fp = setmntent("/proc/mounts", "re");
+  if (fp == NULL) {
+    return false;
+  }
+  mntent* e;
+  while ((e = getmntent(fp)) != NULL) {
+    MountedVolume* v = new MountedVolume;
+    v->device = e->mnt_fsname;
+    v->mount_point = e->mnt_dir;
+    v->filesystem = e->mnt_type;
+    v->flags = e->mnt_opts;
+    g_mounts_state.push_back(v);
+  }
+  endmntent(fp);
+  return true;
+}
+
+MountedVolume* find_mounted_volume_by_mount_point(const char* mount_point) {
+  for (size_t i = 0; i < g_mounts_state.size(); ++i) {
+    if (g_mounts_state[i]->mount_point == mount_point) return g_mounts_state[i];
+  }
+  return nullptr;
+}
+
+int unmount_mounted_volume(MountedVolume* volume) {
+  // Intentionally pass the empty string to umount if the caller tries to unmount a volume they
+  // already unmounted using this function.
+  std::string mount_point = volume->mount_point;
+  volume->mount_point.clear();
+  int result = umount(mount_point.c_str());
+  if (result == -1) {
+    PLOG(WARNING) << "Failed to umount " << mount_point;
+  }
+  return result;
+}
diff --git a/updater/mounts.h b/updater/mounts.h
new file mode 100644
index 0000000..6786c8d
--- /dev/null
+++ b/updater/mounts.h
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2007 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#pragma once
+
+struct MountedVolume;
+
+bool scan_mounted_volumes();
+
+MountedVolume* find_mounted_volume_by_mount_point(const char* mount_point);
+
+int unmount_mounted_volume(MountedVolume* volume);
diff --git a/updater/simulator_runtime.cpp b/updater/simulator_runtime.cpp
index d2074d6..3ed7bf3 100644
--- a/updater/simulator_runtime.cpp
+++ b/updater/simulator_runtime.cpp
@@ -32,7 +32,7 @@
 #include <ext4_utils/wipe.h>
 #include <selinux/label.h>
 
-#include "otautil/mounts.h"
+#include "mounts.h"
 #include "otautil/sysutil.h"
 
 std::string SimulatorRuntime::GetProperty(const std::string_view key,
diff --git a/updater/updater_runtime.cpp b/updater/updater_runtime.cpp
index 761f999..c4222a5 100644
--- a/updater/updater_runtime.cpp
+++ b/updater/updater_runtime.cpp
@@ -31,7 +31,7 @@
 #include <selinux/label.h>
 #include <tune2fs.h>
 
-#include "otautil/mounts.h"
+#include "mounts.h"
 #include "otautil/sysutil.h"
 
 std::string UpdaterRuntime::GetProperty(const std::string_view key,
