chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
journal: automatically rotate journal files if the data hash table is full > 75%
[elogind.git]
/
src
/
core
/
cgroup.c
diff --git
a/src/core/cgroup.c
b/src/core/cgroup.c
index 7a5f673a7ad0c7e4731dda7bd3f9b08baf8a2254..aaea96b820a595069e26d96195d9a2b0785a63ec 100644
(file)
--- a/
src/core/cgroup.c
+++ b/
src/core/cgroup.c
@@
-30,6
+30,8
@@
#include "cgroup.h"
#include "cgroup-util.h"
#include "log.h"
#include "cgroup.h"
#include "cgroup-util.h"
#include "log.h"
+#include "strv.h"
+#include "path-util.h"
int cgroup_bonding_realize(CGroupBonding *b) {
int r;
int cgroup_bonding_realize(CGroupBonding *b) {
int r;
@@
-118,7
+120,7
@@
int cgroup_bonding_install(CGroupBonding *b, pid_t pid, const char *cgroup_suffi
assert(pid >= 0);
if (cgroup_suffix) {
assert(pid >= 0);
if (cgroup_suffix) {
- p = join(b->path, "/", cgroup_suffix, NULL);
+ p =
str
join(b->path, "/", cgroup_suffix, NULL);
if (!p)
return -ENOMEM;
if (!p)
return -ENOMEM;
@@
-193,7
+195,7
@@
int cgroup_bonding_set_task_access_list(CGroupBonding *first, mode_t mode, uid_t
return 0;
}
return 0;
}
-int cgroup_bonding_kill(CGroupBonding *b, int sig, bool sigcont, Set *s, const char *cgroup_suffix) {
+int cgroup_bonding_kill(CGroupBonding *b, int sig, bool sigcont,
bool rem,
Set *s, const char *cgroup_suffix) {
char *p = NULL;
const char *path;
int r;
char *p = NULL;
const char *path;
int r;
@@
-206,7
+208,7
@@
int cgroup_bonding_kill(CGroupBonding *b, int sig, bool sigcont, Set *s, const c
return 0;
if (cgroup_suffix) {
return 0;
if (cgroup_suffix) {
- p = join(b->path, "/", cgroup_suffix, NULL);
+ p =
str
join(b->path, "/", cgroup_suffix, NULL);
if (!p)
return -ENOMEM;
if (!p)
return -ENOMEM;
@@
-214,13
+216,13
@@
int cgroup_bonding_kill(CGroupBonding *b, int sig, bool sigcont, Set *s, const c
} else
path = b->path;
} else
path = b->path;
- r = cg_kill_recursive(b->controller, path, sig, sigcont, true,
false
, s);
+ r = cg_kill_recursive(b->controller, path, sig, sigcont, true,
rem
, s);
free(p);
return r;
}
free(p);
return r;
}
-int cgroup_bonding_kill_list(CGroupBonding *first, int sig, bool sigcont, Set *s, const char *cgroup_suffix) {
+int cgroup_bonding_kill_list(CGroupBonding *first, int sig, bool sigcont,
bool rem,
Set *s, const char *cgroup_suffix) {
CGroupBonding *b;
Set *allocated_set = NULL;
int ret = -EAGAIN, r;
CGroupBonding *b;
Set *allocated_set = NULL;
int ret = -EAGAIN, r;
@@
-233,7
+235,7
@@
int cgroup_bonding_kill_list(CGroupBonding *first, int sig, bool sigcont, Set *s
return -ENOMEM;
LIST_FOREACH(by_unit, b, first) {
return -ENOMEM;
LIST_FOREACH(by_unit, b, first) {
- r = cgroup_bonding_kill(b, sig, sigcont, s, cgroup_suffix);
+ r = cgroup_bonding_kill(b, sig, sigcont,
rem,
s, cgroup_suffix);
if (r < 0) {
if (r == -EAGAIN || r == -ESRCH)
continue;
if (r < 0) {
if (r == -EAGAIN || r == -ESRCH)
continue;
@@
-305,7
+307,8
@@
int manager_setup_cgroup(Manager *m) {
}
/* 1. Determine hierarchy */
}
/* 1. Determine hierarchy */
- if ((r = cg_get_by_pid(SYSTEMD_CGROUP_CONTROLLER, 0, ¤t)) < 0) {
+ r = cg_get_by_pid(SYSTEMD_CGROUP_CONTROLLER, 0, ¤t);
+ if (r < 0) {
log_error("Cannot determine cgroup we are running in: %s", strerror(-r));
goto finish;
}
log_error("Cannot determine cgroup we are running in: %s", strerror(-r));
goto finish;
}
@@
-334,7
+337,8
@@
int manager_setup_cgroup(Manager *m) {
}
/* 2. Show data */
}
/* 2. Show data */
- if ((r = cg_get_path(SYSTEMD_CGROUP_CONTROLLER, m->cgroup_hierarchy, NULL, &path)) < 0) {
+ r = cg_get_path(SYSTEMD_CGROUP_CONTROLLER, m->cgroup_hierarchy, NULL, &path);
+ if (r < 0) {
log_error("Cannot find cgroup mount point: %s", strerror(-r));
goto finish;
}
log_error("Cannot find cgroup mount point: %s", strerror(-r));
goto finish;
}
@@
-342,7
+346,8
@@
int manager_setup_cgroup(Manager *m) {
log_debug("Using cgroup controller " SYSTEMD_CGROUP_CONTROLLER ". File system hierarchy is at %s.", path);
/* 3. Install agent */
log_debug("Using cgroup controller " SYSTEMD_CGROUP_CONTROLLER ". File system hierarchy is at %s.", path);
/* 3. Install agent */
- if ((r = cg_install_release_agent(SYSTEMD_CGROUP_CONTROLLER, SYSTEMD_CGROUP_AGENT_PATH)) < 0)
+ r = cg_install_release_agent(SYSTEMD_CGROUP_CONTROLLER, SYSTEMD_CGROUP_AGENT_PATH);
+ if (r < 0)
log_warning("Failed to install release agent, ignoring: %s", strerror(-r));
else if (r > 0)
log_debug("Installed release agent.");
log_warning("Failed to install release agent, ignoring: %s", strerror(-r));
else if (r > 0)
log_debug("Installed release agent.");
@@
-350,7
+355,8
@@
int manager_setup_cgroup(Manager *m) {
log_debug("Release agent already installed.");
/* 4. Realize the group */
log_debug("Release agent already installed.");
/* 4. Realize the group */
- if ((r = cg_create_and_attach(SYSTEMD_CGROUP_CONTROLLER, m->cgroup_hierarchy, 0)) < 0) {
+ r = cg_create_and_attach(SYSTEMD_CGROUP_CONTROLLER, m->cgroup_hierarchy, 0);
+ if (r < 0) {
log_error("Failed to create root cgroup hierarchy: %s", strerror(-r));
goto finish;
}
log_error("Failed to create root cgroup hierarchy: %s", strerror(-r));
goto finish;
}
@@
-359,7
+365,8
@@
int manager_setup_cgroup(Manager *m) {
if (m->pin_cgroupfs_fd >= 0)
close_nointr_nofail(m->pin_cgroupfs_fd);
if (m->pin_cgroupfs_fd >= 0)
close_nointr_nofail(m->pin_cgroupfs_fd);
- if ((m->pin_cgroupfs_fd = open(path, O_RDONLY|O_CLOEXEC|O_DIRECTORY|O_NOCTTY|O_NONBLOCK)) < 0) {
+ m->pin_cgroupfs_fd = open(path, O_RDONLY|O_CLOEXEC|O_DIRECTORY|O_NOCTTY|O_NONBLOCK);
+ if (r < 0) {
log_error("Failed to open pin file: %m");
r = -errno;
goto finish;
log_error("Failed to open pin file: %m");
r = -errno;
goto finish;
@@
-367,6
+374,8
@@
int manager_setup_cgroup(Manager *m) {
log_debug("Created root group.");
log_debug("Created root group.");
+ cg_shorten_controllers(m->default_controllers);
+
finish:
free(current);
free(path);
finish:
free(current);
free(path);