Merge "Revert "libprocessgroup: make sure SetupCgroups is called once and only by init"" am: eac1220fba
am: 138ab0ec52
Change-Id: I4064836753d4c7eb19762c0258d3701619246dc5
This commit is contained in:
commit
f7c4bfd616
1 changed files with 3 additions and 19 deletions
|
|
@ -229,11 +229,9 @@ static bool SetupCgroup(const CgroupDescriptor&) {
|
||||||
|
|
||||||
static bool WriteRcFile(const std::map<std::string, CgroupDescriptor>& descriptors) {
|
static bool WriteRcFile(const std::map<std::string, CgroupDescriptor>& descriptors) {
|
||||||
std::string cgroup_rc_path = StringPrintf("%s/%s", CGROUPS_RC_DIR, CgroupMap::CGROUPS_RC_FILE);
|
std::string cgroup_rc_path = StringPrintf("%s/%s", CGROUPS_RC_DIR, CgroupMap::CGROUPS_RC_FILE);
|
||||||
// Let init keep the FD open to prevent file mappings from becoming invalid
|
unique_fd fd(TEMP_FAILURE_RETRY(open(cgroup_rc_path.c_str(),
|
||||||
// in case the file gets deleted somehow
|
O_CREAT | O_WRONLY | O_TRUNC | O_CLOEXEC,
|
||||||
static unique_fd fd(TEMP_FAILURE_RETRY(open(cgroup_rc_path.c_str(),
|
S_IRUSR | S_IRGRP | S_IROTH)));
|
||||||
O_CREAT | O_WRONLY | O_TRUNC | O_CLOEXEC,
|
|
||||||
S_IRUSR | S_IRGRP | S_IROTH)));
|
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
PLOG(ERROR) << "open() failed for " << cgroup_rc_path;
|
PLOG(ERROR) << "open() failed for " << cgroup_rc_path;
|
||||||
return false;
|
return false;
|
||||||
|
|
@ -414,19 +412,6 @@ void CgroupMap::Print() const {
|
||||||
bool CgroupMap::SetupCgroups() {
|
bool CgroupMap::SetupCgroups() {
|
||||||
std::map<std::string, CgroupDescriptor> descriptors;
|
std::map<std::string, CgroupDescriptor> descriptors;
|
||||||
|
|
||||||
if (getpid() != 1) {
|
|
||||||
LOG(ERROR) << "Cgroup setup can be done only by init process";
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Make sure we do this only one time. No need for std::call_once because
|
|
||||||
// init is a single-threaded process
|
|
||||||
static bool setup_done = false;
|
|
||||||
if (setup_done) {
|
|
||||||
LOG(WARNING) << "Attempt to call SetupCgroups more than once";
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// load cgroups.json file
|
// load cgroups.json file
|
||||||
if (!ReadDescriptors(&descriptors)) {
|
if (!ReadDescriptors(&descriptors)) {
|
||||||
LOG(ERROR) << "Failed to load cgroup description file";
|
LOG(ERROR) << "Failed to load cgroup description file";
|
||||||
|
|
@ -464,7 +449,6 @@ bool CgroupMap::SetupCgroups() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_done = true;
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue