Commit Graph
100 Commits
Author SHA1 Message Date
Yu Watanabe fbaf3b23ae core: set $CREDENTIALS_DIRECTORY only when we set up credentials
It is not necessary to set the environment variable on an execution step
we do not support credentials.
2023-08-22 11:39:08 +09:00
Yu Watanabe 7d202fb35d core/credential: split out unit_add_default_credential_dependencies()
No functional change, just refactoring.
2023-08-22 11:39:08 +09:00
Yu Watanabe 602c74cf78 core: split out functions and definitions from execute.[ch] to credential.[ch]
The functions and definitions related to credential consume about 1000
lines in execute.c. Let's split out them to dedicated files.
2023-08-22 11:39:08 +09:00
Yu Watanabe 57d2b6a96f core/mount: disable timer event source when USEC_INFINITY
Setting USEC_INFINITY to timer event source should not cause any
problem. But, disabling timer event source should be preferable.

[zjs: simplify the call to sd_event_source_set_enabled()]
2023-08-17 08:25:31 +02:00
Yu Watanabe e323d2e463 Revert "mount: check right before invoking /bin/umount if it makes sense"
This reverts commit 1483892a42.

As the commit says, it does not solve the race. Moreover, it introduces
an regression #28410.

Also, checking by `path_is_mount_point()` may trigger automount. From
statx(2),
> AT_NO_AUTOMOUNT
>     Don't automount the terminal ("basename") component of pathname
>     if it is a directory that is an automount point.
Similar statements can be found in fstatat(2), which is used in the
fallback call for statx() in glibc, and name_to_handle_at(2), which is
used as the fallback when statx() failed.
So, `path_is_mount_point()` may _do_ trigger automount for parent paths.
That should be avoided especially on shutdown.

The original issue #25527 that is 'fixed' by the commit is not serious,
and should be fixed by making umount command handle path gracefully:
https://github.com/util-linux/util-linux/issues/2132

Fixes #28410.
2023-08-14 13:39:15 +09:00
Yu Watanabe 57ffa99daa core: drop redundant assignment of UNIT_MERGED in unit_load_fragment()
If the unit is merged into another unit, then the load state is already
set in merge_by_names() -> unit_merge(). Let's drop the redundant assignment.
2023-08-13 12:56:08 +01:00
Yu Watanabe e3390a22dc Merge pull request #28744 from YHNdnzj/battery-check-minor-followup
battery-util: minor follow-ups
2023-08-13 19:27:56 +09:00
Yu Watanabe 88321d5d77 Merge pull request #28809 from YHNdnzj/proc-cmdline-true-when-missing
proc-cmdline: introduce PROC_CMDLINE_TRUE_WHEN_MISSING and use it where appropriate
2023-08-13 19:25:22 +09:00
Yu Watanabe 0d290cbcd6 test: disable TEST-08-INITRD on ubuntu CI
Currently, the test does not work on ubuntu CI, unfortunately.
Let's disable it at least tentatively.
2023-08-12 18:12:43 +01:00
Yu Watanabe c208bf3324 test: fix expected result of systemd-repart
Follow-up for e1536d1fb0.

Fixes #28807.
Replaces #28802.
2023-08-12 18:11:46 +01:00
Yu Watanabe 5cdcaf89be meson: drop unnecessary dependency on libidn 2023-08-12 20:04:51 +09:00
Yu Watanabe ba77e00659 Merge pull request #28801 from mrc0mmand/initrd-shutdown-test
test: introduce TEST-08-INITRD
2023-08-12 20:04:06 +09:00
Yu Watanabe 353c8497b1 Merge pull request #28784 from yuwata/udev-vs-tmpfiles-take-3
Udev vs tmpfiles take 3
2023-08-12 13:12:10 +09:00
Yu Watanabe bb7f485f4b units: introduce systemd-tmpfiles-setup-dev-early.service
This makes tmpfiles, sysusers, and udevd invoked in the following order:
1. systemd-tmpfiles-setup-dev-early.service
   Create device nodes gracefully, that is, create device nodes anyway
   by ignoring unknown users and groups.
2. systemd-sysusers.service
   Create users and groups, to make later invocations of tmpfiles and
   udevd can resolve necessary users and groups.
3. systemd-tmpfiles-setup-dev.service
   Adjust owners of previously created device nodes.
4. systemd-udevd.service
   Process all devices. Especially to make block devices active and can
   be mountable.
5. systemd-tmpfiles-setup.service
   Setup basic filesystem.

Follow-up for b42482af90.

Fixes #28653.
Replaces #28681 and #28732.
2023-08-12 07:55:20 +09:00
Yu Watanabe 12aac8ea45 Revert "unit: make udev rules really take precedence over tmpfiles"
This reverts commits 112a41b6ec,
3178698bb5, and
b768379e8b.

The commit 112a41b6ec introduces #28765,
as systemd-tmpfiles-setup.service has ordering after local-fs.target,
but usually the target requires block devices processed by udevd.
Hence, the service can only start after the block devices timed out.

Fixes #28765.
2023-08-12 07:55:20 +09:00
Yu Watanabe f80ca7b7eb Merge pull request #28779 from yuwata/iovw-append
io-util, coredump: introduce iovw_append() and use it
2023-08-11 07:21:32 +09:00
Yu Watanabe 3a19fe4637 coredump: fix various invalid memory access
Previously, we did not check error from iovw_put(). If it fails, the
target iovw may have no iov or partial iovs from the journal importar.
So, the finalization may cause underflow and may access and free invalid
memory.

Follow-up for 946dc7c635.
2023-08-11 06:08:38 +09:00
Yu Watanabe 3746131aac io-util: introduce iovw_append() helper function 2023-08-11 06:08:36 +09:00
Yu Watanabe 09256904ed Merge pull request #28760 from poettering/coredump-tweaks
coredump: minor tweaks/modernizations
2023-08-11 04:16:31 +09:00
Yu Watanabe 91085a0a13 Merge pull request #28749 from yuwata/udev-net-id-fix-and-cleanup
udev-builtin-net_id: fix and cleanups
2023-08-11 04:10:32 +09:00
Yu Watanabe fc275ef315 Merge pull request #28767 from poettering/epoll-eperm-journalctl
journalctl epoll/EPERM follow-up
2023-08-11 03:18:36 +09:00
Yu Watanabe 8aa0aa40cf udev-builtin-net_id: use strjoin() if possible
Addresses the post-merge comment
https://github.com/systemd/systemd/pull/28623#pullrequestreview-1571307466.
2023-08-10 20:13:43 +09:00
Yu Watanabe f5f1e766ba udev-builtin-net_id: add more debugging logs 2023-08-10 20:09:11 +09:00
Yu Watanabe ce8ff47f74 udev-builtin-net_id: introduce get_first_syspath_component() helper function
Obtaining a component from syspath is a common pattern. Let's split out
the pattern. No functional change, just refactoring.
2023-08-10 20:09:11 +09:00
Yu Watanabe 5dc06b376f udev-builtin-net_id: introduce get_matching_parent() helper function
The pattern is common in many naming scheme. Let's split out the
pattern. No functional change, just refactoring.
2023-08-10 20:09:06 +09:00
Yu Watanabe 7e1850e54b Merge pull request #28732 from yuwata/udev-vs-tmpfiles-take-2
Udev vs tmpfiles take 2
2023-08-10 08:48:51 +09:00
Yu Watanabe b8e483aa2c Merge pull request #28741 from keszybz/minor-tweaks-for-recent-patches
Minor tweaks for recent patches
2023-08-10 08:45:44 +09:00
Yu Watanabe 7a05926fbe udev: re-introduce symlinks for loopback block device
But the directories are changed from /dev/loop/by-ref/ -> /dev/disk/by-loop-ref/
and /dev/loop/by-inode/ -> /dev/disk/by-loop-inode/.
As /dev/loop/ is used by losetup command for other purpose.
See issue #28475.

This effectively reverts commits 9915cc6086,
5022fab15f, and
c0d998248e.
2023-08-10 07:05:47 +09:00
Yu Watanabe c27d9c0ac1 udev-builtin-net_id: fix potential invalid memory access
Follow-up for 28141620d9.

Addresses post-merge review in #28269.
2023-08-10 05:13:17 +09:00
Yu Watanabe a38de31c8b remount-fs: refuse to remount based on fstab when fstab=no kernel command line option specified
Otherwise, if for some reasons remount-fs is invoked even when fstab=no is
specified, mounts may get unexpected options from fstab.

For safety, let's parse the kernel command line option.
2023-08-09 17:59:41 +09:00
Yu Watanabe 1be6f21320 remount-fs: split-out remount_by_fstab()
No functional change, just refactoring and preparation for later
commits.
2023-08-09 17:59:41 +09:00
Yu Watanabe b564224b37 fstab-generator: update cache in fstab_enabled_full() based on the parsed result of fstab=
Currently, fstab-generator does not use fstab file parsers in
fstab-util.c. So, this is not necessary. Just for a possible
optimization in the case the parsers used in the future.
2023-08-09 17:57:43 +09:00
Yu Watanabe 1177373b6a fstab-util: introduce fstab_enabled() helper function
And refuse to parse fstab when 'fstab=no' is specified in the kernel
command line.

When 'fstab=no' is specified in the kernel command line, fstab-generator
does not parse fstab and will not create e.g. /boot or /efi mount entry
even if fstab contains entries for the mount points. However, gpt-auto
generator may parse fstab file, and adjust or ignore mounts for EFI or
XBOOTLDR partitions based on the fstab file.

This makes gpt-auto also ignore fstab entries if 'fstab=no' is set in
the kernel command line.
2023-08-09 17:53:46 +09:00
Yu Watanabe 3787934b54 proc-cmdline: make proc_cmdline_get_bool() take flags
All other command line parsers takes flags. Let's make
proc_cmdline_get_bool() also take flags. Though, currently,
no flag is set by the caller.
2023-08-09 17:46:41 +09:00
Yu Watanabe 3178698bb5 test: also check the ordering between udevd and tmpfiles-setup 2023-08-09 15:52:42 +09:00
Yu Watanabe ca15b59f1f Revert "Revert "tmpfiles.d: adjust /dev/vfio/vfio access mode""
This reverts commit 33b91308c2.

The commit b42482af90 dropped
'--exclude-prefix=/dev' from systemd-tmpfiles-setup.service. So, the
possibly later invocation of the service changes the permission set by
udevd.

As commmented in the head of this file, settings should be consistent
with udev rules. Only missing entry here is vfio. Let's re-add the
entry for the device.

Addresses https://github.com/systemd/systemd/pull/28681#issuecomment-1666949888.
2023-08-09 11:27:39 +09:00
Yu Watanabe 685e0dd192 veritysetup-generator: fix ordering of generated units
Fixes a bug introduced by 08b04ec7e7 and
953006dcb0.

Fixes #28725.
2023-08-09 11:26:09 +09:00
Yu Watanabe 20e7b94b72 Merge pull request #28731 from yuwata/sd-dhcp-server-cleanups
sd-dhcp-server: cleanups
2023-08-09 11:25:44 +09:00
Yu Watanabe 112a41b6ec unit: make udev rules really take precedence over tmpfiles
Follow-up for b42482af90.

The commit makes systemd-tmpfiles-setup.service also updates the
permission or owner of device nodes. However, the service does not have
ordering for systemd-udevd.service. So, the service may set different
permission from the one udevd already set.

Fixes #28653.
Replaces #28681.
2023-08-09 07:24:02 +09:00
Yu Watanabe 41521e3a21 Revert "unit: make udev rules take precesence over tmpfiles"
This reverts commit 31845ef554.

systemd-tmpfiles-setup-dev.service has Before=systemd-udevd.service.
So the commit does not change anything.
2023-08-09 07:13:09 +09:00
Yu Watanabe 9289e093ae meson: use install_emptydir() and drop meson-make-symlink.sh
The script is mostly equivalent to 'mkdir -p' and 'ln -sfr'.
Let's replace it with install_emptydir() builtin function and
inline meson call.
2023-08-08 22:11:34 +01:00
Yu Watanabe 809da721f0 sd-dhcp-server: propagate error on parsing DHCP packet
Otherwise, we silently ignore the received packet and that makes hard to
debug issue.
2023-08-09 05:33:24 +09:00
Yu Watanabe 7b1fac1e52 dhcp: rename function argument 2023-08-09 05:26:18 +09:00
Yu Watanabe a8d3315ba4 tree-wise: drop unnecessary use of proc_cmdline_key_streq()
If the key does not contain '-' or '_', then it is not necessary to use
proc_cmdline_key_streq(), and streq() is sufficient.

This also adds missing assertions about 'key' argument.
2023-08-09 03:16:31 +09:00
Yu Watanabe 91acee9906 resolve: ignore nameserver= and domain= kernel command line options without value
Otherwise, manager_parse_dns_server_string_and_warn() or
manager_parse_search_domains_and_warn() will trigger assertion.
2023-08-09 03:16:03 +09:00
Yu Watanabe 074d90926f udev: set ID_NAME and ID_SERIAL to MMC/memstick devices again
Fixes a bug introduced by 998db5871f.

Fixes #28671.
2023-08-08 12:05:30 +01:00
Yu Watanabe beddf8ba29 busctl: fix showing array of dictionary in JSON format
This partially reverts the commit 684bce3d54
and fixes the issue introduced by it.

Fixes #28711.
2023-08-08 09:33:16 +01:00
Yu Watanabe 7b5ca134a5 man: update document about the maximum number of child processes 2023-08-05 15:40:02 +09:00
Yu Watanabe 2cba1d3753 udev: allow to set the maximum number of worker process to 0
In that case, the maximum is calculated based on the system resources.
2023-08-05 15:40:02 +09:00
Yu Watanabe ce5ddbc465 udev: split out manager_set_default_children_max() 2023-08-05 15:39:58 +09:00
Yu Watanabe 42f13f10d5 Merge pull request #28681 from yuwata/udev-vs-tmpfiles
Udev vs tmpfiles
2023-08-05 13:30:49 +09:00
Yu Watanabe 23acdb8d0b test: shorten timeout for 'udevadm monitor'
The command should never finish, it is not necessary to wait so long.
2023-08-05 05:03:20 +09:00
Yu Watanabe b768379e8b test: add short test for device node permission 2023-08-05 04:52:16 +09:00
Yu Watanabe 31845ef554 unit: make udev rules take precesence over tmpfiles
Without this change, there are no ordering between udevd and tmpfiles,
and if tmpfiles is invoked later it may discard the permission set by
udevd.

Fixes an issue introduced by b42482af90.

Fixes #28588 and #28653.
2023-08-05 04:38:39 +09:00
Yu Watanabe 33b91308c2 Revert "tmpfiles.d: adjust /dev/vfio/vfio access mode"
The issue needs to be fixed by setting proper ordering between the
tmpfiles and udevd.

See issue #28653, especially
https://github.com/systemd/systemd/issues/28653#issuecomment-1665181625.

This reverts commit a3d610998a.
2023-08-05 04:32:01 +09:00
Yu Watanabe 2159662608 switch-root: reopen target directory after it is mounted
Fixes a bug introduced by f717d7a40a.
2023-08-04 04:05:21 +09:00
Yu Watanabe 6b219b74de shutdown: do not umount recursively before MS_MOVE
Unmounting filesystem will be done gracefully by shutdown itself.

Follow-up for f2c1d491a5 and
268d1244e8.
2023-08-04 03:58:10 +09:00
Yu Watanabe d709d1b20e shutdown: disable recursive mount of /run/ on switching root
Mounting /run/ recursively may be harmless, but not necessary on
shutdown as the new root is /run/initramfs.

Follow-up for b12d41a8bb.
2023-08-04 03:57:32 +09:00
Yu Watanabe 48575a59d2 Merge pull request #28628 from yuwata/meson-use-template-part6
meson: use template to declare executables (part 6)
2023-08-04 02:16:07 +09:00
Yu Watanabe dc4a00555a meson: set suite for all tests, and adjust suite for some tests 2023-08-03 20:37:16 +09:00
Yu Watanabe cbc55c4cce meson: also merge declarations of fuzzers with other executables 2023-08-03 20:37:16 +09:00
Yu Watanabe 130c87b16a meson: merge declarations of normal and test executables 2023-08-03 20:37:16 +09:00
Yu Watanabe 09fa0a0721 test: rename udev-rule-runner -> test-udev-rule-runner
This partially revert 0454cf05d3.
The executable actually does not work with itself, but needs to be
combined with test-udev.py. But, even so, the executable is for testing.

In the next commit, test and normal executables are declared in the same
way, and naming of the executable becomes essential to classify them.
Let's rename the executable and prefix with 'test-'.
2023-08-03 20:37:16 +09:00
Yu Watanabe adedcd39a8 meson: use template to declare udev plugins 2023-08-03 20:37:16 +09:00
Yu Watanabe 12b4cffdae meson: introduce HAVE_DMI flag
The condition is used at several places. Let's introduce a simple flag
for that.
2023-08-03 20:37:16 +09:00
Yu Watanabe ff2dedcffd test: fix test executable name
Follow-up for 82a1d6d096.
2023-08-03 20:36:54 +09:00
Yu Watanabe e5cc6d107c meson: move several test declarations
One of the notable change is that previously test-sysusers.sh was installed
unconditionally, but now it is installed only when sysusers is enabled.

Another change is that test-sysv-generator is now re-introduced which
was mistakenly dropped by 6c713961ab.
2023-08-03 20:33:52 +09:00
Yu Watanabe 0b056cbc2d Merge pull request #28640 from medhefgo/boot-count
bless-boot: Actually return successfully
2023-08-03 06:45:09 +09:00
Yu Watanabe f882a986c2 journalctl: do not add io event source for stdout if it is a file
Fixes a bug introduced by 713342d9b0.

Fixes #28636.
Fixes https://bugzilla.redhat.com/show_bug.cgi?id=2228089.
2023-08-02 22:04:13 +01:00
Yu Watanabe c4521fc17b udev: decrease devlink priority for encrypted partitions
Decrease devlink priority for encrypted partitions, and make the priority for
decrypted DM devices relatively higher. This is for the case that an encrypted
partition and its decrypted DM device have the same label.
2023-08-02 22:03:14 +01:00
Yu Watanabe 28fd786bf5 Merge pull request #28646 from yuwata/network-generator-ip-dhcp
network-generator: make ip=dhcp works with container manager
2023-08-03 05:48:58 +09:00
Yu Watanabe c25aa6c8ac network-generator: make network file generated from ip=dhcp matches only physical interfaces
Otherwise, it also matches later created virtual devices, and that
breaks networks generated and managed by container management services,
like docker.

Closes #28626.
2023-08-03 02:51:53 +09:00
Yu Watanabe 8d580dde76 meson: fix name of test-network-generator
As the test executable is named based on the first source file.
2023-08-03 02:21:50 +09:00
Yu Watanabe 46f0a4e7ac test: skip tests earlier when we do not have enough privileges
Hopefully fixes #28624.
2023-08-02 02:36:52 +09:00
Yu Watanabe 82cb5f2ad1 udev-builtin-net_id: first parse USB or BCMA identifier, then parse PCI properties
Previously, we first generate names based on the PCI slot and ACPI
onboard index, and then append an identifier based on USB or BCMA bus
if it exists in between the PCI bus and the interface.

However, if there exists USB or BCMA bus, the name based on the
ACPI onboard index is not used.

So, let's invert the order; first generate USB or BCMA identifier if the
bus exists, then prepend the name with the PCI slot identifier.

With this change, we can drop Names struct, and each naming logic
becomes self-consistent.
2023-08-02 00:00:32 +09:00
Yu Watanabe 415ade00aa udev-builtin-net_id: split out names_pci_onboard_label() from dev_pci_onboard()
Then call it only when it is necessary. The label is used only when the
interface is directly connected to the PCI bus, and it does not have the
SR-IOV feature (or the naming based on SR-IOV is disabled).
2023-08-01 23:35:34 +09:00
Yu Watanabe f831aef509 udev-builtin-net_id: drop redundant copy of BCMA identifier in names_bcma()
Then, this makes names based on the BCMA and PCI identifiers in
names_bcma().

No functional change, just refactoring.
2023-08-01 23:35:34 +09:00
Yu Watanabe d3523818e8 udev-builtin-net_id: split out get_bcma_specifier() from names_bcma()
This contains redundant copy of BCMA identifier, but that will be
dropped in the next commit.

No functional change, just refactoring and preparation for later
commits.
2023-08-01 23:35:34 +09:00
Yu Watanabe f7ae5d1857 udev-builtin-net_id: drop redundant copy of USB identifier in names_usb()
This makes the names based on the USB identifier (and possibly with PCI
specifier) built in names_usb()

No functional change, just refactoring.
2023-08-01 23:35:34 +09:00
Yu Watanabe 045fb967a7 udeb-builtin-net_id: split out get_usb_specifier() from names_usb()
This contains redundant copy of USB identifier, but that will be
dropped in the next commit.

No functional change, just refactoring and preparation for later
commits.
2023-08-01 23:35:34 +09:00
Yu Watanabe baab0a61dd Merge pull request #28619 from yuwata/udev-builtin-net_id-cleanups-part3
udev: several cleanups and fixlets for net_id builtin (part 3)
2023-08-01 23:35:03 +09:00
Yu Watanabe 87e7979de4 meson: move declarations of kernel-install and sulogin-shell 2023-08-01 21:37:31 +09:00
Yu Watanabe 7be6a143da meson: move declarations of networkd and friends 2023-08-01 21:37:31 +09:00
Yu Watanabe eb51c09d13 meson: move declarations of modules-load, nspawn, update-done, and update-utmp 2023-08-01 21:37:31 +09:00
Yu Watanabe 5371c26933 meson: move declarations of socket-proxy, udevadm, quotacheck, and shutdown 2023-08-01 21:37:31 +09:00
Yu Watanabe 6fab49e4ff meson: move declarations of hwdb, sysusers, and tmpfiles 2023-08-01 21:37:31 +09:00
Yu Watanabe 5c707c8cdb meson: move declarations of busctl, stdio-bridge, and run 2023-08-01 21:37:31 +09:00
Yu Watanabe 9f907d305f meson: move declarations of cgls, cgtop, initctl, and systemd-mount 2023-08-01 21:37:31 +09:00
Yu Watanabe cb9356254a meson: move declarations of ask-password and friends 2023-08-01 21:37:31 +09:00
Yu Watanabe 5660e68d65 udev-builtin-net_id: fix potential buffer overflow 2023-08-01 21:34:12 +09:00
Yu Watanabe a1008b2dab udev-builtin-net_id: various coding style cleanups 2023-08-01 21:34:12 +09:00
Yu Watanabe 64d2358397 udev-builtin-net_id: introduce device_is_stacked() helper function
Then, we can drop LinkInfo struct.
No functional change, just refactoring.
2023-08-01 21:34:12 +09:00
Yu Watanabe dc999c0346 udev-builtin-net_id: drop unused arguments 2023-08-01 21:34:12 +09:00
Yu Watanabe e581074b9a Merge pull request #28611 from yuwata/meson-use-template
meson: use template (part 4)
2023-08-01 21:32:48 +09:00
Yu Watanabe 6840ee10e4 Merge pull request #28609 from yuwata/udev-builtin-net_id-cleanups-part2
udev: several cleanups and fixes for net_id builtin (part2)
2023-08-01 20:52:47 +09:00
Yu Watanabe e2bdf00a22 meson: move declarations of cgroups-agent, id128, volatile-root, and path 2023-08-01 15:54:45 +09:00
Yu Watanabe 98e39a5561 meson: move declarations of delta, escape, notify, creds, and battery-check 2023-08-01 15:54:45 +09:00
Yu Watanabe 16b081d6ac meson: move declarations of ac-power, detect-virt, sysctl, and sleep 2023-08-01 15:54:45 +09:00
Yu Watanabe 0d6b90b95e meson: move declarations of repart and friends 2023-08-01 15:54:45 +09:00
Yu Watanabe df490fc79b meson: move declarations of fsck, firstboot, machine-id-setup, and remount-fs 2023-08-01 15:54:45 +09:00