cgroup: small cleanups and coding style fixes

A number of simplications and adjustments to brings things closer to our
coding style.
This commit is contained in:
Lennart Poettering 2015-09-01 18:02:43 +02:00
parent f01327adb7
commit e155a0aa04
2 changed files with 37 additions and 25 deletions

View file

@ -29,7 +29,6 @@
#include <sys/types.h> #include <sys/types.h>
#include <ftw.h> #include <ftw.h>
#include "cgroup-util.h"
#include "set.h" #include "set.h"
#include "macro.h" #include "macro.h"
#include "util.h" #include "util.h"
@ -41,6 +40,7 @@
#include "special.h" #include "special.h"
#include "mkdir.h" #include "mkdir.h"
#include "login-util.h" #include "login-util.h"
#include "cgroup-util.h"
int cg_enumerate_processes(const char *controller, const char *path, FILE **_f) { int cg_enumerate_processes(const char *controller, const char *path, FILE **_f) {
_cleanup_free_ char *fs = NULL; _cleanup_free_ char *fs = NULL;
@ -197,7 +197,7 @@ int cg_kill(const char *controller, const char *path, int sig, bool sigcont, boo
ret = -errno; ret = -errno;
} else { } else {
if (sigcont && sig != SIGKILL) if (sigcont && sig != SIGKILL)
kill(pid, SIGCONT); (void) kill(pid, SIGCONT);
if (ret == 0) if (ret == 0)
ret = 1; ret = 1;
@ -233,7 +233,7 @@ int cg_kill(const char *controller, const char *path, int sig, bool sigcont, boo
int cg_kill_recursive(const char *controller, const char *path, int sig, bool sigcont, bool ignore_self, bool rem, Set *s) { int cg_kill_recursive(const char *controller, const char *path, int sig, bool sigcont, bool ignore_self, bool rem, Set *s) {
_cleanup_set_free_ Set *allocated_set = NULL; _cleanup_set_free_ Set *allocated_set = NULL;
_cleanup_closedir_ DIR *d = NULL; _cleanup_closedir_ DIR *d = NULL;
int r, ret = 0; int r, ret;
char *fn; char *fn;
assert(path); assert(path);
@ -264,7 +264,7 @@ int cg_kill_recursive(const char *controller, const char *path, int sig, bool si
return -ENOMEM; return -ENOMEM;
r = cg_kill_recursive(controller, p, sig, sigcont, ignore_self, rem, s); r = cg_kill_recursive(controller, p, sig, sigcont, ignore_self, rem, s);
if (ret >= 0 && r != 0) if (r != 0 && ret >= 0)
ret = r; ret = r;
} }
@ -390,12 +390,8 @@ int cg_migrate_recursive(
p = strjoin(pfrom, "/", fn, NULL); p = strjoin(pfrom, "/", fn, NULL);
free(fn); free(fn);
if (!p) { if (!p)
if (ret >= 0) return -ENOMEM;
return -ENOMEM;
return ret;
}
r = cg_migrate_recursive(cfrom, p, cto, pto, ignore_self, rem); r = cg_migrate_recursive(cfrom, p, cto, pto, ignore_self, rem);
if (r != 0 && ret >= 0) if (r != 0 && ret >= 0)
@ -436,13 +432,15 @@ int cg_migrate_recursive_fallback(
/* This didn't work? Then let's try all prefixes of the destination */ /* This didn't work? Then let's try all prefixes of the destination */
PATH_FOREACH_PREFIX(prefix, pto) { PATH_FOREACH_PREFIX(prefix, pto) {
r = cg_migrate_recursive(cfrom, pfrom, cto, prefix, ignore_self, rem); int q;
if (r >= 0)
break; q = cg_migrate_recursive(cfrom, pfrom, cto, prefix, ignore_self, rem);
if (q >= 0)
return q;
} }
} }
return 0; return r;
} }
static const char *normalize_controller(const char *controller) { static const char *normalize_controller(const char *controller) {
@ -557,7 +555,7 @@ static int trim_cb(const char *path, const struct stat *sb, int typeflag, struct
if (ftwbuf->level < 1) if (ftwbuf->level < 1)
return 0; return 0;
rmdir(path); (void) rmdir(path);
return 0; return 0;
} }
@ -572,8 +570,14 @@ int cg_trim(const char *controller, const char *path, bool delete_root) {
return r; return r;
errno = 0; errno = 0;
if (nftw(fs, trim_cb, 64, FTW_DEPTH|FTW_MOUNT|FTW_PHYS) != 0) if (nftw(fs, trim_cb, 64, FTW_DEPTH|FTW_MOUNT|FTW_PHYS) != 0) {
r = errno ? -errno : -EIO; if (errno == ENOENT)
r = 0;
else if (errno != 0)
r = -errno;
else
r = -EIO;
}
if (delete_root) { if (delete_root) {
if (rmdir(fs) < 0 && errno != ENOENT) if (rmdir(fs) < 0 && errno != ENOENT)
@ -672,13 +676,15 @@ int cg_attach_fallback(const char *controller, const char *path, pid_t pid) {
* the destination */ * the destination */
PATH_FOREACH_PREFIX(prefix, path) { PATH_FOREACH_PREFIX(prefix, path) {
r = cg_attach(controller, prefix, pid); int q;
if (r >= 0)
break; q = cg_attach(controller, prefix, pid);
if (q >= 0)
return q;
} }
} }
return 0; return r;
} }
int cg_set_group_access( int cg_set_group_access(
@ -691,7 +697,8 @@ int cg_set_group_access(
_cleanup_free_ char *fs = NULL; _cleanup_free_ char *fs = NULL;
int r; int r;
assert(path); if (mode == MODE_INVALID && uid == UID_INVALID && gid == GID_INVALID)
return 0;
if (mode != MODE_INVALID) if (mode != MODE_INVALID)
mode &= 0777; mode &= 0777;
@ -827,7 +834,7 @@ int cg_install_release_agent(const char *controller, const char *agent) {
return r; return r;
sc = strstrip(contents); sc = strstrip(contents);
if (sc[0] == 0) { if (isempty(sc)) {
r = write_string_file(fs, agent, 0); r = write_string_file(fs, agent, 0);
if (r < 0) if (r < 0)
return r; return r;
@ -1877,6 +1884,11 @@ int cg_kernel_controllers(Set *controllers) {
assert(controllers); assert(controllers);
/* Determines the full list of kernel-known controllers. Might
* include controllers we don't actually support, arbitrary
* named hierarchies and controllers that aren't currently
* accessible (because not mounted). */
f = fopen("/proc/cgroups", "re"); f = fopen("/proc/cgroups", "re");
if (!f) { if (!f) {
if (errno == ENOENT) if (errno == ENOENT)
@ -1897,7 +1909,7 @@ int cg_kernel_controllers(Set *controllers) {
if (feof(f)) if (feof(f))
break; break;
if (ferror(f) && errno) if (ferror(f) && errno != 0)
return -errno; return -errno;
return -EBADMSG; return -EBADMSG;

View file

@ -2043,7 +2043,7 @@ finish:
* kernel; at this point, we will not listen to the * kernel; at this point, we will not listen to the
* signals anyway */ * signals anyway */
if (detect_container(NULL) <= 0) if (detect_container(NULL) <= 0)
cg_uninstall_release_agent(SYSTEMD_CGROUP_CONTROLLER); (void) cg_uninstall_release_agent(SYSTEMD_CGROUP_CONTROLLER);
execve(SYSTEMD_SHUTDOWN_BINARY_PATH, (char **) command_line, env_block); execve(SYSTEMD_SHUTDOWN_BINARY_PATH, (char **) command_line, env_block);
log_error_errno(errno, "Failed to execute shutdown binary, %s: %m", log_error_errno(errno, "Failed to execute shutdown binary, %s: %m",