summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2019-07-23sd-daemon: don't mention strerror_safe() in examples in public headersLennart Poettering1-1/+1
It's an internal function we define, noone else should bother.
2019-07-23Merge pull request #13136 from keszybz/readd-ntp-units.dLennart Poettering4-8/+72
ntp-units.d support
2019-07-23Merge pull request #13109 from poettering/revert-kbd-modeLennart Poettering3-39/+25
Revert of #12378 ("VT kbd reset check")
2019-07-22Merge pull request #13133 from keszybz/pstore-return-valueLennart Poettering1-0/+4
pstore: refuse to run if arguments are specified
2019-07-22timesyncd: add ntp-units.d/ entry for timesyncZbigniew Jędrzejewski-Szmek2-0/+3
Priority is 80. At least in Fedora, chrony uses 50, and ntpd 60. timesyncd has lower priority, because if people install those other packages, it's most likely on purpose. timesyncd is always installed and provides less functionality.
2019-07-22timedated: add back support for ntp-units.d/Zbigniew Jędrzejewski-Szmek2-8/+69
We removed support for foreign services (and ntp-units.d/) in b72ddf0f4. Support for foreign services was added back in 5d280742, but through an environment variable. The problem with the env var approach is that it only works as a mechanism to select one item, and doesn't work nicely as a mechinism to create a list of items through drop-ins (because the env var can be easily overridden, but not extended). Having a list of "ntp providers" is important to be able to reliably disable all of them when that is requested. Another problem is that nobody ever bothered to care about our new "standard". ntp-units.d/ is a nice simple format that works and is already supported by chrony and ntpd and timedatex. If we were to introduce and ask people to follow a new standard, there should be some good reason for this. The idea with env vars has lower functionality, requires systemd-specific syntax. We should just re-adopt the format that we originally introduced and that seems to work for everyone, and more on to more interesting problems.
2019-07-22Merge pull request #13131 from yuwata/pstore-follow-upsZbigniew Jędrzejewski-Szmek1-28/+26
pstore: several minor follow-ups
2019-07-22pstore: refuse to run if arguments are specifiedZbigniew Jędrzejewski-Szmek1-0/+4
(This is why the --help chech passed.)
2019-07-22pid1: make sure we look at /proc/1/cmdline when parsing configZbigniew Jędrzejewski-Szmek1-3/+4
In recent systemd-nspawn we wouldn't parse init args like systemd.log-level=debug. This is because we wouldn't even look at /proc/1/cmdline. $ systemd-nspawn -n cat /proc/1/stat 1 (cat) R 0 1 1 34816 .... ^^^^^ 34816 is 136:0 a.k.a. /dev/pts/0.
2019-07-22pstore: use log_setup_service()Yu Watanabe1-1/+1
2019-07-22pstore: do not add FILE= journal entry if content_size == 0Yu Watanabe1-11/+14
2019-07-22pstore: remove temporary file on failureYu Watanabe1-3/+3
2019-07-22pstore: drop commented out lineYu Watanabe1-2/+0
2019-07-22pstopre: fix return value of list_files()Yu Watanabe1-3/+3
Previously, the return value of the last read_full_file() is returned. This makes the error in read_full_file() is always ignored.
2019-07-22pstore: drop unnecessary initializationsYu Watanabe1-9/+6
2019-07-19Merge pull request #13096 from keszybz/unit-loadingZbigniew Jędrzejewski-Szmek43-474/+725
Preparatory work for the unit loading rework
2019-07-19pstore: Tool to archive contents of pstoreEric DeVolder3-0/+419
This patch introduces the systemd pstore service which will archive the contents of the Linux persistent storage filesystem, pstore, to other storage, thus preserving the existing information contained in the pstore, and clearing pstore storage for future error events. Linux provides a persistent storage file system, pstore[1], that can store error records when the kernel dies (or reboots or powers-off). These records in turn can be referenced to debug kernel problems (currently the kernel stuffs the tail of the dmesg, which also contains a stack backtrace, into pstore). The pstore file system supports a variety of backends that map onto persistent storage, such as the ACPI ERST[2, Section 18.5 Error Serialization] and UEFI variables[3 Appendix N Common Platform Error Record]. The pstore backends typically offer a relatively small amount of persistent storage, e.g. 64KiB, which can quickly fill up and thus prevent subsequent kernel crashes from recording errors. Thus there is a need to monitor and extract the pstore contents so that future kernel problems can also record information in the pstore. The pstore service is independent of the kdump service. In cloud environments specifically, host and guest filesystems are on remote filesystems (eg. iSCSI or NFS), thus kdump relies [implicitly and/or explicitly] upon proper operation of networking software *and* hardware *and* infrastructure. Thus it may not be possible to capture a kernel coredump to a file since writes over the network may not be possible. The pstore backend, on the other hand, is completely local and provides a path to store error records which will survive a reboot and aid in post-mortem debugging. Usage Notes: This tool moves files from /sys/fs/pstore into /var/lib/systemd/pstore. To enable kernel recording of error records into pstore, one must either pass crash_kexec_post_notifiers[4] to the kernel command line or enable via 'echo Y > /sys/module/kernel/parameters/crash_kexec_post_notifiers'. This option invokes the recording of errors into pstore *before* an attempt to kexec/kdump on a kernel crash. Optionally, to record reboots and shutdowns in the pstore, one can either pass the printk.always_kmsg_dump[4] to the kernel command line or enable via 'echo Y > /sys/module/printk/parameters/always_kmsg_dump'. This option enables code on the shutdown path to record information via pstore. This pstore service is a oneshot service. When run, the service invokes systemd-pstore which is a tool that performs the following: - reads the pstore.conf configuration file - collects the lists of files in the pstore (eg. /sys/fs/pstore) - for certain file types (eg. dmesg) a handler is invoked - for all other files, the file is moved from pstore - In the case of dmesg handler, final processing occurs as such: - files processed in reverse lexigraphical order to faciliate reconstruction of original dmesg - the filename is examined to determine which dmesg it is a part - the file is appended to the reconstructed dmesg For example, the following pstore contents: root@vm356:~# ls -al /sys/fs/pstore total 0 drwxr-x--- 2 root root 0 May 9 09:50 . drwxr-xr-x 7 root root 0 May 9 09:50 .. -r--r--r-- 1 root root 1610 May 9 09:49 dmesg-efi-155741337601001 -r--r--r-- 1 root root 1778 May 9 09:49 dmesg-efi-155741337602001 -r--r--r-- 1 root root 1726 May 9 09:49 dmesg-efi-155741337603001 -r--r--r-- 1 root root 1746 May 9 09:49 dmesg-efi-155741337604001 -r--r--r-- 1 root root 1686 May 9 09:49 dmesg-efi-155741337605001 -r--r--r-- 1 root root 1690 May 9 09:49 dmesg-efi-155741337606001 -r--r--r-- 1 root root 1775 May 9 09:49 dmesg-efi-155741337607001 -r--r--r-- 1 root root 1811 May 9 09:49 dmesg-efi-155741337608001 -r--r--r-- 1 root root 1817 May 9 09:49 dmesg-efi-155741337609001 -r--r--r-- 1 root root 1795 May 9 09:49 dmesg-efi-155741337710001 -r--r--r-- 1 root root 1770 May 9 09:49 dmesg-efi-155741337711001 -r--r--r-- 1 root root 1796 May 9 09:49 dmesg-efi-155741337712001 -r--r--r-- 1 root root 1787 May 9 09:49 dmesg-efi-155741337713001 -r--r--r-- 1 root root 1808 May 9 09:49 dmesg-efi-155741337714001 -r--r--r-- 1 root root 1754 May 9 09:49 dmesg-efi-155741337715001 results in the following: root@vm356:~# ls -al /var/lib/systemd/pstore/155741337/ total 92 drwxr-xr-x 2 root root 4096 May 9 09:50 . drwxr-xr-x 4 root root 40 May 9 09:50 .. -rw-r--r-- 1 root root 1610 May 9 09:50 dmesg-efi-155741337601001 -rw-r--r-- 1 root root 1778 May 9 09:50 dmesg-efi-155741337602001 -rw-r--r-- 1 root root 1726 May 9 09:50 dmesg-efi-155741337603001 -rw-r--r-- 1 root root 1746 May 9 09:50 dmesg-efi-155741337604001 -rw-r--r-- 1 root root 1686 May 9 09:50 dmesg-efi-155741337605001 -rw-r--r-- 1 root root 1690 May 9 09:50 dmesg-efi-155741337606001 -rw-r--r-- 1 root root 1775 May 9 09:50 dmesg-efi-155741337607001 -rw-r--r-- 1 root root 1811 May 9 09:50 dmesg-efi-155741337608001 -rw-r--r-- 1 root root 1817 May 9 09:50 dmesg-efi-155741337609001 -rw-r--r-- 1 root root 1795 May 9 09:50 dmesg-efi-155741337710001 -rw-r--r-- 1 root root 1770 May 9 09:50 dmesg-efi-155741337711001 -rw-r--r-- 1 root root 1796 May 9 09:50 dmesg-efi-155741337712001 -rw-r--r-- 1 root root 1787 May 9 09:50 dmesg-efi-155741337713001 -rw-r--r-- 1 root root 1808 May 9 09:50 dmesg-efi-155741337714001 -rw-r--r-- 1 root root 1754 May 9 09:50 dmesg-efi-155741337715001 -rw-r--r-- 1 root root 26754 May 9 09:50 dmesg.txt where dmesg.txt is reconstructed from the group of related dmesg-efi-155741337* files. Configuration file: The pstore.conf configuration file has four settings, described below. - Storage : one of "none", "external", or "journal". With "none", this tool leaves the contents of pstore untouched. With "external", the contents of the pstore are moved into the /var/lib/systemd/pstore, as well as logged into the journal. With "journal", the contents of the pstore are recorded only in the systemd journal. The default is "external". - Unlink : is a boolean. When "true", the default, then files in the pstore are removed once processed. When "false", processing of the pstore occurs normally, but the pstore files remain. References: [1] "Persistent storage for a kernel's dying breath", March 23, 2011. https://lwn.net/Articles/434821/ [2] "Advanced Configuration and Power Interface Specification", version 6.2, May 2017. https://www.uefi.org/sites/default/files/resources/ACPI_6_2.pdf [3] "Unified Extensible Firmware Interface Specification", version 2.8, March 2019. https://uefi.org/sites/default/files/resources/UEFI_Spec_2_8_final.pdf [4] "The kernel’s command-line parameters", https://static.lwn.net/kerneldoc/admin-guide/kernel-parameters.html
2019-07-19test-fs-util: call test functions in order of declarationZbigniew Jędrzejewski-Szmek1-2/+2
2019-07-19Create src/shared/unit-file.[ch] for unit-file related opsZbigniew Jędrzejewski-Szmek17-54/+76
So far we put such functinos in install.[ch], but that is tied too closely to enable/disable. Let's start moving things to a place with a better name.
2019-07-19shared/dropin: rename function for clarityZbigniew Jędrzejewski-Szmek1-2/+4
The caller looks for directories and is called "..._find_dirs()". Here, there is no "finding" going on, so I found the old name confusing.
2019-07-19shared/dropin: use TAKE_PTR in one more placeZbigniew Jędrzejewski-Szmek1-19/+11
2019-07-19basic/path-util: move two path_simplify* functions to be adjacentZbigniew Jędrzejewski-Szmek2-54/+54
No functional change.
2019-07-19pid1: get rid of unit_supported() helperZbigniew Jędrzejewski-Szmek2-7/+3
Another case where "open code" is easier to read than the helper.
2019-07-19basic/set: constify operations which don't modify SetZbigniew Jędrzejewski-Szmek4-14/+14
No functional change, but it's nicer to the reader.
2019-07-19pid1: do not say "(null)" if no disabled controllersZbigniew Jędrzejewski-Szmek1-1/+1
It looks like we made a mistake. The list is just empty, that's all.
2019-07-19pid1: simplify timestamp buffer declarationZbigniew Jędrzejewski-Szmek1-14/+8
2019-07-19Rename test-unit-file to test-load-fragmentZbigniew Jędrzejewski-Szmek2-1/+1
This file was testing a mix of functions from src/core/load-fragment.c and some from src/shared/install.c. Let's name it more appropriately. I want to add tests for the new unit-file.c too.
2019-07-19test-unit-file: move some tests to new test-env-file.cZbigniew Jędrzejewski-Szmek3-130/+147
2019-07-19test-hashmap: move tests which should also apply to ordered hashmaps and add ↵Zbigniew Jędrzejewski-Szmek2-58/+66
comment Effectively this does two more tests also for ordered hashmaps. This setup is a bit confusing, let's add a comment.
2019-07-19basic/hashmap: add hashops variant that does strdup/freeing on its ownZbigniew Jędrzejewski-Szmek5-0/+60
So far, we'd use hashmap_free_free to free both keys and values along with the hashmap. I think it's better to make this more encapsulated: in this variant the way contents are freed can be decided when the hashmap is created, and users of the hashmap can always use hashmap_free.
2019-07-19test-strv: add function headersZbigniew Jędrzejewski-Szmek1-7/+86
2019-07-19sysusers,strv: export the hash ops to map char* → strvZbigniew Jędrzejewski-Szmek3-35/+67
Also make string_strv_hashmap_put return 0 only if the entry already existed.
2019-07-19basic/unit-name: allow unit_name_to_instance() to be used to classify unitsZbigniew Jędrzejewski-Szmek3-19/+25
This could already be done by calling unit_name_is_*(), but if we don't know if the argument is a valid unit name, it is more convenient to have a single function which returns the type or possibly an error if the unit name is not valid. The values in the enum are sorted "by length". Not really important, but it seems more natural to me.
2019-07-19basic/unit-name: drop unused functionZbigniew Jędrzejewski-Szmek1-5/+0
2019-07-19path-util: add path_startswith_strv()Zbigniew Jędrzejewski-Szmek3-11/+37
2019-07-19test-path-util: add function headersZbigniew Jędrzejewski-Szmek1-0/+33
2019-07-19Merge pull request #13070 from yuwata/network-set-route-to-dhcp-dnsZbigniew Jędrzejewski-Szmek7-63/+261
2019-07-19pid1: order jobs that execute processes with lower priorityZbigniew Jędrzejewski-Szmek1-5/+5
We can meaningfully compare jobs for units which have cpu weight or nice set. But non-exec units those have those set. Starting non-exec jobs first allows us to get them out of the queue quickly, and consider more jobs for starting. If we have service A, and socket B, and service C which is after socket B, and we want to start both A and C, and C has higher cpu weight, if we get B out of the way first, we'll know that we can start both A and C, and we'll start C first. Also invert the comparisons using CMP() so they are always done left vs. right, and negate when returning instead. Follow-up for da8e178296.
2019-07-19sd-netlink: update commentYu Watanabe1-1/+1
2019-07-19network: Added neighbor lladdr support for IPv618482-21/+13
2019-07-18core: set shutdown watchdog on kexec tooLuca Boccassi1-1/+1
At the moment the shutdown watchdog is set only when rebooting. The set of "things that can go wrong" is not too far off when kexec'ing and in fact we have a use case where it would be useful - moving to a new kernel image.
2019-07-19network: add DHCPv4.RoutesToDNS= settingYu Watanabe3-2/+6
2019-07-19network: set routes to dns servers provided by DHCPv4Yu Watanabe1-1/+95
2019-07-19network: store routes provided by DHCPv4 in SetYu Watanabe3-62/+63
This re-writes d03073ddcde6dd2d5604b70ff4184acbe0a7961a.
2019-07-19network: introduce route_full_hash_opsYu Watanabe2-0/+99
Will be used later.
2019-07-18Merge pull request #13097 from poettering/mount-state-fixZbigniew Jędrzejewski-Szmek2-32/+72
Scan /proc/self/mountinfo before waitid() handling
2019-07-18Merge pull request #13102 from mbiebl/nologin-pathZbigniew Jędrzejewski-Szmek5-9/+9
meson: make nologin path build time configurable
2019-07-18mount: rename update_parameters_proc_self_mount_info() → ↵Lennart Poettering1-4/+4
update_parameters_proc_self_mountinfo() let's name the call like the file in /proc is actually called.
2019-07-18swap: scan /proc/swaps before processing waitid() resultsLennart Poettering1-3/+15
Similar to the previous commit, but for /proc/swaps, where the same logic and rationale applies.
2019-07-18mount: rescan /proc/self/mountinfo before processing waitid() resultsLennart Poettering1-3/+27
(The interesting bits about the what and why are in a comment in the patch, please have a look there instead of looking here in the commit msg). Fixes: #10872