nspawn: suffix the nspawn cgroups with ".nspawn"
As discussed with Dan Berrange it's a good idea to suffix all objects in the cgroup tree with ".something", so that when the system is partitioned using a resource management tool we can drop objects of different types into the same partition directory without generate namespace conflicts. We'l add this to the Pax Control Group document as soon as write access to the fdo wiki is restored.
This commit is contained in:
parent
dc2c75602d
commit
aff38e74bd
|
@ -1298,7 +1298,7 @@ int main(int argc, char *argv[]) {
|
|||
goto finish;
|
||||
}
|
||||
|
||||
newcg = strjoin(machine_root, "/", arg_machine, NULL);
|
||||
newcg = strjoin(machine_root, "/", arg_machine, ".nspawn", NULL);
|
||||
if (!newcg) {
|
||||
log_error("Failed to allocate cgroup path.");
|
||||
goto finish;
|
||||
|
|
|
@ -1320,7 +1320,7 @@ int cg_pid_get_user_unit(pid_t pid, char **unit) {
|
|||
|
||||
int cg_path_get_machine_name(const char *path, char **machine) {
|
||||
const char *e, *n;
|
||||
char *s;
|
||||
char *s, *dot;
|
||||
|
||||
assert(path);
|
||||
assert(machine);
|
||||
|
@ -1337,6 +1337,10 @@ int cg_path_get_machine_name(const char *path, char **machine) {
|
|||
if (!s)
|
||||
return -ENOMEM;
|
||||
|
||||
dot = strrchr(s, '.');
|
||||
if (dot)
|
||||
*dot = 0;
|
||||
|
||||
*machine = s;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -89,11 +89,51 @@ static void test_get_paths(void) {
|
|||
log_info("Machine = %s", d);
|
||||
}
|
||||
|
||||
static void test_proc(void) {
|
||||
_cleanup_closedir_ DIR *d = NULL;
|
||||
struct dirent *de;
|
||||
int r;
|
||||
|
||||
d = opendir("/proc");
|
||||
assert_se(d);
|
||||
|
||||
FOREACH_DIRENT(de, d, break) {
|
||||
_cleanup_free_ char *path = NULL, *path_shifted = NULL, *session = NULL, *unit = NULL, *user_unit = NULL, *machine = NULL, *prefix = NULL;
|
||||
pid_t pid;
|
||||
|
||||
if (de->d_type != DT_DIR &&
|
||||
de->d_type != DT_UNKNOWN)
|
||||
continue;
|
||||
|
||||
r = parse_pid(de->d_name, &pid);
|
||||
if (r < 0)
|
||||
continue;
|
||||
|
||||
cg_pid_get_path(SYSTEMD_CGROUP_CONTROLLER, pid, &path);
|
||||
cg_pid_get_path_shifted(pid, &prefix, &path_shifted);
|
||||
cg_pid_get_session(pid, &session);
|
||||
cg_pid_get_unit(pid, &unit);
|
||||
cg_pid_get_user_unit(pid, &user_unit);
|
||||
cg_pid_get_machine_name(pid, &machine);
|
||||
|
||||
printf("%lu\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",
|
||||
(unsigned long) pid,
|
||||
path,
|
||||
prefix,
|
||||
path_shifted,
|
||||
session,
|
||||
unit,
|
||||
user_unit,
|
||||
machine);
|
||||
}
|
||||
}
|
||||
|
||||
int main(void) {
|
||||
test_path_decode_unit();
|
||||
test_path_get_unit();
|
||||
test_path_get_user_unit();
|
||||
test_get_paths();
|
||||
test_proc();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue