vold: use RAII wake locks
Prevents wake lock leaks, e.g. b/133175847
Bug: 133175847
Test: boot blueline
Change-Id: Icda4c81e00a61adec6a12c61c329867fef284dc5
diff --git a/IdleMaint.cpp b/IdleMaint.cpp
index a2d0f91..47c277e 100644
--- a/IdleMaint.cpp
+++ b/IdleMaint.cpp
@@ -29,8 +29,8 @@
#include <android-base/strings.h>
#include <android/hardware/health/storage/1.0/IStorage.h>
#include <fs_mgr.h>
-#include <hardware_legacy/power.h>
#include <private/android_filesystem_config.h>
+#include <wakelock/wakelock.h>
#include <dirent.h>
#include <fcntl.h>
@@ -145,7 +145,7 @@
}
void Trim(const android::sp<android::os::IVoldTaskListener>& listener) {
- acquire_wake_lock(PARTIAL_WAKE_LOCK, kWakeLock);
+ android::wakelock::WakeLock wl{kWakeLock};
// Collect both fstab and vold volumes
std::list<std::string> paths;
@@ -195,7 +195,6 @@
listener->onFinished(0, extras);
}
- release_wake_lock(kWakeLock);
}
static bool waitForGc(const std::list<std::string>& paths) {
@@ -370,7 +369,7 @@
LOG(DEBUG) << "idle maintenance started";
- acquire_wake_lock(PARTIAL_WAKE_LOCK, kWakeLock);
+ android::wakelock::WakeLock wl{kWakeLock};
std::list<std::string> paths;
addFromFstab(&paths, PathTypes::kBlkDevice);
@@ -400,13 +399,11 @@
LOG(DEBUG) << "idle maintenance completed";
- release_wake_lock(kWakeLock);
-
return android::OK;
}
int AbortIdleMaint(const android::sp<android::os::IVoldTaskListener>& listener) {
- acquire_wake_lock(PARTIAL_WAKE_LOCK, kWakeLock);
+ android::wakelock::WakeLock wl{kWakeLock};
std::unique_lock<std::mutex> lk(cv_m);
if (idle_maint_stat != IdleMaintStats::kStopped) {
@@ -424,8 +421,6 @@
listener->onFinished(0, extras);
}
- release_wake_lock(kWakeLock);
-
LOG(DEBUG) << "idle maintenance stopped";
return android::OK;