diff options
author | Tao Bao <tbao@google.com> | 2017-03-29 08:24:41 +0200 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2017-03-29 08:24:41 +0200 |
commit | 23fe20fb6ec648b2cc57aec083704a94e37ebcd0 (patch) | |
tree | 208763bc2780df6aac6315178c3bcc0fe2ff65e2 | |
parent | Merge "tests: Construct two bad packages at runtime for VerifierTest." (diff) | |
parent | Merge "Log the error message when failing to mount/umount." (diff) | |
download | android_bootable_recovery-23fe20fb6ec648b2cc57aec083704a94e37ebcd0.tar android_bootable_recovery-23fe20fb6ec648b2cc57aec083704a94e37ebcd0.tar.gz android_bootable_recovery-23fe20fb6ec648b2cc57aec083704a94e37ebcd0.tar.bz2 android_bootable_recovery-23fe20fb6ec648b2cc57aec083704a94e37ebcd0.tar.lz android_bootable_recovery-23fe20fb6ec648b2cc57aec083704a94e37ebcd0.tar.xz android_bootable_recovery-23fe20fb6ec648b2cc57aec083704a94e37ebcd0.tar.zst android_bootable_recovery-23fe20fb6ec648b2cc57aec083704a94e37ebcd0.zip |
-rw-r--r-- | Android.mk | 6 | ||||
-rw-r--r-- | mounts.cpp | 26 |
2 files changed, 22 insertions, 10 deletions
diff --git a/Android.mk b/Android.mk index 58b8a2240..037aa1673 100644 --- a/Android.mk +++ b/Android.mk @@ -29,9 +29,11 @@ include $(BUILD_STATIC_LIBRARY) # =============================== include $(CLEAR_VARS) LOCAL_SRC_FILES := mounts.cpp -LOCAL_CLANG := true -LOCAL_CFLAGS := -Wall -Wno-unused-parameter -Werror +LOCAL_CFLAGS := \ + -Wall \ + -Werror LOCAL_MODULE := libmounts +LOCAL_STATIC_LIBRARIES := libbase include $(BUILD_STATIC_LIBRARY) # recovery (static executable) diff --git a/mounts.cpp b/mounts.cpp index f23376b06..fbcbac014 100644 --- a/mounts.cpp +++ b/mounts.cpp @@ -27,6 +27,8 @@ #include <string> #include <vector> +#include <android-base/logging.h> + struct MountedVolume { std::string device; 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) { - // 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(); - return umount(mount_point.c_str()); + // 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; } int remount_read_only(MountedVolume* volume) { - return 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); + 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); + if (result == -1) { + PLOG(WARNING) << "Failed to remount read-only " << volume->mount_point; + } + return result; } |