diff options
author | Andy Wingo <wingo@pobox.com> | 2015-08-23 11:50:26 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2015-08-23 11:50:26 +0200 |
commit | 08e1896fb7a00a758c3a71a99e54f0ff69da2fbd (patch) | |
tree | d958aed788d80d9bc7bb3ded3f8c9ca1aef20f7b /src/login/logind-user.c | |
parent | 16e56d9f1ae28f17cf360a6daaab668b6cd66e61 (diff) |
Remove systemd subscription and user/session units
This removes attempts by logind to listen to systemd messages over the
bus, and to start and/or manage units associated with sessions and
users.
Diffstat (limited to 'src/login/logind-user.c')
-rw-r--r-- | src/login/logind-user.c | 174 |
1 files changed, 2 insertions, 172 deletions
diff --git a/src/login/logind-user.c b/src/login/logind-user.c index c0d0b967a..539c316ad 100644 --- a/src/login/logind-user.c +++ b/src/login/logind-user.c @@ -81,19 +81,6 @@ void user_free(User *u) { while (u->sessions) session_free(u->sessions); - if (u->slice) { - hashmap_remove(u->manager->user_units, u->slice); - free(u->slice); - } - - if (u->service) { - hashmap_remove(u->manager->user_units, u->service); - free(u->service); - } - - free(u->slice_job); - free(u->service_job); - free(u->runtime_path); hashmap_remove(u->manager->users, UID_TO_PTR(u->uid)); @@ -134,16 +121,6 @@ int user_save(User *u) { if (u->runtime_path) fprintf(f, "RUNTIME=%s\n", u->runtime_path); - if (u->service) - fprintf(f, "SERVICE=%s\n", u->service); - if (u->service_job) - fprintf(f, "SERVICE_JOB=%s\n", u->service_job); - - if (u->slice) - fprintf(f, "SLICE=%s\n", u->slice); - if (u->slice_job) - fprintf(f, "SLICE_JOB=%s\n", u->slice_job); - if (u->display) fprintf(f, "DISPLAY=%s\n", u->display->id); @@ -265,10 +242,6 @@ int user_load(User *u) { r = parse_env_file(u->state_file, NEWLINE, "RUNTIME", &u->runtime_path, - "SERVICE", &u->service, - "SERVICE_JOB", &u->service_job, - "SLICE", &u->slice, - "SLICE_JOB", &u->slice_job, "DISPLAY", &display, "REALTIME", &realtime, "MONOTONIC", &monotonic, @@ -365,72 +338,6 @@ fail: return r; } -static int user_start_slice(User *u) { - char *job; - int r; - - assert(u); - - if (!u->slice) { - _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL; - char lu[DECIMAL_STR_MAX(uid_t) + 1], *slice; - sprintf(lu, UID_FMT, u->uid); - - r = build_subslice(SPECIAL_USER_SLICE, lu, &slice); - if (r < 0) - return r; - - r = manager_start_unit(u->manager, slice, &error, &job); - if (r < 0) { - log_error("Failed to start user slice: %s", bus_error_message(&error, r)); - free(slice); - } else { - u->slice = slice; - - free(u->slice_job); - u->slice_job = job; - } - } - - if (u->slice) - hashmap_put(u->manager->user_units, u->slice, u); - - return 0; -} - -static int user_start_service(User *u) { - _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL; - char *job; - int r; - - assert(u); - - if (!u->service) { - char lu[DECIMAL_STR_MAX(uid_t) + 1], *service; - sprintf(lu, UID_FMT, u->uid); - - service = unit_name_build("user", lu, ".service"); - if (!service) - return log_oom(); - - r = manager_start_unit(u->manager, service, &error, &job); - if (r < 0) { - log_error("Failed to start user service: %s", bus_error_message(&error, r)); - free(service); - } else { - u->service = service; - - free(u->service_job); - u->service_job = job; - } - } - - if (u->service) - hashmap_put(u->manager->user_units, u->service, u); - - return 0; -} - int user_start(User *u) { int r; @@ -446,18 +353,6 @@ int user_start(User *u) { if (r < 0) return r; -#if 0 - /* Create cgroup */ - r = user_start_slice(u); - if (r < 0) - return r; - - /* Spawn user systemd */ - r = user_start_service(u); - if (r < 0) - return r; -#endif - if (!dual_timestamp_is_set(&u->timestamp)) dual_timestamp_get(&u->timestamp); @@ -471,50 +366,6 @@ int user_start(User *u) { return 0; } -static int user_stop_slice(User *u) { - _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL; - char *job; - int r; - - assert(u); - - if (!u->slice) - return 0; - - r = manager_stop_unit(u->manager, u->slice, &error, &job); - if (r < 0) { - log_error("Failed to stop user slice: %s", bus_error_message(&error, r)); - return r; - } - - free(u->slice_job); - u->slice_job = job; - - return r; -} - -static int user_stop_service(User *u) { - _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL; - char *job; - int r; - - assert(u); - - if (!u->service) - return 0; - - r = manager_stop_unit(u->manager, u->service, &error, &job); - if (r < 0) { - log_error("Failed to stop user service: %s", bus_error_message(&error, r)); - return r; - } - - free(u->service_job); - u->service_job = job; - - return r; -} - static int user_remove_runtime_path(User *u) { int r; @@ -561,16 +412,6 @@ int user_stop(User *u, bool force) { r = k; } - /* Kill systemd */ - k = user_stop_service(u); - if (k < 0) - r = k; - - /* Kill cgroup */ - k = user_stop_slice(u); - if (k < 0) - r = k; - u->stopping = true; user_save(u); @@ -677,12 +518,6 @@ bool user_check_gc(User *u, bool drop_not_started) { if (user_check_linger_file(u) > 0) return true; - if (u->slice_job && manager_job_is_active(u->manager, u->slice_job)) - return true; - - if (u->service_job && manager_job_is_active(u->manager, u->service_job)) - return true; - return false; } @@ -704,9 +539,6 @@ UserState user_get_state(User *u) { if (u->stopping) return USER_CLOSING; - if (u->slice_job || u->service_job) - return USER_OPENING; - if (u->sessions) { bool all_closing = true; @@ -732,10 +564,8 @@ UserState user_get_state(User *u) { int user_kill(User *u, int signo) { assert(u); - if (!u->slice) - return -ESRCH; - - return manager_kill_unit(u->manager, u->slice, KILL_ALL, signo, NULL); + /* FIXME: No way to kill a user without systemd. */ + return -ESRCH; } void user_elect_display(User *u) { |