1 |
Use the cgroup release_agent hook to remove cgroups automatically |
2 |
upon release. |
3 |
|
4 |
X-Gentoo-bug: 561264 |
5 |
X-Gentoo-bug-url: https://bugs.gentoo.org/show_bug.cgi?id=561264 |
6 |
--- |
7 |
bin/cgroup-release-agent | 2 ++ |
8 |
pym/_emerge/AbstractEbuildProcess.py | 14 +++++++------- |
9 |
2 files changed, 9 insertions(+), 7 deletions(-) |
10 |
create mode 100755 bin/cgroup-release-agent |
11 |
|
12 |
diff --git a/bin/cgroup-release-agent b/bin/cgroup-release-agent |
13 |
new file mode 100755 |
14 |
index 0000000..7aa6d56 |
15 |
--- /dev/null |
16 |
+++ b/bin/cgroup-release-agent |
17 |
@@ -0,0 +1,2 @@ |
18 |
+#!/bin/bash |
19 |
+exec rmdir "/sys/fs/cgroup/portage/${1}" |
20 |
diff --git a/pym/_emerge/AbstractEbuildProcess.py b/pym/_emerge/AbstractEbuildProcess.py |
21 |
index 68d96e4..2b5d9c7 100644 |
22 |
--- a/pym/_emerge/AbstractEbuildProcess.py |
23 |
+++ b/pym/_emerge/AbstractEbuildProcess.py |
24 |
@@ -89,6 +89,13 @@ class AbstractEbuildProcess(SpawnProcess): |
25 |
subprocess.check_call(['mount', '-t', 'cgroup', |
26 |
'-o', 'rw,nosuid,nodev,noexec,none,name=portage', |
27 |
'tmpfs', cgroup_portage]) |
28 |
+ with open(os.path.join( |
29 |
+ cgroup_portage, 'release_agent'), 'w') as f: |
30 |
+ f.write(os.path.join(self.settings['PORTAGE_BIN_PATH'], |
31 |
+ 'cgroup-release-agent')) |
32 |
+ with open(os.path.join( |
33 |
+ cgroup_portage, 'notify_on_release'), 'w') as f: |
34 |
+ f.write('1') |
35 |
|
36 |
cgroup_path = tempfile.mkdtemp(dir=cgroup_portage, |
37 |
prefix='%s:%s.' % (self.settings["CATEGORY"], |
38 |
@@ -313,13 +320,6 @@ class AbstractEbuildProcess(SpawnProcess): |
39 |
def _set_returncode(self, wait_retval): |
40 |
SpawnProcess._set_returncode(self, wait_retval) |
41 |
|
42 |
- if self.cgroup is not None: |
43 |
- try: |
44 |
- shutil.rmtree(self.cgroup) |
45 |
- except EnvironmentError as e: |
46 |
- if e.errno != errno.ENOENT: |
47 |
- raise |
48 |
- |
49 |
if self._exit_timeout_id is not None: |
50 |
self.scheduler.source_remove(self._exit_timeout_id) |
51 |
self._exit_timeout_id = None |
52 |
-- |
53 |
2.4.6 |