Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6ac5c7c4 authored by Tao Bao's avatar Tao Bao Committed by android-build-merger
Browse files

Merge "Log the error message when failing to mount/umount." am: 850f89f1 am: 23fe20fb

am: cbc90e5c

Change-Id: Ief973b0d636ed77d22d3f349cbddb4bdd615f1f3
parents 8fdce9ab cbc90e5c
Loading
Loading
Loading
Loading
+4 −2
Original line number Original line Diff line number Diff line
@@ -29,9 +29,11 @@ include $(BUILD_STATIC_LIBRARY)
# ===============================
# ===============================
include $(CLEAR_VARS)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := mounts.cpp
LOCAL_SRC_FILES := mounts.cpp
LOCAL_CLANG := true
LOCAL_CFLAGS := \
LOCAL_CFLAGS := -Wall -Wno-unused-parameter -Werror
    -Wall \
    -Werror
LOCAL_MODULE := libmounts
LOCAL_MODULE := libmounts
LOCAL_STATIC_LIBRARIES := libbase
include $(BUILD_STATIC_LIBRARY)
include $(BUILD_STATIC_LIBRARY)


# recovery (static executable)
# recovery (static executable)
+18 −8
Original line number Original line Diff line number Diff line
@@ -27,6 +27,8 @@
#include <string>
#include <string>
#include <vector>
#include <vector>


#include <android-base/logging.h>

struct MountedVolume {
struct MountedVolume {
    std::string device;
    std::string device;
    std::string mount_point;
    std::string mount_point;
@@ -75,15 +77,23 @@ MountedVolume* find_mounted_volume_by_mount_point(const char* mount_point) {
}
}


int unmount_mounted_volume(MountedVolume* volume) {
int unmount_mounted_volume(MountedVolume* volume) {
    // Intentionally pass the empty string to umount if the caller tries
  // Intentionally pass the empty string to umount if the caller tries to unmount a volume they
    // to unmount a volume they already unmounted using this
  // already unmounted using this function.
    // function.
  std::string mount_point = volume->mount_point;
  std::string mount_point = volume->mount_point;
  volume->mount_point.clear();
  volume->mount_point.clear();
    return umount(mount_point.c_str());
  int result = umount(mount_point.c_str());
  if (result == -1) {
    PLOG(WARNING) << "Failed to umount " << mount_point;
  }
  return result;
}
}


int remount_read_only(MountedVolume* volume) {
int remount_read_only(MountedVolume* volume) {
    return mount(volume->device.c_str(), volume->mount_point.c_str(), volume->filesystem.c_str(),
  int result = mount(volume->device.c_str(), volume->mount_point.c_str(),
                     volume->filesystem.c_str(),
                     MS_NOATIME | MS_NODEV | MS_NODIRATIME | MS_RDONLY | MS_REMOUNT, 0);
                     MS_NOATIME | MS_NODEV | MS_NODIRATIME | MS_RDONLY | MS_REMOUNT, 0);
  if (result == -1) {
    PLOG(WARNING) << "Failed to remount read-only " << volume->mount_point;
  }
  return result;
}
}