Lennart Poettering [Fri, 5 Mar 2021 19:39:58 +0000 (20:39 +0100)]
basic: move shared/sysctl-util.[ch] → basic/
This is self-contained ans allows us later to use the provided APIs from
other code in src/basic/
Lennart Poettering [Fri, 5 Mar 2021 19:34:16 +0000 (20:34 +0100)]
sysctl-util: use read_full_virtual_file() for reading sysctls
Given these files are part of procfs, let's use the correct API calls
for reading them.
This changes one occasion of read_one_line_file() to
read_full_virtual_file(), which superficially is a different thing, but
shouldn't actually be a difference, since sysctls can't be longer than
4K anyway, and the piecemeal logic behind read_one_line_file() cannot
work with the special semantics of procfs anyway.
Zbigniew Jędrzejewski-Szmek [Fri, 5 Mar 2021 16:51:34 +0000 (17:51 +0100)]
Merge pull request #18852 from yuwata/tree-wide-use-UINT64_MAX
tree-wide: use UINT64_MAX or friends
Frantisek Sumsal [Fri, 5 Mar 2021 13:19:21 +0000 (14:19 +0100)]
Merge pull request #18885 from yuwata/udev-fix-import-program-rhbz-
1935062
udev: fix importing program result
Yu Watanabe [Fri, 5 Mar 2021 02:32:49 +0000 (11:32 +0900)]
test: add test for IMPORT{program}= udev rule
Yu Watanabe [Fri, 5 Mar 2021 09:36:04 +0000 (18:36 +0900)]
test: merge udev tests
Yu Watanabe [Fri, 5 Mar 2021 02:34:54 +0000 (11:34 +0900)]
Merge pull request #18873 from yuwata/use-config-parse-many-and-null-or-empty-path
tree-wide: use config_parse_many() and null_or_empty_path()
Yu Watanabe [Thu, 4 Mar 2021 08:51:25 +0000 (17:51 +0900)]
dhcp-server: also append specified additional options and vendor specific option on DHCP_OFFER
Fixes #15780.
Yu Watanabe [Fri, 5 Mar 2021 02:31:30 +0000 (11:31 +0900)]
udev: also not unescape command result on debug log
Yu Watanabe [Fri, 5 Mar 2021 00:37:24 +0000 (09:37 +0900)]
udev: do not unescape command result
This fixes a bug introduced by
28a5065149c31a8689738ddcd1100502371a7c34.
Fixes RHBZ#
1935062 (https://bugzilla.redhat.com/show_bug.cgi?id=
1935062).
Yu Watanabe [Fri, 5 Mar 2021 00:29:57 +0000 (09:29 +0900)]
strv: introduce strv_split_newlines_full()
Alastair Pharo [Fri, 5 Mar 2021 00:10:54 +0000 (11:10 +1100)]
hwdb: add fuzz for Dell Latitude E7470 (#18876)
Yu Watanabe [Thu, 4 Mar 2021 08:21:22 +0000 (17:21 +0900)]
install: use null_or_empty_path()
Yu Watanabe [Thu, 4 Mar 2021 08:25:22 +0000 (17:25 +0900)]
network: use null_or_empty_path()
This also drops unnecessary fseek().
Yu Watanabe [Thu, 4 Mar 2021 08:10:08 +0000 (17:10 +0900)]
udev/net: use null_or_empty_path()
Yu Watanabe [Thu, 4 Mar 2021 07:48:57 +0000 (16:48 +0900)]
udev/net: make .link files support drop-in config
Lennart Poettering [Thu, 4 Mar 2021 17:52:10 +0000 (18:52 +0100)]
copy: move sync_rights() to copy.c and rename copy_rights()
It's so similar to copy_access(), hence let's move it over and rename it
in similar style to the rest of the functions.
No change in behaviour, just moving things over.
Lennart Poettering [Mon, 1 Feb 2021 16:50:56 +0000 (17:50 +0100)]
copy: simplify error paths when creating temporary files
Yu Watanabe [Wed, 3 Mar 2021 04:40:28 +0000 (13:40 +0900)]
efi: introduce UINT32_MAX and UINT64_MAX
Yu Watanabe [Wed, 3 Mar 2021 04:07:10 +0000 (13:07 +0900)]
tree-wide: use UINT64_MAX or friends
Yu Watanabe [Wed, 3 Mar 2021 05:01:02 +0000 (14:01 +0900)]
table: drop last SIZE_MAX from table_set_sort() and table_set_display()
Yu Watanabe [Wed, 3 Mar 2021 03:56:52 +0000 (12:56 +0900)]
tree-wide: use usec_add() and usec_sub_unsigned()
Yu Watanabe [Thu, 4 Mar 2021 07:38:18 +0000 (16:38 +0900)]
journal: make namespace invocation also support drop-in config
Lennart Poettering [Thu, 4 Mar 2021 15:23:46 +0000 (16:23 +0100)]
run: tweak algorithm for generating unit name from dbus unique name
This reverts behaviour of systemd-run's unit name generation to the
status quo ante of #18871: we chop off the ":1." prefix if we can.
However, to address the issue that the unique name can overrun we then
do what #18871 did as fallback: only chop off the ":" prefix.
This way we should have pretty names that look like they always looked
in the common case, but in the case of a unique name overrun we still
will have names that work.
Follow-up for #18871
Lennart Poettering [Thu, 4 Mar 2021 15:03:07 +0000 (16:03 +0100)]
rm-rf: fix up chmod in the _cleanup_ rm_rf() destructors
REMOVE_CHMOD is necessary to remove files/dirs that are owned by us but
have an access mode that would not allow us to remove them. In generic
destructor calls for use with `_cleanup_` that are "fire-and-forget"
style we should make use of that, to maximize the chance we can actually
remove the files/dirs.
(Also, add in REMOVE_MISSING_OK. Just because prettier, we ignore the
return codes anyway, but it' a bit nicer to ignore a bit fewer errors.)
Lennart Poettering [Wed, 3 Mar 2021 16:28:09 +0000 (17:28 +0100)]
man: document how to use --network-interface= during boot
Fixes: #18793
Lennart Poettering [Thu, 4 Mar 2021 14:59:46 +0000 (15:59 +0100)]
fileio: minor read_full_stream_full() optimization
If we shall read as much of a file/stream as we can, then it makes sense
to use the full malloc()ed memory, not just the part we asked for.
Lennart Poettering [Thu, 4 Mar 2021 17:04:28 +0000 (18:04 +0100)]
Merge pull request #18615 from xry111/private-ipc-1
New directives PrivateIPC and IPCNamespacePath
caoxia [Thu, 28 Jan 2021 12:50:08 +0000 (20:50 +0800)]
trans_time sec is int32,it will overflow if local system time is later than 2038.
Lennart Poettering [Thu, 4 Mar 2021 16:23:17 +0000 (17:23 +0100)]
Merge pull request #18840 from yuwata/libudev-monitor-tiny-cleanup
io-util: introduce ppoll_usec()
Lennart Poettering [Thu, 4 Mar 2021 15:06:06 +0000 (16:06 +0100)]
install: include OS headers before our own definition
Doesn't matter much, but matches more our usual coding style where our
definition are done after all headers provided by the OS are included.
Zbigniew Jędrzejewski-Szmek [Thu, 4 Mar 2021 11:25:59 +0000 (12:25 +0100)]
Merge pull request #18773 from yuwata/network-move-several-functions
network: move several functions
Anita Zhang [Thu, 4 Mar 2021 01:25:40 +0000 (17:25 -0800)]
run: update dbus unique names check
Some code in systemd-run checks that a bus's unique name must start with
`:1.`. However the dbus specification on unique connection names only specifies
that it must begin with a colon. And the freedesktop/dbus implementation allows
allows unique names to go up to `:INT_MAX.INT_MAX`. So update the
current check to only look for a colon at the beginning.
Zbigniew Jędrzejewski-Szmek [Wed, 3 Mar 2021 23:36:24 +0000 (00:36 +0100)]
core: fix mtime calculation of dropin files
Nominally, the bug was in unit_load_dropin(), which just took the last mtime
instead of calculating the maximum. But instead of adding code to wrap the
loop, this patch goes in the other direction.
All (correct) callers of config_parse() followed a very similar pattern to
calculate the maximum mtime. So let's simplify things by making config_parse()
assume that mtime is initialized and update it to the maximum. This makes all
the callers that care about mtime simpler and also fixes the issue in
unit_load_dropin().
config_parse_many_nulstr() and config_parse_many() are different, because it
makes sense to call them just once, and current ret_mtime behaviour make sense.
Fixes #17730, https://bugzilla.redhat.com/show_bug.cgi?id=
1933137.
Zbigniew Jędrzejewski-Szmek [Thu, 4 Mar 2021 00:09:42 +0000 (01:09 +0100)]
coredumpctl: show container hostame
Fixes #18321. I don't see any point in showing the hostname in
_HOSTNAME: it's either the same as COREDUMP_HOSTNAME or irrelevant.
Yu Watanabe [Thu, 4 Mar 2021 05:51:10 +0000 (14:51 +0900)]
Merge pull request #18864 from poettering/fsync-tweaks
make sure fsync_directory_of_file() + fsync_full() work on more inode types reasonably
Lennart Poettering [Tue, 26 Jan 2021 15:47:07 +0000 (16:47 +0100)]
rm-rf: fstatat() might fail if containing dir has limited access mode, patch that too
Lennart Poettering [Mon, 1 Feb 2021 16:11:26 +0000 (17:11 +0100)]
fs-util: when opening arbitrary inodes, better use O_NONBLOCK
In case this is a device node where opening might block.
Lennart Poettering [Wed, 6 Jan 2021 14:50:14 +0000 (15:50 +0100)]
gpt: generalize validator for GPT partition labels
This adds a proper validator function.
No change in behaviour, just some minor refactoring (this should be
useful elsewhere later on though)
Lennart Poettering [Mon, 1 Feb 2021 16:04:47 +0000 (17:04 +0100)]
fs-util: port open_parent() to path_extract_directory()
Hela Basa [Wed, 3 Mar 2021 20:54:21 +0000 (21:54 +0100)]
po: Added translation using Weblate (Sinhala)
Co-authored-by: Hela Basa <r45xveza@pm.me>
Yu Watanabe [Tue, 2 Mar 2021 19:11:45 +0000 (04:11 +0900)]
tree-wide: use ppoll_usec()
Yu Watanabe [Tue, 2 Mar 2021 18:55:22 +0000 (03:55 +0900)]
io-util: introduce ppoll_usec() helper function
Yu Watanabe [Tue, 2 Mar 2021 08:17:16 +0000 (17:17 +0900)]
libudev: shorten code a bit
fd_wait_for_event() or ppoll() does not return -EAGAIN.
Lennart Poettering [Fri, 26 Feb 2021 21:44:39 +0000 (22:44 +0100)]
fs-util: handle gracefully if fsync_full() is called on block devices and such
Lennart Poettering [Wed, 3 Feb 2021 19:40:40 +0000 (20:40 +0100)]
fs-util: allow fsync_directory_of_file() on directories too
(in which case the parent dir is synced)
Xℹ Ruoyao [Wed, 3 Mar 2021 16:08:09 +0000 (00:08 +0800)]
Remount /dev/mqueue in unshared mount namespace for PrivateIPC
Xℹ Ruoyao [Tue, 16 Feb 2021 15:58:56 +0000 (23:58 +0800)]
New directives PrivateIPC and IPCNamespacePath
Xℹ Ruoyao [Tue, 16 Feb 2021 12:49:15 +0000 (20:49 +0800)]
Refactor network namespace specific functions in generic helpers
Xℹ Ruoyao [Tue, 16 Feb 2021 12:58:03 +0000 (20:58 +0800)]
fuzz: add NetworkNamespacePath= into directives.service
Vincent Pelletier [Sat, 27 Feb 2021 00:17:06 +0000 (00:17 +0000)]
rules: Move ID_SMARTCARD_READER definition to a <70 configuration.
70-uaccess.rules sets the uaccess tag on devices with ID_SMARTCARD_READER
set, but it is set in 99-systemd.rules .
Move this to a 60-*.rules which already matches USB CCID class, factorising
the matching, so 70-uaccess.rules sets up these devices as expected.
Yu Watanabe [Wed, 3 Mar 2021 07:42:18 +0000 (16:42 +0900)]
network: do not remove LLDP state file on failure
Yu Watanabe [Wed, 3 Mar 2021 07:34:51 +0000 (16:34 +0900)]
network: use conservative_rename() at one more place
Yu Watanabe [Wed, 3 Mar 2021 07:31:28 +0000 (16:31 +0900)]
network: remove DHCP lease and LLDP state file on link_free()
Yu Watanabe [Wed, 3 Mar 2021 07:25:54 +0000 (16:25 +0900)]
dhcp: use unlink_and_freep() in dhcp_lease_save()
Yu Watanabe [Sun, 21 Feb 2021 06:51:51 +0000 (15:51 +0900)]
network: move manager_{rtnl,udev}_process_link() to networkd-link.[ch]
Yu Watanabe [Sun, 21 Feb 2021 06:45:00 +0000 (15:45 +0900)]
network: drop unnecessary {}
Yu Watanabe [Sun, 21 Feb 2021 06:26:15 +0000 (15:26 +0900)]
network: minor style fixes
Yu Watanabe [Sun, 21 Feb 2021 06:21:12 +0000 (15:21 +0900)]
network: use unlink_and_freep() cleanup functions
This also makes state files not removed on failure.
Yu Watanabe [Sun, 21 Feb 2021 05:23:04 +0000 (14:23 +0900)]
network: move state file related functions to networkd-state-file.[ch]
Lennart Poettering [Tue, 2 Mar 2021 17:57:04 +0000 (18:57 +0100)]
fstab-generator: add new root=tmpfs option
It's useful to be able to combine a regular /usr/ file system with a
tmpfs as root, for an OS that boots up in volatile mode on every single
boot. Let's add explicit support for this via root=tmpfs.
Note the relationship to the existing systemd.volatile= option:
1. The kernel command line "root=/dev/… systemd.volatile=yes" will mount
the specified root fs, and then hide everything at the top by
overmounting it with a tmpfs, except for the /usr subtree.
2. The kernel command line "root=tmpfs mount.usr=/dev/…" otoh will mount
a toot fs at the top (just like the case above), but will then mount
the top-level dir of the fs specified in mount.usr= directly below
it.
Or to say this differently: in the first case /usr/ from the physical
storage fs is going to become /usr/ of the hierarchy ultimately booted,
while in the second case / from the physical storage fs is going to
become /usr of the hierarchy booted.
Philosophically I figure systemd.volatile= is more an option for
"one-off" boots, while root=tmpfs is something to have as default mode
of operation for suitable images.
This is currently hard to test reasonably, since Dracut refuses to
accept root=tmpfs. This needs to be addressed separately though.
Lennart Poettering [Tue, 2 Mar 2021 20:33:35 +0000 (21:33 +0100)]
time-util: simplify overflow check
And don't rely on 2s complement.
Luca Boccassi [Tue, 2 Mar 2021 19:22:53 +0000 (19:22 +0000)]
Merge pull request #18834 from poettering/path-extract
Beef up path_extract_filename() a bit, and introduce path_extract_directory()
Lennart Poettering [Wed, 30 Dec 2020 20:49:10 +0000 (21:49 +0100)]
util: add helpers for generating colored check mark glyphs from bools
Lennart Poettering [Fri, 26 Feb 2021 17:24:58 +0000 (18:24 +0100)]
tmpfile: port tempfn_*() to path_extract_*()
Lennart Poettering [Tue, 23 Feb 2021 16:22:31 +0000 (17:22 +0100)]
machinectl: make sure of path_extract_filename() returning O_DIRECTORY
Lennart Poettering [Tue, 23 Feb 2021 15:49:29 +0000 (16:49 +0100)]
path-util: return O_DIRECTORY from path_extract_filename() when path ends in slash
Let's fine-tune the path_extract_filename() interface: on succes return
O_DIRECTORY as indicator that the input path was slash-suffixed, and
regular 0 otherwise. This is useful since in many cases it is useful to
filter out paths that must refer to dirs early on.
I opted for O_DIRECTORY instead of the following other ideas:
1. return -EISDIR: I think the function should return an extracted
filename even when referring to an obvious dir, so this is not an
option.
2. S_ISDIR, this was a strong contender, but I think O_DIRECTORY is a
tiny bit nicer since quite likely we will go on and open the thing,
maybe with openat(), and hence it's quite nice to be able to OR in
the return value into the flags argument of openat().
3. A new enum defined with two values "dont-know" and
"definitely-directory". But I figured this was unnecessary, given we
have other options too, that reuse existing definitions for very
similar purposes.
Lennart Poettering [Tue, 26 Jan 2021 11:28:23 +0000 (12:28 +0100)]
path-util: add path_extract_directory(), to match path_extract_filename()
These two together are a lot like dirname() + basename() but have the
benefit that they return clear errors when one passes a special case
path to them where the extraction doesn't make sense, i.e. "", "/",
"foo", "foo/" and so on.
Sooner or later we should probably port all our uses of
dirname()/basename() over to this, to catch these special cases more
safely.
Luca Boccassi [Tue, 2 Mar 2021 11:12:09 +0000 (11:12 +0000)]
man: document usage of SD_BUS_CREDS_AUGMENT
Lennart Poettering [Tue, 2 Mar 2021 10:03:44 +0000 (11:03 +0100)]
Merge pull request #18841 from keszybz/a-bunch-of-man-page-updates
Two minor small man page updates
Tom Shield [Tue, 2 Mar 2021 09:56:06 +0000 (03:56 -0600)]
udev: add i2c to 60-persistent-input.rules for by-path (#18808)
Add the i2c subsystem to those that create by-path links.
i2c devices may not have IDs so we can't rely on the by-id links
but they (or some of them) should at least have a path that we can use.
Martin Wilck [Thu, 25 Feb 2021 16:09:03 +0000 (17:09 +0100)]
sd-device: don't use BPF filtering for kernel monitors
BPF filtering accesses fields in the netlink header that are
only filled in by libudev, never by the kernel. Therefore adding
BPF filters for kernel monitors is pointless. Even false filtering
of kernel events might be possible; at least it's hard to prove that
it can't occur.
Yu Watanabe [Tue, 2 Mar 2021 05:13:34 +0000 (14:13 +0900)]
tree-wide: fix typo
Zbigniew Jędrzejewski-Szmek [Tue, 2 Mar 2021 08:37:49 +0000 (09:37 +0100)]
man: reword sentence about lone coredumps
Let's make it clear that they are not as useful as the full thing.
Zbigniew Jędrzejewski-Szmek [Tue, 2 Mar 2021 08:35:22 +0000 (09:35 +0100)]
man: add note about "SIG" prefix
Yu Watanabe [Tue, 2 Mar 2021 05:15:18 +0000 (14:15 +0900)]
Merge pull request #18832 from keszybz/resolved-stop-sources
Always stop sd-event sources in resolved when unreffing them
Lennart Poettering [Fri, 26 Feb 2021 16:45:01 +0000 (17:45 +0100)]
fs-util: use ERRNO_IS_NOT_SUPPORTED() at two more places where we can't be sure of the backing implementation
Lennart Poettering [Fri, 26 Feb 2021 16:39:55 +0000 (17:39 +0100)]
btrfs-util: add helper that abstracts "might be btrfs subvol?" check
Let#s not hardcode inode nr 256 everywhere, but abstract this check
slightly.
Lennart Poettering [Thu, 25 Feb 2021 11:04:49 +0000 (12:04 +0100)]
test-signal-util: add test for signal_is_blocked()
Zbigniew Jędrzejewski-Szmek [Mon, 1 Mar 2021 22:10:06 +0000 (23:10 +0100)]
resolved: disable event sources before unreffing them
We generally operate on the assumption that a source is "gone" as soon
as we unref it. This is generally true because we have the only reference.
But if something else holds the reference, our unref doesn't really stop
the source and it could fire again.
In particular, on_query_timeout() is called with DnsQuery* as userdata, and
it calls dns_query_stop() which invalidates that pointer. If it was ever
called again, we'd be accessing already-freed memory.
I don't see what would hold the reference. sd-event takes a temporary reference,
but on the sd_event object, not on the individual sources. And our sources
are non-floating, so there is no reference from the sd_event object to the
sources.
For #18427.
Zbigniew Jędrzejewski-Szmek [Mon, 1 Mar 2021 21:49:06 +0000 (22:49 +0100)]
resolved: unref event object after the sources
It shouldn't matter because of all the refcounting, but it looks unclean.
Luca Boccassi [Mon, 1 Mar 2021 22:11:44 +0000 (22:11 +0000)]
Merge pull request #18831 from keszybz/a-bunch-of-man-page-updates
A bunch of man page updates
Zbigniew Jędrzejewski-Szmek [Mon, 1 Mar 2021 19:53:22 +0000 (20:53 +0100)]
man: document \u and \U, say that utf-8 is allowed
Zbigniew Jędrzejewski-Szmek [Mon, 1 Mar 2021 19:42:33 +0000 (20:42 +0100)]
man: move two sysv-specific variables to docs
https://github.com/systemd/systemd/pull/18827#discussion_r584807684
Zbigniew Jędrzejewski-Szmek [Mon, 1 Mar 2021 19:30:40 +0000 (20:30 +0100)]
man: clarify what is inside/outside the container in coredump info
Zbigniew Jędrzejewski-Szmek [Mon, 1 Mar 2021 12:51:46 +0000 (13:51 +0100)]
man: update link to systemd-coredump-python
This got moved under the systemd umbrella a long time ago.
Github redirects from the old path, so the link worked, but it's
nicer to use the real location.
Zbigniew Jędrzejewski-Szmek [Mon, 1 Mar 2021 14:14:40 +0000 (15:14 +0100)]
Merge pull request #18827 from keszybz/a-bunch-of-man-page-updates
A bunch of man page updates
Zbigniew Jędrzejewski-Szmek [Mon, 1 Mar 2021 14:13:51 +0000 (15:13 +0100)]
Merge pull request #18828 from keszybz/three-fixes
Three small fixes
Zbigniew Jędrzejewski-Szmek [Mon, 1 Mar 2021 09:08:28 +0000 (10:08 +0100)]
man: say that machine-info doesn't have to exist
Esp. CHASSIS is only useful as an override. Make that clear in the description.
Fixes #3496.
Zbigniew Jędrzejewski-Szmek [Sun, 28 Feb 2021 19:44:25 +0000 (20:44 +0100)]
man: tweak descriptions of how tmpfiles should be started
We shouldn't imply that invocation without any parameters is OK.
Also, mention that the service can be restarted.
Fixes #8684.
Zbigniew Jędrzejewski-Szmek [Sun, 28 Feb 2021 17:37:01 +0000 (18:37 +0100)]
man: describe quoting and specifiers in Environment=
Fixes #10604.
Zbigniew Jędrzejewski-Szmek [Sun, 28 Feb 2021 17:36:00 +0000 (18:36 +0100)]
man: move quoting description to systemd.syntax
We use very similar quoting rules in many places. Let's move this
lengthy text out of systemd.service page.
Zbigniew Jędrzejewski-Szmek [Sun, 28 Feb 2021 17:08:53 +0000 (18:08 +0100)]
man: explain how to invoke tmpfiles for debugging
Fixes #11914.
Zbigniew Jędrzejewski-Szmek [Sun, 28 Feb 2021 16:54:05 +0000 (17:54 +0100)]
man: mention that != matches nonexistent keys too
Fixes #15984.
Zbigniew Jędrzejewski-Szmek [Sun, 28 Feb 2021 16:45:06 +0000 (17:45 +0100)]
man: reorder match types in udev rules
The plural version should always be adjacent to the singular one.
And the plural should not be explained before the singular one…
Zbigniew Jędrzejewski-Szmek [Sun, 28 Feb 2021 16:36:00 +0000 (17:36 +0100)]
man: add footnote explaining why "localhost" query is sent out to the network
I tried to make the explanation brief, but this isn't so easy. It seems better
to push this out to a footnote instead of the main text.
Fixes #16584.
Zbigniew Jędrzejewski-Szmek [Sun, 28 Feb 2021 16:12:38 +0000 (17:12 +0100)]
man: move motivational explanation to footnote
Zbigniew Jędrzejewski-Szmek [Sun, 28 Feb 2021 13:12:12 +0000 (14:12 +0100)]
man: describe the syntax for {Job,}{Running,}TimeoutSec=
Fixes #16644.
Also break the text into paragraphs to make it a bit easier to read.
Zbigniew Jędrzejewski-Szmek [Sun, 28 Feb 2021 12:43:57 +0000 (13:43 +0100)]
man: move description of $SYSTEMD_SYSVINIT_PATH to the only user
Zbigniew Jędrzejewski-Szmek [Sun, 28 Feb 2021 12:41:58 +0000 (13:41 +0100)]
man: reuse common-variables in systemd(1)
This requires a bit of gimnastics, but I think it's still better than
status quo ante, and better than duplicating the text.