Elisei Roca [Tue, 21 Jul 2020 20:14:53 +0000 (22:14 +0200)]
test: adapt test-functions for SUSE
Zbigniew Jędrzejewski-Szmek [Wed, 22 Jul 2020 08:40:19 +0000 (10:40 +0200)]
Merge pull request #16514 from keszybz/zstd-decompress-fix
Fix coredumpctl operation with zstd-compressed journals
Zbigniew Jędrzejewski-Szmek [Wed, 22 Jul 2020 08:34:12 +0000 (10:34 +0200)]
Merge pull request #16540 from poettering/acl-fix
two ACL handling fixes
Lennart Poettering [Tue, 21 Jul 2020 20:21:28 +0000 (22:21 +0200)]
coredump: port to use common add_acls_for_user()
It's line-by-line the same logic, hence use the common implementation.
Lennart Poettering [Tue, 21 Jul 2020 20:19:17 +0000 (22:19 +0200)]
acl-util: fix error handling in add_acls_for_user()
Lennart Poettering [Tue, 21 Jul 2020 14:25:45 +0000 (16:25 +0200)]
offline-passwd: use chase_symlinks()
In case the passwd/group file is symlinked, follow things correctly.
Follow-up for: #16512
Addresses: https://github.com/systemd/systemd/pull/16512#discussion_r458073677
Lennart Poettering [Tue, 21 Jul 2020 15:46:14 +0000 (17:46 +0200)]
update TODO
Zbigniew Jędrzejewski-Szmek [Tue, 21 Jul 2020 15:16:52 +0000 (17:16 +0200)]
man: update docs with the new functions and other enhancements
Zbigniew Jędrzejewski-Szmek [Sun, 19 Jul 2020 09:05:44 +0000 (11:05 +0200)]
homectl: fix warning about unused function
../src/home/homectl-pkcs11.c:19:13: warning: ‘pkcs11_callback_data_release’ defined but not used [-Wunused-function]
19 | static void pkcs11_callback_data_release(struct pkcs11_callback_data *data) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
Zbigniew Jędrzejewski-Szmek [Sun, 19 Jul 2020 08:22:21 +0000 (10:22 +0200)]
TODO: add entry for XZ
The docs for XZ don't seem to answer this at first blush, or maybe
I'm looking in the wrong place... This might make XZ less terribly slow,
but on the other hand, almost nobody uses it, so it doesn't matter that
much.
Zbigniew Jędrzejewski-Szmek [Sun, 19 Jul 2020 08:18:46 +0000 (10:18 +0200)]
journal/compress: remove loop in decompress_startswith_zstd()
This should be more efficient with no downsides. Same considerations as in the
previous commit hold.
Zbigniew Jędrzejewski-Szmek [Sat, 18 Jul 2020 19:39:03 +0000 (21:39 +0200)]
journal/compress: fix zstd decompression with capped output size
decompress_blob_zstd() would allocate ever bigger buffers in a loop trying to
get a buffer big enough to decompress the input data. This is wasteful, since
we can just query the size of the decompressed data from the compressed header.
Worse, it doesn't work when the output size is capped, i.e. when dst_max != 0.
If the decompressed blob happened to be bigger than dst_max, decompression
would fail with -ENOBUFS. We need to use "stream decompression" instead, and
only get min(uncompressed size, dst_max) bytes of output.
Fixes https://bugzilla.redhat.com/show_bug.cgi?id=
1856037 in a second way.
Zbigniew Jędrzejewski-Szmek [Fri, 17 Jul 2020 19:51:40 +0000 (21:51 +0200)]
journal: use -EPROTONOSUPPORT for unknown compression
We might add more compression types in the future, and we should treat that
as unsupported, and not a format error.
Zbigniew Jędrzejewski-Szmek [Fri, 17 Jul 2020 19:00:12 +0000 (21:00 +0200)]
sd-journal: when enumerating, continue even after an inaccessible field
SD_JOURNAL_FOREACH_DATA() and SD_JOURNAL_FOREACH_UNIQUE() would immediately
terminate when a field couldn't be accessed. This can happen for example when a
field is compressed with an unavailable compression format. But it's likely
that this is the wrong thing to do: the caller for example might want to
iterate over the fields but isn't interested in all of them. coredumpctl is
like this: it uses SD_JOURNAL_FOREACH_DATA() but only uses a subset of the
fields.
Add two new functions sd_journal_enumerate_good_data() and
sd_journal_enumerate_good_unique() that retry sd_journal_enumerate_data() and
sd_journal_enumerate_unique() if the return value is something that applies to
a single field: ENOBUS, E2BIG, EOPNOTSUPP.
Fixes https://bugzilla.redhat.com/show_bug.cgi?id=
1856037.
An alternative would be to make the macros themselves smarter instead of adding
new symbols, and do the looping internally in the macro. I don't like that
approach for two reasons. First, it would embed the logic in the macro, so
recompilation would be required if we decide to update the logic. With the
current version of the patch, recompilation is required to use the new symbols,
but after that, library upgrades are enough. So the current approach is safer
in case further updates are needed. Second, our headers use primitive C, and it
is hard to do the macros without using newer features.
Lennart Poettering [Tue, 21 Jul 2020 07:56:21 +0000 (09:56 +0200)]
user-util: indentation fix
Lennart Poettering [Tue, 21 Jul 2020 14:24:41 +0000 (16:24 +0200)]
update NEWS
Lennart Poettering [Tue, 21 Jul 2020 12:16:32 +0000 (14:16 +0200)]
Merge pull request #16504 from poettering/read-file-ipc
fileio: teach read_full_file() the ability to read data from AF_UNIX stream socket
Lennart Poettering [Tue, 21 Jul 2020 09:13:54 +0000 (11:13 +0200)]
import: always prefer GNU tar, to avoid cmdline incompatibilities
Fixes: #16506
Lennart Poettering [Tue, 21 Jul 2020 08:19:34 +0000 (10:19 +0200)]
fileio: add brief explanations for flags
Lennart Poettering [Fri, 17 Jul 2020 10:58:19 +0000 (12:58 +0200)]
tree-wide: use READ_FULL_FILE_CONNECT_SOCKET at various places
Let's use the new flag wherever we read key material/passphrases/hashes
off disk, so that people can plug in their own IPC service as backend if
they like, easily.
(My main goal was actually to support this for crypttab key files — i.e.
that you can specify AF_UNIX sockets as third column in crypttab — but
that's harder to implement, since the keys are read via libcryptsetup's
API, not ours.)
Lennart Poettering [Fri, 17 Jul 2020 10:57:00 +0000 (12:57 +0200)]
fileio: allow to read base64/hex data as strings
There's really no reason to prohibit this, hence don't.
Lennart Poettering [Fri, 17 Jul 2020 10:26:01 +0000 (12:26 +0200)]
fileio: add support for read_full_file() on AF_UNIX stream sockets
Optionally, teach read_full_file() the ability to connect to an AF_UNIX
socket if the specified path points to one.
Lennart Poettering [Fri, 17 Jul 2020 09:53:22 +0000 (11:53 +0200)]
fileio: add explicit flag for generating world executable warning when reading file
Zbigniew Jędrzejewski-Szmek [Tue, 21 Jul 2020 07:10:00 +0000 (09:10 +0200)]
Merge pull request #16519 from yuwata/networkctl-altnames
networkctl: tiny cleanups about alternative names
Zbigniew Jędrzejewski-Szmek [Tue, 21 Jul 2020 06:06:17 +0000 (08:06 +0200)]
Merge pull request #16353 from yuwata/network-dns-sni
resolve, network: more SNI and port number support
Luca Boccassi [Mon, 20 Jul 2020 15:43:18 +0000 (16:43 +0100)]
test: run systemd-dissect and systemd-run with log level debug in TEST-50-DISSECT
Hans de Goede [Mon, 20 Jul 2020 13:06:43 +0000 (15:06 +0200)]
logind: Fix org.freedesktop.login1.set-reboot-to-boot-loader-menu saving to the wrong file in the non EFI case
According to the docs, and to the
org.freedesktop.login1.get-reboot-to-boot-loader-menu code, the
(oneshot) boot-loader-menu timeout should be stored in
/run/systemd/reboot-to-boot-loader-menu, but the set method was storing it
in /run/systemd/reboot-to-loader-menu.
This commit fixes this. Note that the fixed name also is a better match
for the dbus call names and matches the related
/run/systemd/reboot-to-boot-loader-entry structure, so fixing the set code,
rather then the get code + docs seems like the right thing to do here.
fangxiuning [Mon, 20 Jul 2020 11:20:52 +0000 (19:20 +0800)]
bus: use bus_log_connect_error to print error message
Yu Watanabe [Sun, 19 Jul 2020 04:57:51 +0000 (13:57 +0900)]
man: update explanation about the format to specify DNS servers
Yu Watanabe [Sun, 19 Jul 2020 03:43:39 +0000 (12:43 +0900)]
resolvectl: use bus_message_read_in_addr_auto()
Yu Watanabe [Sun, 19 Jul 2020 03:32:21 +0000 (12:32 +0900)]
network, resolve: use bus_message_read_ifindex() or friends
Yu Watanabe [Sun, 19 Jul 2020 03:07:27 +0000 (12:07 +0900)]
util: introduce bus_message_read_ifindex()
Yu Watanabe [Sun, 19 Jul 2020 02:32:18 +0000 (11:32 +0900)]
util: introduce bus_mesage_read_dns_servers()
Yu Watanabe [Sun, 19 Jul 2020 01:57:04 +0000 (10:57 +0900)]
util: introduce helper functions to read in_addr from bus message
Yu Watanabe [Sun, 19 Jul 2020 01:43:04 +0000 (10:43 +0900)]
util: drop duplicated inclusion of sd-bus.h
Yu Watanabe [Fri, 3 Jul 2020 13:16:55 +0000 (22:16 +0900)]
test-network: add tests for DNS= with port number and SNI
Yu Watanabe [Fri, 3 Jul 2020 12:24:25 +0000 (21:24 +0900)]
resolvectl: show DNS servers with port and SNI
Yu Watanabe [Fri, 3 Jul 2020 12:05:15 +0000 (21:05 +0900)]
resolvectl: make DNS servers can be specified with port number and SNI
Yu Watanabe [Fri, 3 Jul 2020 12:03:51 +0000 (21:03 +0900)]
resolve: add DBus properties which support DNS SNI and port number
Yu Watanabe [Fri, 3 Jul 2020 11:31:15 +0000 (20:31 +0900)]
resolve: add DBus method to set DNS server with port number and SNI
Yu Watanabe [Fri, 3 Jul 2020 11:03:00 +0000 (20:03 +0900)]
network: add DBus method to set DNS server with port number and SNI
Yu Watanabe [Fri, 3 Jul 2020 09:34:37 +0000 (18:34 +0900)]
network: save DNS servers specified by DBus interface
Also, filter out DNS servers which do not match link ifindex.
Yu Watanabe [Fri, 3 Jul 2020 09:29:13 +0000 (18:29 +0900)]
network: do not save DNS= entries not match link ifindex
Yu Watanabe [Fri, 3 Jul 2020 07:48:29 +0000 (16:48 +0900)]
network: support port number and SNI in [Network] DNS=
Yu Watanabe [Mon, 13 Jul 2020 00:29:14 +0000 (09:29 +0900)]
resolve: read/save port number and SNI from/into link state file
Yu Watanabe [Mon, 13 Jul 2020 00:11:49 +0000 (09:11 +0900)]
resolve: compare port and SNI in dns_server_hash_ops
Yu Watanabe [Mon, 13 Jul 2020 00:05:15 +0000 (09:05 +0900)]
resolve: also compare port and SNI in dns_server_find()
Yu Watanabe [Sun, 12 Jul 2020 23:58:02 +0000 (08:58 +0900)]
resolve: support port specifier in DNS= setting
Yu Watanabe [Sun, 12 Jul 2020 23:27:10 +0000 (08:27 +0900)]
resolve: ignore empty server name
Just for safety.
Yu Watanabe [Sun, 12 Jul 2020 22:09:55 +0000 (07:09 +0900)]
util: introduce 'struct in_addr_full' and its helper functions
Yu Watanabe [Sun, 12 Jul 2020 21:49:41 +0000 (06:49 +0900)]
util: introduce in_addr_port_ifindex_name_from_string_auto() and in_addr_port_ifindex_name_to_string()
Yu Watanabe [Thu, 2 Jul 2020 01:25:19 +0000 (10:25 +0900)]
resolve: propagate error in link_load_user()
Most error path in link_load_user() are ENOMEM. Hence, it is critical.
Yu Watanabe [Mon, 20 Jul 2020 17:13:24 +0000 (02:13 +0900)]
Merge pull request #16518 from yuwata/network-fix-failure-in-updating-mac-address
network: fix failures in updating MAC address
Frantisek Sumsal [Mon, 20 Jul 2020 15:51:32 +0000 (17:51 +0200)]
travis: compile with -O1 with clang
libc in the Debian container got updated to 2.31, which in combination
with clang-9 triggers systemd/systemd#14865.
This has been fixed by https://reviews.llvm.org/D74712 which is (to my
knowledge) included in clang-10. To mitigate this without upgrading to
clang-10 we can compile with -O1 which works around it as well, see
https://bugzilla.redhat.com/show_bug.cgi?id=
1803203.
David Edmundson [Mon, 20 Jul 2020 11:42:13 +0000 (12:42 +0100)]
docs: Document xdg-autostart parameter X-systemd-skip
Zbigniew Jędrzejewski-Szmek [Mon, 20 Jul 2020 10:59:56 +0000 (12:59 +0200)]
Merge pull request #16478 from bluca/dissect_tests
Expand TEST-50-DISSECT to cover dm-verity features
Benjamin Berg [Mon, 20 Jul 2020 08:45:48 +0000 (10:45 +0200)]
docs: Update section about XDG autostart generator
The generator is already merged. So update the corresponding section to
describe the current status.
Zbigniew Jędrzejewski-Szmek [Mon, 20 Jul 2020 07:03:51 +0000 (09:03 +0200)]
Merge pull request #16497 from DaanDeMeyer/mkosi
mkosi: Keep mkosi.default out of the repository
Zbigniew Jędrzejewski-Szmek [Mon, 20 Jul 2020 07:00:02 +0000 (09:00 +0200)]
Merge pull request #16501 from yuwata/udev-fix-renaming
udev: fix issues in renaming interface vs alternative names
Yu Watanabe [Sun, 19 Jul 2020 16:40:21 +0000 (01:40 +0900)]
network: stop already running engines before updating MAC address
In NetworkdBridgeTests.test_bridge_configure_without_carrier of
systemd-networkd-tests.py
```
bridge99: MAC address: 2e:3a:ec:4d:d3:62
Assertion 'sd_ipv4ll_is_running(ll) == 0' failed at src/libsystemd-network/sd-ipv4ll.c:110, function int sd_ipv4ll_set_mac(sd_ipv4ll *, const struct ether_addr *)(). Ignoring.
bridge99: Could not update MAC address in IPv4LL client: Device or resource busy
```
Yu Watanabe [Sun, 19 Jul 2020 16:46:57 +0000 (01:46 +0900)]
radv: introduce sd_radv_is_running()
Yu Watanabe [Mon, 20 Jul 2020 04:43:38 +0000 (13:43 +0900)]
networkctl: do not ignore -EOPNOTSUPP when reading netlink message
If the kernel does not support alternative interface names, then
sd_netlink_message_read_strv() should just return -ENODATA.
Yu Watanabe [Mon, 20 Jul 2020 04:42:49 +0000 (13:42 +0900)]
networkctl: sort alternative names
Franck Bui [Thu, 16 Jul 2020 19:22:37 +0000 (21:22 +0200)]
vconsole-setup: downgrade log message when setting font fails on dummy console
Since commit
883eb9be985fd86d9cabe967eeeab91cdd396a81, vconsole-setup might be
called again to operate on dummy console where font operations are not
supported but where it's still important to have the correct keymap set [0][1].
vconsole-setup is mainly called by udev but can also be run via a dependency of
an early service. Both cases might end up calling vconsole-setup on the dummy
console.
The first case can happen during early boot even on systems that use (instead
of the dummy console) a "simple" video console driver supporting font
operations (such as vgacon) until a more specific driver (such as i915) takes
the console over. While this is happening vgacon is deactivated and temporarly
replaced by the dummy console [2].
There are also other cases where systemd-vconsole-setup might be called on
dummy console especially during (very) early boot. Indeed
systemd-vconsole-setup.service might be pulled in by early interactive services
such as 'dracut-cmdline-ask.service` which is run before udev.
If that happens on platforms with no grapical HWs (such as embedded ARM) or
with dummy console initially installed until a driver takes over (like Xen and
xen-fbfront) then setting font will fail.
Therefore this patch downgrades the log message emitted when setting font fails
to LOG_DEBUG and when font operations is not implemented like it's the case for
the dummy console.
Fixes: #16406.
[0] https://github.com/systemd/systemd/issues/10826
[1] https://bugzilla.redhat.com/show_bug.cgi?id=
1652473
[2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/vga/vgaarb.c?h=v5.7#n204
Yu Watanabe [Sun, 19 Jul 2020 15:57:40 +0000 (00:57 +0900)]
sd-netlink: make timeout message sealed
When sd_netlink_call_async() timed out, then we reply the synthetic
error message, but it was not sealed. So, reading the message causes
the following assertion:
```
Assertion 'm->sealed' failed at src/libsystemd/sd-netlink/netlink-message.c:652, function netlink_message_read_internal(). Ignoring.
```
Zbigniew Jędrzejewski-Szmek [Mon, 20 Jul 2020 05:48:57 +0000 (07:48 +0200)]
Merge pull request #16505 from yuwata/network-manage-foreign-routes-cleanups
network: do not enumerate foreign routes when ManageForeignRoutes=no, and tiny cleanups
Luca Boccassi [Sun, 19 Jul 2020 12:11:52 +0000 (13:11 +0100)]
nspawn: set container_host env vars before user arguments
Allows users on the command line to seamlessly override
$container_host_* just like they can override $container_id and
$container
YmrDtnJu [Sun, 19 Jul 2020 15:04:46 +0000 (17:04 +0200)]
networkd: Use NLM_F_ACK on the netlink message to add a neighbor.
sd_netlink_message_set_flags is called without NLM_F_ACK which results in
a timeout while networkd is waiting for an ACK that the kernel will never send.
Norbert Lange [Sat, 18 Jul 2020 23:40:06 +0000 (01:40 +0200)]
clang-format: set Break afer enum to false
if set to true, the opening bracket will be moved to the next line.
Yu Watanabe [Sat, 18 Jul 2020 21:46:05 +0000 (06:46 +0900)]
Merge pull request #16512 from keszybz/offline-passwd-altfiles
Support alternate passwd/group locations in tmpfiles
Zbigniew Jędrzejewski-Szmek [Sat, 18 Jul 2020 12:06:19 +0000 (14:06 +0200)]
shared/offline-passwd: look at /usr/lib/{passwd,group} too
This changes the code to allow looking at multiple files with different
prefixes, but uses "/etc" and "/usr/lib". rpm-ostree uses
/usr/lib/{passwd,group} with nss-altfiles. I see no harm in simply trying both
paths on all systems.
Fixes https://bugzilla.redhat.com/show_bug.cgi?id=
1857530.
A minor memory leak is fixed: hashmap_put() returns -EEXIST is the key is
present *and* and the value is different. It return 0 if the value is the
same. Thus, we would leak the user/group name if it was specified multiple
times with the same uid/gid. I opted to remove the warning message completely:
with multiple files it is reasonable to have the same name defined more than
once. But even with one file the warning is dubious: all tools that read those
files deal correctly with duplicate entries and we are not writing a linter.
Zbigniew Jędrzejewski-Szmek [Sat, 18 Jul 2020 12:03:51 +0000 (14:03 +0200)]
Move offline-password.[ch] to shared and add test-offline-passwd
The test binary has two modes: in the default argument-less mode, it
just checks that "root" can be resolved. When invoked manually, a root
prefix and user/group names can be specified.
Norbert Lange [Mon, 13 Jul 2020 22:49:25 +0000 (00:49 +0200)]
build: skip installation of 2 files if feature is disabled
dont install systemd-update-utmp if utmp is disabled.
dont install systemd-initctl.service if sysv is disabled.
Yu Watanabe [Sat, 18 Jul 2020 00:10:20 +0000 (09:10 +0900)]
Merge pull request #16476 from keszybz/qemu-autosuspend-rules
Add autosuspend rules for emulated QEMU devices
Yu Watanabe [Fri, 17 Jul 2020 20:46:53 +0000 (05:46 +0900)]
network: replace NDISC -> NDisc in log messages
Yu Watanabe [Fri, 17 Jul 2020 20:42:59 +0000 (05:42 +0900)]
network: introduce address_exists() helper function
Yu Watanabe [Fri, 17 Jul 2020 20:17:31 +0000 (05:17 +0900)]
network: update debug log when foreign routes are received with ManageForeignRoutes=no
Yu Watanabe [Fri, 17 Jul 2020 20:12:33 +0000 (05:12 +0900)]
network: do not enumerate routes if ManageForeignRoutes=no
Yu Watanabe [Fri, 17 Jul 2020 12:36:05 +0000 (21:36 +0900)]
udev: do not try to reassign alternative names
Setting alternative names may fail if some of them are already assigned.
Yu Watanabe [Fri, 17 Jul 2020 12:31:24 +0000 (21:31 +0900)]
netlink: do not fail when new interface name is already used as an alternative name
When renaming a network interface, the new name may be used as an
alternative name. In that case, let's swap the current name and the
alternative name. That is, first drop the new name from the list of
alternative names, then rename the interface, finally set the old name
as an alternative name.
Yu Watanabe [Fri, 17 Jul 2020 12:29:13 +0000 (21:29 +0900)]
netlink: introduce rtnl_get/delete_link_alternative_names()
Zbigniew Jędrzejewski-Szmek [Fri, 17 Jul 2020 09:09:31 +0000 (11:09 +0200)]
hwdb: check that uppercase digits are used in modalias patterns
This is all confusing as hell, becuase in some places lowercase hexadecimal
digits are used, and in other places uppercase. This adds a check for the
most common case that we and others got wrong.
I tried to extend the general grammar in hwdb_grammar() to include this check,
but it quickly became very complicated and didn't seem to work properly. Doing
initial parsing with more general rules is easier and also seems to give better
error messages:
/home/zbyszek/src/systemd-work/build/../hwdb.d/60-autosuspend.hwdb: 3 match groups, 5 matches, 3 properties
Pattern 'v058fp9540*' is invalid: Expected W:(0123...), found 'f' (at char 4), (line:1, col:5)
Yu Watanabe [Fri, 17 Jul 2020 06:12:53 +0000 (15:12 +0900)]
Merge pull request #16490 from yuwata/network-radv-ndisc-cleanups
network: cleanups for radv and ndisc
Zbigniew Jędrzejewski-Szmek [Fri, 17 Jul 2020 05:44:10 +0000 (07:44 +0200)]
hwdb: allow spaces in usb: matches and similar patterns
In the past we didn't have any matches like that, so the parser was stricter
than necessary, but now we have, so allow that.
Zbigniew Jędrzejewski-Szmek [Fri, 17 Jul 2020 05:12:58 +0000 (07:12 +0200)]
Merge pull request #16491 from keszybz/udev-logging
Improvements to udev logging and related code
Daan De Meyer [Thu, 16 Jul 2020 20:41:11 +0000 (21:41 +0100)]
mkosi: Update help comment in settings files
Daan De Meyer [Thu, 16 Jul 2020 20:27:50 +0000 (21:27 +0100)]
mkosi: Keep mkosi.default out of the repository.
Defaulting to fedora makes it a pain to override mkosi.default
point to one of the other mkosi settings files. Instead, have
every developer manually add the symlink to his distro
of choice and don't commit the symlink to the repository by
putting it in the .gitignore.
Zbigniew Jędrzejewski-Szmek [Thu, 16 Jul 2020 16:04:45 +0000 (18:04 +0200)]
tree-wide: use SYNTHETIC_ERRNO with log_device_* in more places
Zbigniew Jędrzejewski-Szmek [Thu, 16 Jul 2020 14:23:57 +0000 (16:23 +0200)]
sd-device: use LOG_PRI() in log_device_full()
We use LOG_PRI() in all log_*() functions, so let's do that here too for
consistency. Effectively this doesn't change anything since we only use
LOG_{INFO,DEBUG,...} as the argument.
Anita Zhang [Thu, 16 Jul 2020 18:36:28 +0000 (11:36 -0700)]
analyze: CAP_RAWIO -> CAP_SYS_RAWIO
Fixes #16489
Zbigniew Jędrzejewski-Szmek [Wed, 15 Jul 2020 16:13:40 +0000 (18:13 +0200)]
Add autosuspend rules for emulated QEMU devices
This effectively partially reverts "rules: remove all power management from
udev" /
e2452eef02a839e1928f4ffd893c93a460474ab6. The rules for emulated QEMU
hardware were removed in one fell swoop with other rules which were causing
problems. But the qemu rules were working properly (and were adjusted through
patches over time). Nowadays we have a hwdb for this, so add hwdb entries using
the new detailed modalias.
https://github.com/systemd/systemd/pull/353#issuecomment-
658810289
Zbigniew Jędrzejewski-Szmek [Thu, 16 Jul 2020 14:24:14 +0000 (16:24 +0200)]
udev: change the modalias string for usb devices to include the device name
When the kernel does not provide a modalias, we generate our own for usb devices.
For some reason, we generated the expected usb:vXXXXpYYYY string, suffixed by "*".
It was added that way already in
796b06c21b62d13c9021e2fbd9c58a5c6edb2764, but I
think that was a mistake, and Kay was thinking about the match pattern instead
of the matched string.
For example, for a qemu device:
old: "usb:v0627p0001*"
new: "usb:v0627p0001:QEMU USB Tablet"
On the match side, all hwdb files in the wild seem to be using match patterns
with "*" at the end. So we can add more stuff to our generated modalias with
impunity.
This will allow more obvious and more certain matches on USB devices. In
principle the vendor+product id should be unique, but it's only 8 digits, and
there's a high chance of people getting this wrong. And matching the wrong
device would be quite problematic. By including the name in the match string we
make a mismatch much less likely.
Zbigniew Jędrzejewski-Szmek [Thu, 16 Jul 2020 14:12:42 +0000 (16:12 +0200)]
udev: don't complain when udev_watch_end() is called without udev_watch_init()
E.g. udevadm test prints "Invalid inotify descriptor." which is
meaningless without any context. I think it should be OK to call udev_watch_end()
from a cleanup path without any warning (even at debug level).
Zbigniew Jędrzejewski-Szmek [Thu, 16 Jul 2020 13:57:36 +0000 (15:57 +0200)]
basic/string-table: reduce variable scope
Zbigniew Jędrzejewski-Szmek [Thu, 16 Jul 2020 13:55:10 +0000 (15:55 +0200)]
udevadm: use STR_IN_SET(), add comment
Zbigniew Jędrzejewski-Szmek [Thu, 16 Jul 2020 13:20:57 +0000 (15:20 +0200)]
sd-device: use strjoin instead of asprintf
strjoin should be faster for string concatenation.
Also drop "_"-prefix from function prototypes.
Zbigniew Jędrzejewski-Szmek [Thu, 16 Jul 2020 13:04:21 +0000 (15:04 +0200)]
udev: tweak debug logs for udev rules
We shouldn't say "ignoring" when running a program because the result is used for
the match/nomatch result of the rule.
Zbigniew Jędrzejewski-Szmek [Thu, 16 Jul 2020 12:56:16 +0000 (14:56 +0200)]
man: add more details for IMPORT, PROGRAM and RUN keys
967de8faceaa83c11a1215515cb135d7a8c0c32c added a note that I found very hard
to understand. Reword it, and also describe how IMPORT and PROGRAM are different
from RUN.
Minor markup adjustements too.
Zbigniew Jędrzejewski-Szmek [Thu, 16 Jul 2020 14:04:35 +0000 (16:04 +0200)]
udev: accept OPTIONS+= without any fuss
There is no reason to consider this wrong. In fact one could argue that +=
is more appropriate, because we always add to options, and not replace previous
assignments. If we output a debug message, we implicitly ask people to "fix" this,
and we shouldn't.
Also, all our rules use += right now.
Zbigniew Jędrzejewski-Szmek [Thu, 16 Jul 2020 11:56:57 +0000 (13:56 +0200)]
udev: accept IMPORT{}= without any fuss
Udev logs are full of messages about wrong operator type:
...
Reading rules file: /usr/lib/udev/rules.d/60-persistent-storage.rules
/usr/lib/udev/rules.d/60-persistent-storage.rules:30 IMPORT key takes '==' or '!=' operator, assuming '=='.
/usr/lib/udev/rules.d/60-persistent-storage.rules:30 IMPORT key takes '==' or '!=' operator, assuming '=='.
/usr/lib/udev/rules.d/60-persistent-storage.rules:30 IMPORT key takes '==' or '!=' operator, assuming '=='.
/usr/lib/udev/rules.d/60-persistent-storage.rules:30 IMPORT key takes '==' or '!=' operator, assuming '=='.
/usr/lib/udev/rules.d/60-persistent-storage.rules:30 IMPORT key takes '==' or '!=' operator, assuming '=='.
/usr/lib/udev/rules.d/60-persistent-storage.rules:30 IMPORT key takes '==' or '!=' operator, assuming '=='.
/usr/lib/udev/rules.d/60-persistent-storage.rules:54 IMPORT key takes '==' or '!=' operator, assuming '=='.
/usr/lib/udev/rules.d/60-persistent-storage.rules:57 IMPORT key takes '==' or '!=' operator, assuming '=='.
/usr/lib/udev/rules.d/60-persistent-storage.rules:60 IMPORT key takes '==' or '!=' operator, assuming '=='.
/usr/lib/udev/rules.d/60-persistent-storage.rules:63 IMPORT key takes '==' or '!=' operator, assuming '=='.
/usr/lib/udev/rules.d/60-persistent-storage.rules:66 IMPORT key takes '==' or '!=' operator, assuming '=='.
/usr/lib/udev/rules.d/60-persistent-storage.rules:67 IMPORT key takes '==' or '!=' operator, assuming '=='.
/usr/lib/udev/rules.d/60-persistent-storage.rules:93 IMPORT key takes '==' or '!=' operator, assuming '=='.
/usr/lib/udev/rules.d/60-persistent-storage.rules:107 IMPORT key takes '==' or '!=' operator, assuming '=='.
/usr/lib/udev/rules.d/60-persistent-storage.rules:110 IMPORT key takes '==' or '!=' operator, assuming '=='.
/usr/lib/udev/rules.d/60-persistent-storage.rules:113 IMPORT key takes '==' or '!=' operator, assuming '=='.
Reading rules file: /usr/lib/udev/rules.d/60-persistent-v4l.rules
/usr/lib/udev/rules.d/60-persistent-v4l.rules:7 IMPORT key takes '==' or '!=' operator, assuming '=='.
/usr/lib/udev/rules.d/60-persistent-v4l.rules:9 IMPORT key takes '==' or '!=' operator, assuming '=='.
/usr/lib/udev/rules.d/60-persistent-v4l.rules:16 IMPORT key takes '==' or '!=' operator, assuming '=='.
...
The warning was downgraded in
f0beb6f816035e438d684cc52ae76fc4a44fc197, but I
think it should be removed altogether. IMPORT{program}="asdf" seems like an
obvious way to write this, and people don't expect to have to write "==".
So let's just allow any operator.