Commit Graph
35609 Commits
Author SHA1 Message Date
Lennart Poettering 0bbee2c226 rlimit-util: don't call setrlimit() needlessly if it wouldn't change anything
Just a tiny tweak to avoid generating an error if there's no need to.
2018-10-16 16:33:55 +02:00
Lennart Poettering a17c17122c core: bump RLIMIT_NOFILE soft+hard limit for systemd itself in all cases
Previously we'd do this for PID 1 only. Let's do this when running in
user mode too, because we know we can handle it.
2018-10-16 16:33:55 +02:00
Lennart Poettering c35ee02c61 units: bump the RLIMIT_NOFILE soft limit for all services that access the journal
This updates the unit files of all our serviecs that deal with journal
stuff to use a higher RLIMIT_NOFILE soft limit by default. The new value
is the same as used for the new HIGH_RLIMIT_NOFILE we just added.

With this we ensure all code that access the journal has higher
RLIMIT_NOFILE. The code that runs as daemon via the unit files, the code
that is run from the user's command line via C code internal to the
relevant tools. In some cases this means we'll redundantly bump the
limits as there are tools run both from the command line and as service.
2018-10-16 16:33:55 +02:00
Lennart Poettering 52d6207578 core: raise the RLIMIT_NOFILE hard limit for all services by default
Following the discussions with the kernel folks, let's substantially
increase the hard limit (but not the soft limit) of RLIMIT_NOFILE to
256K for all services we start.

Note that PID 1 itself bumps the limit even further, to the max the
kernel allows. We can deal with that after all.
2018-10-16 16:33:55 +02:00
Lennart Poettering 1abaf4887d tree-wide: uniformly bump RLIMIT_NOFILE in all our tools that access the journal
This makes use of rlimit_nofile_bump() in all tools that access the
journal. In some cases this replaces older code to achieve this, and
others we add it in where it was missing.
2018-10-16 16:33:55 +02:00
Lennart Poettering 99ab6fdf8c core: add a new call for bumping RLIMIT_NOFILE to "high" values
Following discussions with some kernel folks at All Systems Go! it
appears that file descriptors are not really as expensive as they used
to be (both memory and performance-wise) and it should thus be OK to allow
programs (including unprivileged ones) to have more of them without ill
effects.

Unfortunately we can't just raise the RLIMIT_NOFILE soft limit
globally for all processes, as select() and friends can't handle fds
>= 1024, and thus unexpecting programs might fail if they accidently get
an fd outside of that range. We can however raise the hard limit, so
that programs that need a lot of fds can opt-in into getting fds beyond
the 1024 boundary, simply by bumping the soft limit to the now higher
hard limit.

This is useful for all our client code that accesses the journal, as the
journal merging logic might need a lot of fds. Let's add a unified
function for bumping the limit in a robust way.
2018-10-16 16:33:55 +02:00
Lennart Poettering d6e069f412 def: add a "high" limit for RLIMIT_NOFILE
This simply adds a new constant we can use for bumping RLIMIT_NOFILE to
a "high" value. It default to 256K for now, which is pretty high, but
smaller than the kernel built-in limit of 1M.

Previously, some tools that needed a higher RLIMIT_NOFILE bumped it to
16K. This new define goes substantially higher than this, following the
discussion with the kernel folks.
2018-10-16 16:33:55 +02:00
Lennart Poettering d3aeddb8d1 update TODO 2018-10-16 16:33:55 +02:00
Lennart Poettering a53f90ca24 siphash24: add helper for calculating the hash value for a string
Let's shorten some code.
2018-10-16 16:27:15 +02:00
Lennart Poettering 43d3c94e64 Merge pull request #10416 from poettering/udev-coverity
three simple coverity fixes
2018-10-16 16:26:44 +02:00
Lennart Poettering cb542e8488 udev: (void)ify calls to kill() where we knowingly ignore the return values
CID 1368231
CID 1368229
2018-10-16 13:52:21 +02:00
Lennart Poettering eb276e9841 udev: don't use devname before we acquired it
CID 1396107
2018-10-16 13:52:21 +02:00
Lennart Poettering cdc2af3e15 core: log about unit_watch_pid() failing
CID 1237509
2018-10-16 13:52:21 +02:00
Lennart Poettering 2011149a3c Merge pull request #10327 from yuwata/test-sd-device-enumerator-subsystem
sd-device-enumerator: dedup enumerated devices and add test for subsystem filtering
2018-10-16 12:48:01 +02:00
Lennart Poettering 14d0a740b5 Set theme jekyll-theme-cayman 2018-10-16 11:32:09 +02:00
Zbigniew Jędrzejewski-Szmek 65d51875c2 catalog: fix name of variable
All the messages would (literally) say "The start-up result is RESULT."
because @RESULT@ was not defined.

Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1639482
and the first part of #8005.

Fixup for 646cc98dc8.
2018-10-16 10:21:08 +02:00
Harry Mallon 2c4370d66c rules: Add ID_REVISION environment var for NVMe devices 2018-10-16 10:20:31 +02:00
Zbigniew Jędrzejewski-Szmek 0919b554c6 Merge pull request #9824 from poettering/login-unit-fixes
many logind improvements
2018-10-16 09:34:27 +02:00
Zbigniew Jędrzejewski-Szmek 43debabc8b Merge pull request #10391 from poettering/systemctl-exit-code-fixes
systemctl exit code fixes
2018-10-16 08:42:34 +02:00
Zbigniew Jędrzejewski-Szmek 4348c847cc Merge pull request #10373 from poettering/systemd-io
adopt systemd.io urls
2018-10-15 15:39:05 +02:00
Yu Watanabe 6cc4d59b35 Merge pull request #10392 from poettering/manager-no-inotify-fail
make sure /etc/localtime issues don't cause systemd to fail boot
2018-10-15 07:15:12 +09:00
Ben Boeckel bbe27ae448 man/systemd.nspawn: fix reference to --timezone argument (#10403) 2018-10-15 06:16:43 +09:00
Lennart Poettering ca193035e9 Merge pull request #10394 from yuwata/fixes-found-by-clang
Fix warnings reported by clang
2018-10-14 20:11:19 +02:00
Yu Watanabe e7aa9512e4 udev: use readlink_malloc() or its friend
Follow-up for a2554acec6 and
7006860271.
2018-10-14 19:59:49 +02:00
Yu Watanabe 18094bdcf4 Merge pull request #10381 from poettering/coverity-fixes
fixes for various recent coverity issues
2018-10-14 18:58:36 +09:00
Yu Watanabe 40990eac27 test: use fabsl instead of fabs as json_variant_real() returns 'long double' 2018-10-14 03:29:43 +09:00
Yu Watanabe 172e4806dd busctl: drop unused variable 2018-10-14 03:29:43 +09:00
Yu Watanabe cb16b085c0 core: set _unused_ attribute to 'reloading'
Follow-up for 4df7d537c8.
2018-10-13 23:50:04 +09:00
Lennart Poettering ea5c5f680d core: ensure it's not fatal if we cannot watch /etc/localtime
See: #9602
2018-10-13 15:13:07 +02:00
Lennart Poettering 0cb21d8c60 core: add debug logging if we cant watch /etc/localtime itself 2018-10-13 15:12:58 +02:00
Yu Watanabe b5f24a3858 test: make test-sd-device stricter 2018-10-13 21:45:50 +09:00
Yu Watanabe cd8d816d78 sd-device: dedup enumerated devices 2018-10-13 21:45:50 +09:00
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