Yu Watanabe [Mon, 22 Jul 2019 01:55:10 +0000 (10:55 +0900)]
pstopre: fix return value of list_files()
Previously, the return value of the last read_full_file() is returned.
This makes the error in read_full_file() is always ignored.
Yu Watanabe [Mon, 22 Jul 2019 01:52:12 +0000 (10:52 +0900)]
pstore: drop unnecessary initializations
Yu Watanabe [Mon, 22 Jul 2019 01:46:53 +0000 (10:46 +0900)]
meson: drop redundant line
Found by @mattiasb.
Zbigniew Jędrzejewski-Szmek [Fri, 19 Jul 2019 19:47:10 +0000 (21:47 +0200)]
Merge pull request #13096 from keszybz/unit-loading
Preparatory work for the unit loading rework
Eric DeVolder [Thu, 16 May 2019 13:59:01 +0000 (08:59 -0500)]
pstore: Tool to archive contents of pstore
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
Zbigniew Jędrzejewski-Szmek [Thu, 18 Jul 2019 11:11:44 +0000 (13:11 +0200)]
test-fs-util: call test functions in order of declaration
Zbigniew Jędrzejewski-Szmek [Thu, 4 Jul 2019 13:46:16 +0000 (15:46 +0200)]
Create src/shared/unit-file.[ch] for unit-file related ops
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.
Zbigniew Jędrzejewski-Szmek [Wed, 10 Jul 2019 14:04:34 +0000 (16:04 +0200)]
shared/dropin: rename function for clarity
The caller looks for directories and is called "..._find_dirs()". Here, there
is no "finding" going on, so I found the old name confusing.
Zbigniew Jędrzejewski-Szmek [Wed, 10 Jul 2019 13:56:21 +0000 (15:56 +0200)]
shared/dropin: use TAKE_PTR in one more place
Zbigniew Jędrzejewski-Szmek [Tue, 9 Jul 2019 09:40:19 +0000 (11:40 +0200)]
basic/path-util: move two path_simplify* functions to be adjacent
No functional change.
Zbigniew Jędrzejewski-Szmek [Mon, 8 Jul 2019 15:43:14 +0000 (17:43 +0200)]
pid1: get rid of unit_supported() helper
Another case where "open code" is easier to read than the helper.
Zbigniew Jędrzejewski-Szmek [Mon, 8 Jul 2019 15:31:30 +0000 (17:31 +0200)]
basic/set: constify operations which don't modify Set
No functional change, but it's nicer to the reader.
Zbigniew Jędrzejewski-Szmek [Fri, 5 Jul 2019 11:49:43 +0000 (13:49 +0200)]
pid1: do not say "(null)" if no disabled controllers
It looks like we made a mistake. The list is just empty, that's all.
Zbigniew Jędrzejewski-Szmek [Fri, 5 Jul 2019 11:44:31 +0000 (13:44 +0200)]
pid1: simplify timestamp buffer declaration
Zbigniew Jędrzejewski-Szmek [Mon, 8 Jul 2019 22:27:18 +0000 (00:27 +0200)]
Rename test-unit-file to test-load-fragment
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.
Zbigniew Jędrzejewski-Szmek [Thu, 4 Jul 2019 14:06:30 +0000 (16:06 +0200)]
test-unit-file: move some tests to new test-env-file.c
Zbigniew Jędrzejewski-Szmek [Wed, 3 Jul 2019 11:59:30 +0000 (13:59 +0200)]
test-hashmap: move tests which should also apply to ordered hashmaps and add comment
Effectively this does two more tests also for ordered hashmaps.
This setup is a bit confusing, let's add a comment.
Zbigniew Jędrzejewski-Szmek [Thu, 11 Apr 2019 16:08:57 +0000 (18:08 +0200)]
basic/hashmap: add hashops variant that does strdup/freeing on its own
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.
Zbigniew Jędrzejewski-Szmek [Wed, 3 Jul 2019 11:31:45 +0000 (13:31 +0200)]
test-strv: add function headers
Zbigniew Jędrzejewski-Szmek [Thu, 28 Mar 2019 16:28:48 +0000 (17:28 +0100)]
sysusers,strv: export the hash ops to map char* → strv
Also make string_strv_hashmap_put return 0 only if the entry already existed.
Zbigniew Jędrzejewski-Szmek [Tue, 2 Apr 2019 09:05:44 +0000 (11:05 +0200)]
basic/unit-name: allow unit_name_to_instance() to be used to classify units
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.
Zbigniew Jędrzejewski-Szmek [Tue, 2 Apr 2019 08:55:25 +0000 (10:55 +0200)]
basic/unit-name: drop unused function
Zbigniew Jędrzejewski-Szmek [Thu, 28 Mar 2019 21:35:46 +0000 (22:35 +0100)]
path-util: add path_startswith_strv()
Zbigniew Jędrzejewski-Szmek [Thu, 28 Mar 2019 16:59:26 +0000 (17:59 +0100)]
test-path-util: add function headers
Zbigniew Jędrzejewski-Szmek [Fri, 19 Jul 2019 07:34:22 +0000 (09:34 +0200)]
Merge pull request #13070 from yuwata/network-set-route-to-dhcp-dns
Zbigniew Jędrzejewski-Szmek [Thu, 18 Jul 2019 16:30:15 +0000 (18:30 +0200)]
pid1: order jobs that execute processes with lower priority
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.
Dan Streetman [Fri, 19 Jul 2019 00:34:57 +0000 (20:34 -0400)]
test: convert all uses of '|| true' into '|| :'
No change in functionality; just use the shorter || :
Yu Watanabe [Fri, 19 Jul 2019 00:48:49 +0000 (09:48 +0900)]
Merge pull request #13100 from 1848/neigh_ipv6
networkd: Neighbor IPv6 support for LinkLayerAddress
Anita Zhang [Thu, 18 Jul 2019 21:52:35 +0000 (14:52 -0700)]
docs: typo in arg name replace-irreversible -> replace-irreversibly
Yu Watanabe [Thu, 18 Jul 2019 04:09:42 +0000 (13:09 +0900)]
test-network: add test for neighbor with ipv6 lladdr
Yu Watanabe [Thu, 18 Jul 2019 03:58:07 +0000 (12:58 +0900)]
sd-netlink: update comment
1848 [Wed, 17 Jul 2019 17:43:35 +0000 (19:43 +0200)]
network: Added neighbor lladdr support for IPv6
Zbigniew Jędrzejewski-Szmek [Thu, 18 Jul 2019 20:27:45 +0000 (22:27 +0200)]
meson: update hint in man/rules/
Luca Boccassi [Thu, 18 Jul 2019 13:25:30 +0000 (14:25 +0100)]
core: set shutdown watchdog on kexec too
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.
Yu Watanabe [Tue, 16 Jul 2019 05:28:40 +0000 (14:28 +0900)]
test-network: add tests for routes to DNS servers provided by DHCPv4
Yu Watanabe [Tue, 16 Jul 2019 17:47:20 +0000 (02:47 +0900)]
network: add DHCPv4.RoutesToDNS= setting
Yu Watanabe [Tue, 16 Jul 2019 17:30:56 +0000 (02:30 +0900)]
network: set routes to dns servers provided by DHCPv4
Yu Watanabe [Tue, 16 Jul 2019 17:14:27 +0000 (02:14 +0900)]
network: store routes provided by DHCPv4 in Set
This re-writes
d03073ddcde6dd2d5604b70ff4184acbe0a7961a.
Yu Watanabe [Tue, 16 Jul 2019 16:47:52 +0000 (01:47 +0900)]
network: introduce route_full_hash_ops
Will be used later.
Zbigniew Jędrzejewski-Szmek [Thu, 18 Jul 2019 15:33:20 +0000 (17:33 +0200)]
Merge pull request #13097 from poettering/mount-state-fix
Scan /proc/self/mountinfo before waitid() handling
Zbigniew Jędrzejewski-Szmek [Thu, 18 Jul 2019 15:17:23 +0000 (17:17 +0200)]
Merge pull request #13102 from mbiebl/nologin-path
meson: make nologin path build time configurable
Lennart Poettering [Thu, 18 Jul 2019 15:02:30 +0000 (17:02 +0200)]
mount: rename update_parameters_proc_self_mount_info() → update_parameters_proc_self_mountinfo()
let's name the call like the file in /proc is actually called.
Lennart Poettering [Wed, 17 Jul 2019 16:58:44 +0000 (18:58 +0200)]
swap: scan /proc/swaps before processing waitid() results
Similar to the previous commit, but for /proc/swaps, where the same
logic and rationale applies.
Lennart Poettering [Wed, 17 Jul 2019 16:57:13 +0000 (18:57 +0200)]
mount: rescan /proc/self/mountinfo before processing waitid() results
(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
Lennart Poettering [Wed, 17 Jul 2019 12:53:07 +0000 (14:53 +0200)]
mount: simplify /proc/self/mountinfo handler
Our IO handler is only installed for one fd, hence there's no reason to
conditionalize on it again.
Also, split out the draining into a helper function of its own.
Lennart Poettering [Thu, 18 Jul 2019 14:53:32 +0000 (16:53 +0200)]
Merge pull request #12639 from michaelolbrich/job-order
make the run queue order deterministic
Zbigniew Jędrzejewski-Szmek [Thu, 18 Jul 2019 08:14:52 +0000 (10:14 +0200)]
man: add note about systemctl stop return value
Fixes #13104.
(I know a lot more could be added to that man page. This patch only addresses that
once specific complaint.)
Lennart Poettering [Thu, 18 Jul 2019 14:12:20 +0000 (16:12 +0200)]
Merge pull request #13107 from keszybz/lvalue-rvalue
Better error messages for syntax errors
Michael Biebl [Thu, 18 Jul 2019 10:48:50 +0000 (12:48 +0200)]
test: replace Makefile copy with a symlink for TEST-28-PERCENTJ-WANTEDBY
TEST-28-PERCENTJ-WANTEDBY/Makefile is identical to
TEST-01-BASIC/Makefile so avoid duplication and use a symlink instead.
Michael Biebl [Wed, 17 Jul 2019 23:24:00 +0000 (01:24 +0200)]
meson: make nologin path build time configurable
Some distros install nologin as /usr/sbin/nologin, others as
/sbin/nologin.
Since we can't really on merged-usr everywhere (where the path wouldn't
matter), make the path build time configurable via -Dnologin-path=.
Closes #13028
Zbigniew Jędrzejewski-Szmek [Thu, 18 Jul 2019 09:33:48 +0000 (11:33 +0200)]
shared/conf-parser: say "key name" not "lvalue", add dot
"lvalue" is our internal jargon. Let's try not to confuse non-programmers.
Zbigniew Jędrzejewski-Szmek [Thu, 18 Jul 2019 09:30:43 +0000 (11:30 +0200)]
shared/conf-parser: emit a nicer warning for something like "======"
Urlich Windl wrote on the mailing list:
> I noticed that a line of "=======" in "[Service]" cases the message " Unknown lvalue '' in section 'Service'".
This now becomes:
/etc/systemd/system/eqeqeqeq.service:3: Missing key name before '=', ignoring line.
Zbigniew Jędrzejewski-Szmek [Thu, 18 Jul 2019 09:28:55 +0000 (11:28 +0200)]
shared/conf-parser: be nice and ignore lines without "="
We generally don't treat syntax error as fatal, but in this case we would
completely refuse to load the file. I think we should treat the the same
as assignment outside of a section, or an unknown key name.
Michael Olbrich [Wed, 22 May 2019 10:12:17 +0000 (12:12 +0200)]
job: make the run queue order deterministic
Jobs are added to the run queue in random order. This happens because most
jobs are added by iterating over the transaction or dependency hash maps.
As a result, jobs that can be executed at the same time are started in a
different order each time.
On small embedded devices this can cause a measurable jitter for the point
in time when a job starts (~100ms jitter for 10 units that are started in
random order).
This results is a similar jitter for the boot time. This is undesirable in
general and make optimizing the boot time a lot harder.
Also, jobs that should have a higher priority because the unit has a higher
CPU weight might get executed later than others.
Fix this by turning the job run_queue into a Prioq and sort by the
following criteria (use the next if the values are equal):
- CPU weight
- nice level
- unit type
- unit name
The last one is just there for deterministic sorting to avoid any jitter.
Michael Olbrich [Wed, 3 Jul 2019 14:11:47 +0000 (16:11 +0200)]
basic: reorder UnitType enum
The enum order will be used to order jobs in the job queue.
Make sure that unit types that fork aditional processes come first to
maximize parallelism.
Zbigniew Jędrzejewski-Szmek [Thu, 18 Jul 2019 06:06:37 +0000 (08:06 +0200)]
Merge pull request #13103 from anitazha/conditiondocs
NEWS and catalog update for ExecCondition=
Anita Zhang [Thu, 18 Jul 2019 05:39:55 +0000 (22:39 -0700)]
catalog: reference ExecCondition= in unit skipped str
Anita Zhang [Thu, 18 Jul 2019 05:24:23 +0000 (22:24 -0700)]
NEWS: bullet point for ExecCondition=
Lennart Poettering [Wed, 17 Jul 2019 17:16:33 +0000 (19:16 +0200)]
core: never propagate reload failure to service result
Fixes: #11238
Lennart Poettering [Wed, 17 Jul 2019 17:27:16 +0000 (19:27 +0200)]
Merge pull request #13047 from niedbalski/fix-5552-pr
resolved: add new option to only cache positive answers
Lennart Poettering [Wed, 17 Jul 2019 17:26:46 +0000 (19:26 +0200)]
Merge pull request #13086 from yuwata/network-dhcp6-cleanups
network: dhcp6 cleanups
Frantisek Sumsal [Wed, 17 Jul 2019 15:53:35 +0000 (15:53 +0000)]
Merge pull request #13093 from keszybz/two-assert-cc-cleanups
Two assert_cc cleanups
Jorge Niedbalski [Fri, 12 Jul 2019 19:34:24 +0000 (15:34 -0400)]
resolved: switch cache option to a tri-state option (systemd#5552).
Change the resolved.conf Cache option to a tri-state "no, no-negative, yes" values.
If a lookup returns SERVFAIL systemd-resolved will cache the result for 30s (See 201d995),
however, there are several use cases on which this condition is not acceptable (See systemd#5552 comments)
and the only workaround would be to disable cache entirely or flush it , which isn't optimal.
This change adds the 'no-negative' option when set it avoids putting in cache
negative answers but still works the same heuristics for positive answers.
Signed-off-by: Jorge Niedbalski <jnr@metaklass.org>
Yu Watanabe [Wed, 17 Jul 2019 14:12:07 +0000 (23:12 +0900)]
network: update state file after dhcp6 events
E.g. DNS servers may be received from DHCPv6 server. If the link is
already in configured state, the DNS servers are not written in the
state file.
Yu Watanabe [Wed, 17 Jul 2019 14:03:01 +0000 (23:03 +0900)]
Revert "test-network: extend sleep time"
This reverts commit
7d7bb5c8613b774bf77c531f46d31ee20d7a1b1e.
Still the CIs are flaky and the commit just slow down them.
Yu Watanabe [Wed, 17 Jul 2019 01:07:42 +0000 (10:07 +0900)]
man: fix wrong section name
Yu Watanabe [Wed, 17 Jul 2019 01:21:07 +0000 (10:21 +0900)]
network: fix use after free()
The hashmap will be accessed by client_stop().
Yu Watanabe [Wed, 17 Jul 2019 00:46:36 +0000 (09:46 +0900)]
network: drop unnecessary line breaks
Yu Watanabe [Wed, 17 Jul 2019 00:40:06 +0000 (09:40 +0900)]
network: drop fallback mechanism to assign DHCPv6 addresses with IFA_F_NOPREFIXROUTE
The flag IFA_F_NOPREFIXROUTE was introduced in kernel-3.14. But even if
the kernel does not support the flag, it should be just ignored. So, it
is not necessary to do the fallback logic. Moreover, the current logic
is not a fallback mechanism but just retrying. So, it should not work.
Let's drop that.
Lennart Poettering [Wed, 17 Jul 2019 12:43:15 +0000 (14:43 +0200)]
Merge pull request #13080 from keszybz/firstboot-fixes
Firstboot fixes
Zbigniew Jędrzejewski-Szmek [Sun, 24 Mar 2019 20:36:29 +0000 (21:36 +0100)]
systemctl: call the unit dbus path dbus_path everywhere
Similar variables had differing names: unit, path, unit_path. We also
have file system paths in surrounding code. Let's make this easier for
the reader and use "dbus_path" consistently.
Zbigniew Jędrzejewski-Szmek [Sun, 24 Mar 2019 19:49:00 +0000 (20:49 +0100)]
pid1: kill unit_file_find_dropin_paths() helper
It had two users, but it is just a very thin wrapper around
unit_file_find_dropin_paths(), so using it seems more complicated than directly
invoking unit_file_find_dropin_paths() twice.
Zbigniew Jędrzejewski-Szmek [Sun, 24 Mar 2019 19:10:35 +0000 (20:10 +0100)]
man: rework the description of Aliases and .wants/.requires directories
The description of Alias= wasn't incorrect, but it sounded like Alias= creates
a different type of dependency, while it's just a glorified way to create
symlinks. Also recommend 'preset' in addition to 'enable'.
Describe .wants/.requires dirs as equals, without implying that the [Install]
section can only be used for .wants.
The text was partially out of date (systemd-networkd.service now creates as
alias in /etc, not /usr/lib, let's just not say anything about the full path).
Dan Streetman [Sun, 14 Jul 2019 04:24:28 +0000 (00:24 -0400)]
test/TEST-16: don't copy systemd-notify or lib from $BUILD_DIR
On Ubuntu CI, these don't exist because it tests installed
binaries, not just-built binaries.
Zbigniew Jędrzejewski-Szmek [Thu, 11 Jul 2019 08:17:28 +0000 (10:17 +0200)]
Rewrite IN_SET()
This restores proper speed with asan builds with gcc 9.1.1.
Fixes #12997.
$ rpm -q gcc
gcc-9.1.1-2.fc31.x86_64
$ time ASAN_OPTIONS=strict_string_checks=1:detect_stack_use_after_return=1:check_initialization_order=1:strict_init_order=1 UBSAN_OPTIONS=print_stacktrace=1:print_summary=1:halt_on_error=1 build-rawhide-sanitize/test-conf-parser
(old) 86.99s user 20.22s system 361% cpu 29.635 total
(new) 3.05s user 0.29s system 99% cpu 3.377 total
Size is increased a bit:
$ size build/systemd
(old) 1683421 246100 1208 1930729 1d75e9 build/systemd
(new) 1688237 246100 1208 1935545 1d88b9 build/systemd
... but that's <0.1%, so we don't really care.
Lennart Poettering [Wed, 17 Jul 2019 12:18:49 +0000 (14:18 +0200)]
Merge pull request #13092 from keszybz/coverity-fixes
Coverity fixes
Lennart Poettering [Wed, 17 Jul 2019 12:10:06 +0000 (14:10 +0200)]
Merge pull request #13091 from poettering/nspawn-copy
nspawn: allow nspawn's copy operation to be abortable via C-c
Zbigniew Jędrzejewski-Szmek [Wed, 17 Jul 2019 10:45:42 +0000 (12:45 +0200)]
Drop trailing slash from assert_cc() definition
We use assert_cc(...); almost everywhere. Let's always require that.
https://github.com/systemd/systemd/issues/12997#issuecomment-
510103988
Zbigniew Jędrzejewski-Szmek [Wed, 17 Jul 2019 10:27:33 +0000 (12:27 +0200)]
basic/macro: drop do {} while(0) from assert_not_reached
log_assert_failed_unreachable is just a normal function call, no need to wrap
it.
https://github.com/systemd/systemd/issues/12997#issuecomment-
510103988
Lennart Poettering [Wed, 17 Jul 2019 10:07:39 +0000 (12:07 +0200)]
Merge pull request #12675 from yuwata/network-set-dns
resolvectl: support to modify interfaces managed by networkd
Zbigniew Jędrzejewski-Szmek [Tue, 16 Jul 2019 16:48:15 +0000 (18:48 +0200)]
firstboot: actually accept empty input to mean skip
We'd loop if the input was empty. We need to return to the caller.
Zbigniew Jędrzejewski-Szmek [Tue, 16 Jul 2019 16:35:34 +0000 (18:35 +0200)]
firstboot: fix hang waiting for second Enter on input
The comment explains the reason: we'd wait for the second \n
and then ungetc() it. Then the buffered \n would cause a problem
when the next prompt was issued, so in effect it wasn't possible
to answer the second question.
Zbigniew Jędrzejewski-Szmek [Tue, 16 Jul 2019 15:17:29 +0000 (17:17 +0200)]
firstboot: only list all options on demand
The user most likely knows the name of their locale/keymap/whatever,
and paging through multiple pages of output has little benefit.
The header that was printed before is now not printed anymore. But
now it's obvious from the context what we are printing, so we don't
need to print the header.
Zbigniew Jędrzejewski-Szmek [Tue, 16 Jul 2019 15:16:42 +0000 (17:16 +0200)]
firstboot: use free_and_strdup, free_and_replace
Jakob Unterwurzacher [Tue, 16 Jul 2019 21:09:07 +0000 (23:09 +0200)]
mount-util: bind_remount: avoid calling statvfs
The commit
"util: Do not clear parent mount flags when setting up namespaces"
introduced a statvfs call read the flags of the original mount
and have them applied to the bind mount.
This has two problems:
(1) The mount flags returned by statvfs(2) do not match the flags
accepted by mount(2). For example, the value 4096 means ST_RELATIME
when returned by statvfs(2), but means MS_BIND when passed to mount(2).
(2) A call to statvfs blocks indefinitely when ran against a disconnected
network drive ( https://github.com/systemd/systemd/issues/12667 ).
We already use libmount to parse `/proc/self/mountinfo` but did not use the
mount flag information from there. This patch changes that to use the mount
flags parsed by libmount instead of calling statvfs. Only if getting the
flags through libmount fails we call statvfs.
Fixes https://github.com/systemd/systemd/issues/12667
Zbigniew Jędrzejewski-Szmek [Wed, 17 Jul 2019 09:30:04 +0000 (11:30 +0200)]
sd-device: voidify and simplify calls to ordered_hashmap_iterate()
Coverity CID#1402356 and CID#1402335.
Zbigniew Jędrzejewski-Szmek [Wed, 17 Jul 2019 09:20:36 +0000 (11:20 +0200)]
sd-bus: voidify two calls to hashmap_iterate()
Coverity CID#1402304 and CID#1402307.
Zbigniew Jędrzejewski-Szmek [Wed, 17 Jul 2019 09:16:53 +0000 (11:16 +0200)]
test-networkd-conf: add missing assert
The test would not pass before, because EXTRACT_UNQUOTE|EXTRACT_RETAIN_ESCAPE
didn't work (we'd get "KEY3=val with \\quotation\\" as the last string. Now we
are only doing EXTRACT_UNQUOTE, so we get the expected "KEY3=val with \"quotation\"".
Coverity CID#1402781.
Zbigniew Jędrzejewski-Szmek [Wed, 17 Jul 2019 09:13:20 +0000 (11:13 +0200)]
shared/conf-parser,networkd: EXTRACT_UNQUOTE|EXTRACT_RETAIN_ESCAPE → EXTRACT_UNQUOTE
It's hard to even say what exactly this combination means. Escaping is
necessary when quoting to have quotes within the string. So the escaping of
quote characters is inherently tied to quoting. When unquoting, it seems
natural to remove escaping which was done for the quoting purposes. But with
both flags we would be expected to re-add this escaping after unqouting? Or
maybe keep the escaping which is not necessary for quoting but otherwise
present? This all seems too complicated, let's just forbid such usage and
always fully unescape when unquoting.
Zbigniew Jędrzejewski-Szmek [Wed, 17 Jul 2019 08:14:34 +0000 (10:14 +0200)]
nspawn: fix misplaced parenthesis and merge two error handling paths
I don't think we need to provide the two separate error messages,
let's shorten the code a bit by merging them.
Coverity CID#1402320.
Zbigniew Jędrzejewski-Szmek [Wed, 17 Jul 2019 08:09:18 +0000 (10:09 +0200)]
nspawn: fix memleak in argument parsing
Coverity CID#1402297.
Zbigniew Jędrzejewski-Szmek [Wed, 17 Jul 2019 08:02:13 +0000 (10:02 +0200)]
coredumpctl: check return value
retrieve() allocates memory, so it may fail.
Coverity CID#1402338.
Zbigniew Jędrzejewski-Szmek [Wed, 17 Jul 2019 08:01:24 +0000 (10:01 +0200)]
coredumpctl: use free_and_replace in one more place
Zbigniew Jędrzejewski-Szmek [Wed, 17 Jul 2019 07:49:01 +0000 (09:49 +0200)]
shared: voidify call to loop_write() and trim duplicate code
Coverity CID#1402375.
Zbigniew Jędrzejewski-Szmek [Wed, 17 Jul 2019 07:39:39 +0000 (09:39 +0200)]
shared: fix assert call
Fixup for
3572d3df8f8. Coverity CID#1403013.
Anita Zhang [Sat, 29 Jun 2019 00:02:30 +0000 (17:02 -0700)]
core: ExecCondition= for services
Closes #10596
Lennart Poettering [Wed, 17 Jul 2019 08:59:29 +0000 (10:59 +0200)]
nspawn: make use of SIGINT handling when copying files
Fixes: #13079
Lennart Poettering [Wed, 17 Jul 2019 08:58:49 +0000 (10:58 +0200)]
btrfs-util: expose SIGINT behaviour in snapshot copy fallback, too
Lennart Poettering [Wed, 17 Jul 2019 08:58:22 +0000 (10:58 +0200)]
copy: optionally check for SIGINT regularly, and abort operation safely
Zbigniew Jędrzejewski-Szmek [Wed, 17 Jul 2019 07:14:20 +0000 (09:14 +0200)]
Merge pull request #12927 from fbuihuu/coredump-cleanup-part-2
Coredump cleanup part 2