Remove coldboot from vold
coldboot is now taken care by ueventd, so removing the duplicate
logic to save boottime.
This CL also fixes a missing lock.
Bug: 33786699
Test: manual
Change-Id: I71270252f3153abc815d142b5da7a9cb85b94dac
diff --git a/VolumeManager.cpp b/VolumeManager.cpp
index 2085ca8..4a649bb 100644
--- a/VolumeManager.cpp
+++ b/VolumeManager.cpp
@@ -350,6 +350,7 @@
}
void VolumeManager::addDiskSource(const std::shared_ptr<DiskSource>& diskSource) {
+ std::lock_guard<std::mutex> lock(mLock);
mDiskSources.push_back(diskSource);
}
diff --git a/main.cpp b/main.cpp
index 68477ac..4810d43 100644
--- a/main.cpp
+++ b/main.cpp
@@ -36,11 +36,9 @@
#include <sys/types.h>
#include <getopt.h>
#include <fcntl.h>
-#include <dirent.h>
#include <fs_mgr.h>
static int process_config(VolumeManager *vm, bool* has_adoptable);
-static void coldboot(const char *path);
static void parse_args(int argc, char** argv);
struct fstab *fstab;
@@ -117,9 +115,6 @@
exit(1);
}
- coldboot("/sys/block");
-// coldboot("/sys/class/switch");
-
/*
* Now that we're up, we can respond to commands
*/
@@ -139,7 +134,7 @@
// Eventually we'll become the monitoring thread
while(1) {
- sleep(1000);
+ pause();
}
LOG(ERROR) << "Vold exiting";
@@ -170,49 +165,6 @@
CHECK(android::vold::sFsckUntrustedContext != nullptr);
}
-static void do_coldboot(DIR *d, int lvl) {
- struct dirent *de;
- int dfd, fd;
-
- dfd = dirfd(d);
-
- fd = openat(dfd, "uevent", O_WRONLY | O_CLOEXEC);
- if(fd >= 0) {
- write(fd, "add\n", 4);
- close(fd);
- }
-
- while((de = readdir(d))) {
- DIR *d2;
-
- if (de->d_name[0] == '.')
- continue;
-
- if (de->d_type != DT_DIR && lvl > 0)
- continue;
-
- fd = openat(dfd, de->d_name, O_RDONLY | O_DIRECTORY);
- if(fd < 0)
- continue;
-
- d2 = fdopendir(fd);
- if(d2 == 0)
- close(fd);
- else {
- do_coldboot(d2, lvl + 1);
- closedir(d2);
- }
- }
-}
-
-static void coldboot(const char *path) {
- DIR *d = opendir(path);
- if(d) {
- do_coldboot(d, 0);
- closedir(d);
- }
-}
-
static int process_config(VolumeManager *vm, bool* has_adoptable) {
std::string path(android::vold::DefaultFstabPath());
fstab = fs_mgr_read_fstab(path.c_str());