- s->cgroup_path = strjoin(s->manager->cgroup_root, "/", slice, "/", escaped, NULL);
- } else
- s->cgroup_path = strjoin(s->user->cgroup_path, "/", escaped, NULL);
-
- if (!s->cgroup_path)
- return log_oom();
- }
-
- if (!s->slice) {
- s->slice = strdup(s->user->slice);
- if (!s->slice)
- return log_oom();
- }
-
- r = session_create_one_group(s, SYSTEMD_CGROUP_CONTROLLER, s->cgroup_path);
- if (r < 0) {
- log_error("Failed to create "SYSTEMD_CGROUP_CONTROLLER":%s: %s", s->cgroup_path, strerror(-r));
- return r;
- }
-
- STRV_FOREACH(k, s->controllers) {
-
- if (strv_contains(s->reset_controllers, *k))
- continue;
-
- r = session_create_one_group(s, *k, s->cgroup_path);
- if (r < 0)
- log_warning("Failed to create %s:%s: %s", *k, s->cgroup_path, strerror(-r));
- }
-
- STRV_FOREACH(k, s->manager->controllers) {
-
- if (strv_contains(s->reset_controllers, *k) ||
- strv_contains(s->manager->reset_controllers, *k) ||
- strv_contains(s->controllers, *k))
- continue;
-
- r = session_create_one_group(s, *k, s->cgroup_path);
- if (r < 0)
- log_warning("Failed to create %s:%s: %s", *k, s->cgroup_path, strerror(-r));
- }
-
- if (s->leader > 0) {
-
- STRV_FOREACH(k, s->reset_controllers) {
- r = cg_attach(*k, "/", s->leader);
- if (r < 0)
- log_warning("Failed to reset controller %s: %s", *k, strerror(-r));
-
- }
-
- STRV_FOREACH(k, s->manager->reset_controllers) {
-
- if (strv_contains(s->reset_controllers, *k) ||
- strv_contains(s->controllers, *k))
- continue;
+ r = manager_start_scope(s->manager, scope, s->leader, s->user->slice, description, "systemd-user-sessions.service", kill_mode, &error, &job);
+ if (r < 0) {
+ log_error("Failed to start session scope %s: %s %s",
+ scope, bus_error_message(&error, r), error.name);
+ free(scope);
+ return r;
+ } else {
+ s->scope = scope;