1
0
mirror of https://github.com/systemd/systemd.git synced 2024-11-02 10:51:20 +03:00
Commit Graph

35879 Commits

Author SHA1 Message Date
Yu Watanabe
68db4a0caf test: add test for subsystem filtering of sd_device_enumerator 2018-10-13 21:45:50 +09:00
Yu Watanabe
7ef670c34a hashmap: introduce hashmap_first_key_and_value() and friends 2018-10-13 21:45:50 +09:00
Lennart Poettering
0e8d9c0c4d systemctl: clean up start_unit_one() error handling
Let's split exit code handling in two: "r" is only used for errno-style
errors, and "ret" is used for exit() codes. Then, let's use EXIT_SUCCESS
for checking whether the latter is already used.

This way it should always be clear what kind of error we are processing,
and when we propaate one into the other.

Moreover this allows us to drop "q" form all inner loops, avoiding
confusion when to use "q" and when "r" to store received errors.

Fixes: #9704
2018-10-13 14:38:46 +02:00
Lennart Poettering
8b7ec7bbfa systemctl: add missing OOM check 2018-10-13 14:34:56 +02:00
Lennart Poettering
b921711248 logind: validate /run/user/1000 before we set it
Let's be safe than sorry, in particular as logind doesn't set it up
anymore, but user-runtime-dir@.service does, and logind doesn't really
track success of that.
2018-10-13 13:01:08 +02:00
Lennart Poettering
93d4cb09d5 core: fix unfortunate typo in unit_is_unneeded()
Follow-up for a3c1168ac2.
2018-10-13 13:01:08 +02:00
Lennart Poettering
cf99f8eacf core: make destructive transaction error a bit more useful 2018-10-13 13:01:08 +02:00
Lennart Poettering
0689812331 update TODO 2018-10-13 13:01:08 +02:00
Lennart Poettering
964c4eda5b man: also use "yes"/"no" rather than "true"/"false" in man pages
We usually use yes/no in all our unit files, do the same in the man
pages.

Triggered by:

https://github.com/systemd/systemd/pull/9824#issuecomment-420729987
2018-10-13 12:59:29 +02:00
Lennart Poettering
2d6718bf3d units: use =yes rather than =true everywhere
So far we always used "yes" instead of "true" in all our unit files,
except for one outlier. Let's do this here too. No change in behaviour
whatsoever, except that it looks prettier ;-)
2018-10-13 12:59:29 +02:00
Lennart Poettering
4e5b605af2 logind: automatically GC lingering users for who now user@.service (nor slice, not runtime dir service) is running anymore
This heavily borrows from @intelfx' PR #5546, but watches all three
units that are associated with a user now: the slice, the user@.service
and user-runtime-dir@.service.

The logic and reasoning behind it is the same though: there's no value
in keeping lingering users around if all their three services are gone.

Replaces: #5546
Fixes: #4162
2018-10-13 12:59:29 +02:00
Lennart Poettering
6996df9b86 logind: improve error propagation of user_check_linger_file()
Let's make this a bit prettier, and propagate unexpected access() errors
correctly.

(The callers of this function will suppress them, but it's nicer of they
do that, rather than us doing that twice in both the callers and the
callees)
2018-10-13 12:59:29 +02:00
Lennart Poettering
d5ac9d0602 logind: add a RequiresMountsFor= dependency from the session scope unit to the home directory of the user
This is useful so that during shutdown scope units are always terminated
before the mounts necessary for the home directory.

(Ideally we'd also add a similar dependency from the user@.service
instance to the home directory, but this isn't as easy as that service
is defined statically and not dynamically, and hence not easy to modify
dynamically, in particular when it comes to deps)
2018-10-13 12:59:29 +02:00
Lennart Poettering
07ee5adb35 logind: change user-runtime-dir to query runtime dir size from logind via the bus
I think this is a slightly cleaner approach than parsing the
configuration file at multiple places, as this way there's only a single
reload cycle for logind.conf, and that's systemd-logind.service's
runtime.

This means that logind and dbus become a requirement of
user-runtime-dir, but given that XDG_RUNTIME_DIR is not set anyway
without logind and dbus around this isn't really any limitation.

This also simplifies linking a bit as this means user-runtime-dir
doesn't have to link against any code of logind itself.
2018-10-13 12:59:29 +02:00
Lennart Poettering
3d0ef5c7e0 logind: optionally watch utmp for login data
This allows us to determine the TTY an ssh session is for, which is
useful to to proper idle detection for ssh sessions.

Fixes: #9622
2018-10-13 12:59:29 +02:00
Lennart Poettering
238794b150 logind: add hashtable for finding session by leader PID
This is useful later on, when we quickly want to find the session for a
leader PID.
2018-10-13 12:59:29 +02:00
Lennart Poettering
9afe9efb93 logind: optionally, keep the user@.service instance for eached logged in user around for a while
This should speed up rapid logout/login cycles a bit.

By default this timeout is now set to 10s.

Fixes: #8410
Replaces: #4434
2018-10-13 12:59:29 +02:00
Lennart Poettering
061c6607a9 logind: minor session time handling tweaks 2018-10-13 12:59:29 +02:00
Lennart Poettering
25a1ab4ed4 logind: rework how we manage the slice and user-runtime-dir@.service unit for each user
Instead of managing it explicitly, let's simplify things and rely on
regular Wants=/Requires= dependencies to pull in these units from
user@.service and the session scope, and StopWhenUneeded= to stop these
auxiliary units again. This way, they can be pulled in easily by
unrelated units too.

This simplifies things quite a bit: for each session we now only need to
manage the session scope, and for each user the user@.service, the other
units are not something we need to manage anymore.

This patch also makes sure that if user@.service of a user is masked we
will continue to work, and user-runtime-dir@.service will still be
correctly pulled in, as it is now a dependency of the scope unit.

Fixes: #9461
Replaces: #5546
2018-10-13 12:59:29 +02:00
Lennart Poettering
ea3a7cf6c3 logind: don't clobber bus error structure if we don't fail 2018-10-13 12:59:29 +02:00
Lennart Poettering
e6958b7ea3 logind: propagate session stop errors
Let's propagate errors from stopping sessions via seat_stop(). This is
similar to how we propagate such errors in user_stop() for all sessions
associated with a user.

Note that we propagate these errors, but we don't abort the function.
2018-10-13 12:59:29 +02:00
Lennart Poettering
b1951bc83f logind: introduce little helper that checks whether a session is ready 2018-10-13 12:59:29 +02:00
Lennart Poettering
1b88ed3b7d logind: use TAKE_PTR() where we can 2018-10-13 12:59:29 +02:00
Lennart Poettering
d5ddc93015 logind: prefer strjoin() over asprintf() 2018-10-13 12:59:29 +02:00
Lennart Poettering
709d058756 logind: don't rely on downgrade-to-bool 2018-10-13 12:59:29 +02:00
Lennart Poettering
75bbdf478c logind: voidify a few calls 2018-10-13 12:59:29 +02:00
Lennart Poettering
e555d12635 logind: make better use of logging functions 2018-10-13 12:59:29 +02:00
Lennart Poettering
04857cd801 logind: never elect a session that is stopping as display 2018-10-13 12:59:29 +02:00
Lennart Poettering
bd26aee1f6 logind: make unit/job active checking more debuggable
Let's log the error messages if we get any at debug level.
2018-10-13 12:59:29 +02:00
Lennart Poettering
74fb9617a8 man: add missing space 2018-10-13 12:59:29 +02:00
Lennart Poettering
190128e407 sd-bus: add new API call sd_bus_error_move()
This new call move an sd_bus_error into another one.
2018-10-13 12:59:29 +02:00
Lennart Poettering
cce08496e7 logind: fix bad error propagation 2018-10-13 12:59:29 +02:00
Lennart Poettering
d88ffeeeef logind: correct bad clean-up path 2018-10-13 12:59:29 +02:00
Lennart Poettering
d865bc024b logind: save/restore User object's "stopping" field during restarts
Whether we are stopping or not is highly relevant, hence don't forget it
across restarts.
2018-10-13 12:59:29 +02:00
Lennart Poettering
0b6d55cae9 logind: improve logging in manager_connect_console()
let's make sure we log about every failure

Also, complain about systems where /dev/tty0 exists but
/sys/class/tty/tty0/active does not. Such systems (usually container
environments) are pretty broken as they mount something that is not a VC
to /dev/tty0 and they really shouldn't.

Systems should either have a VC or not, but not badly fake one by
mounting things wildly.

This just adds a warning message, as before we'll simply turn off VC
handling in this case.
2018-10-13 12:59:29 +02:00
Lennart Poettering
b25ba6cf67 logind: initialize Manager object with structure initialization too 2018-10-13 12:59:29 +02:00
Lennart Poettering
14df094a51 units: improve Description= string a bit
Let's not use the word "wrapper", as it's not clear what that is, and in
some way any unit file is a "wrapper"... let's simply say that it's
about the runtime directory.
2018-10-13 12:59:29 +02:00
Lennart Poettering
1007473b49 units: set StopWhenUnneeded= for the user slice units too
We'd like them to go away, just like the user-runtime-dir@.service when
they aren't needed anymore.
2018-10-13 12:59:29 +02:00
Lennart Poettering
4417640013 logind: turn of stdio locking when writing session files too
This just copies what we already do for user and seat files to session
files.
2018-10-13 12:59:29 +02:00
Lennart Poettering
1c8280fd47 logind: fix serialization/deserialization of user's "display session"
Previously this was serialized as part of the user object. This didn't
work however, as we load users first, and sessions seconds and hence
referencing a session from the user load logic cannot work.

Fix this by storing an IS_DISPLAY property along with each session, and
make the session with this set display session when it is loaded.
2018-10-13 12:59:29 +02:00
Lennart Poettering
8c29a45709 logind: rework Seat/Session/User object allocation and freeing a bit
Let's update things a bit to follow current practices:

- User structure initialization rather than zero-initialized allocation

- Always propagate proper errors from allocation functions

- Use _cleanup_ for freeing objects when allocation fails half-way

- Make destructors return NULL
2018-10-13 12:59:29 +02:00
Lennart Poettering
ee7b9f1dfc format-table: don't use unsigned when there's no point in it
CID 1394372
2018-10-13 12:37:13 +02:00
Lennart Poettering
c504106c35 journal-upload: check for overflow
CID 1394386
2018-10-13 12:37:13 +02:00
Lennart Poettering
0b2c35b812 wait-online: more voidifyin of sd_event_add_signal()
CID 1394444
2018-10-13 12:37:13 +02:00
Lennart Poettering
db2d75dfbb machinectl: voidify calls to sd_event_add_signal()
CID 1394445
2018-10-13 12:37:13 +02:00
Lennart Poettering
babdf0d315 udevadm: assert_se() around sigprocmask()
CID #1395708
2018-10-13 12:37:13 +02:00
Lennart Poettering
9db296fddd efivars: add missing OOM check
CID #1395833
2018-10-13 12:37:13 +02:00
Lennart Poettering
165ad41b7f sd-ndisc: change return value of ndisc_reset() to void
We never generate anything other than 0 anyway, and we never check it,
hence let's just simplify things.
2018-10-13 12:37:13 +02:00
Lennart Poettering
76f713dfa4 sd-ndisc: voidify sd_ndisc_stop() call
CID 1395839
2018-10-13 12:37:13 +02:00
Lennart Poettering
fcadf032c0 json: fix memleak on OOM
CID 1396083
2018-10-13 12:37:13 +02:00