1
0
mirror of https://github.com/systemd/systemd.git synced 2024-12-23 21:35:11 +03:00
Commit Graph

51488 Commits

Author SHA1 Message Date
Lennart Poettering
ffec78c05b core: add new PropagateStopTo= dependency (and inverse)
This takes inspiration from PropagatesReloadTo=, but propagates
stop jobs instead of restart jobs.

This is defined based on exactly two atoms: UNIT_ATOM_PROPAGATE_STOP +
UNIT_ATOM_RETROACTIVE_STOP_ON_STOP. The former ensures that when the
unit the dependency is originating from is stopped based on user
request, we'll propagate the stop job to the target unit, too. In
addition, when the originating unit suddenly stops from external causes
the stopping is propagated too. Note that this does *not* include the
UNIT_ATOM_CANNOT_BE_ACTIVE_WITHOUT atom (which is used by BoundBy=),
i.e. this dependency is purely about propagating "edges" and not
"levels", i.e. it's about propagating specific events, instead of
continious states.

This is supposed to be useful for dependencies between .mount units and
their backing .device units. So far we either placed a BindsTo= or
Requires= dependency between them. The former gave a very clear binding
of the to units together, however was problematic if users establish
mounnts manually with different block device sources than our
configuration defines, as we there might come to the conclusion that the
backing device was absent and thus we need to umount again what the user
mounted. By combining Requires= with the new StopPropagatedFrom= (i.e.
the inverse PropagateStopTo=) we can get behaviour that matches BindsTo=
in every single atom but one: UNIT_ATOM_CANNOT_BE_ACTIVE_WITHOUT is
absent, and hence the level-triggered logic doesn't apply.

Replaces: #11340
2021-05-25 16:03:03 +02:00
Lennart Poettering
629b2a6f7b core: add a reverse dep for OnFailure=
Let's add an implicit reverse dep OnFailureOf=. This is exposed via the
bus to make things more debuggable: you can now ask systemd for which
units a specific unit is the failure handler.

OnFailure= was the only dependency type that had no inverse, this fixes
that.

Now that deps are a bit cheaper, it should be OK to add deps that only
serve debug purposes.
2021-05-25 16:03:03 +02:00
Lennart Poettering
39628fedac core: hide cgroup fields in unit_dump() for non-cgroup unit types
A bunch of properties in the main Unit strcture only make sense for
cgroup units. Let's hide them from unit types that have no relation to
cgroups.
2021-05-25 16:03:03 +02:00
Lennart Poettering
d219a2b07c core: convert Slice= into a proper dependency (and add a back dependency)
The slice a unit is assigned to is currently a UnitRef reference. Let's
turn it into a proper dependency, to simplify and clean up code a bit.
Now that new dep types are cheaper, deps should generally be preferable
over everything else, if the concept applies.

This brings one major benefit: we often have to iterate through all unit
a slice contains. So far we iterated through all Before= dependencies of
the slice unit to achieve that, filtering out unrelated units, and
taking benefit of the fact that slice units are implicitly ordered
Before= the units they contain. By making Slice= a proper dependency,
and having an accompanying SliceOf= dependency type, this is much
simpler and nicer as we can directly enumerate the units a slice
contains.

The forward dependency is actually called InSlice internally, since we
already used the UNIT_SLICE name as UnitType field. However, since we
don't intend to expose the dependency to users as dep anyway (we already
have the regular Slice D-Bus property for this) this shouldn't matter.
The SliceOf= implicit dependency type (the erverse of Slice=/InSlice=)
is exported over the bus, to make things a bit nicer to debug and
discoverable.
2021-05-25 16:03:01 +02:00
Lennart Poettering
12f64221b0 core: add UNIT_GET_SLICE() helper
In a later commit we intend to move the slice logic to use proper
dependencies instead of a "UnitRef" object. This preparatory commit
drops direct use of the slice UnitRef object for a static inline
function UNIT_GET_SLICE() that is both easier to grok, and allows us to
easily replace its internal implementation later on.
2021-05-25 16:02:00 +02:00
Lennart Poettering
8ddba3f266 test-engine: extend engine test
Let's verify that the dependency type to atom mapping is consistent.

Let's also verify that dependency merging works correctly.
2021-05-25 15:54:19 +02:00
Lennart Poettering
defe63b0f3 core: rebreak a few comments 2021-05-25 15:54:19 +02:00
Lennart Poettering
15ed3c3a18 core: split dependency types into atoms 2021-05-25 15:54:19 +02:00
Lennart Poettering
641d3761d4 hashmap: add helper to test if iterator is still at beginning 2021-05-25 15:47:09 +02:00
Yu Watanabe
13eeefe1a8
Merge pull request #19716 from yuwata/sd-netlink-NETLINK_GET_STRICT_CHK
sd-netlink: enable NETLINK_GET_STRICT_CHK socket option to filter out message on kernel
2021-05-25 22:38:59 +09:00
Khem Raj
850f0008bf test-parse-argument: Include signal.h
Fixes
src/test/test-parse-argument.c:49:29: error: use of undeclared identifier 'SIGABRT'

Signed-off-by: Khem Raj <raj.khem@gmail.com>
2021-05-25 13:53:51 +02:00
Mantas Mikulėnas
fb906b00c6 README: point at IRC channel on the new network 2021-05-25 12:27:22 +02:00
Zbigniew Jędrzejewski-Szmek
dd30da133a
Merge pull request #19709 from keszybz/sysusers-no-proc
Add more logs and make sysusers works in dnf --installroot
2021-05-25 08:20:56 +02:00
Yu Watanabe
5de0d10bee
Merge pull request #19715 from yuwata/network-link-group
network: allow to set Group=0 in [Link] section
2021-05-25 13:29:50 +09:00
Zbigniew Jędrzejewski-Szmek
ffcd683852 systemctl: avoid crash when pattern expands to empty unit list
Fixes #19652.
2021-05-25 13:29:29 +09:00
Yu Watanabe
5709c7fe4e
Merge pull request #19713 from nabijaczleweli/bootctlpsko-liter
The "obviously good stuff" from #19006 again
2021-05-25 08:31:38 +09:00
Yu Watanabe
922a653090 test: add testcases of filtering on dumping addresses 2021-05-25 08:26:00 +09:00
Yu Watanabe
6a28b78f2e local-addresses: set ifindex when dump addresses on an interface 2021-05-25 08:26:00 +09:00
Yu Watanabe
c31298be7a network: set ifindex when dump addresses on an interface 2021-05-25 08:26:00 +09:00
Yu Watanabe
d7418b3bb2 sd-netlink: set NETLINK_GET_STRICT_CHK socket option
Then kernel filters out unnecessary info on dumping, e.g. RTM_GETADDR.
2021-05-25 08:26:00 +09:00
Yu Watanabe
3e0eeb8e33 sd-netlink: do not set route type and table by default for RTM_GETROUTE or friends 2021-05-25 08:26:00 +09:00
Yu Watanabe
3ca619061d sd-netlink: do not set action for RTM_GETRULE message
Otherwise, when NETLINK_GET_STRICT_CHK socket option is enabled, no rule
will be dumped.
2021-05-25 08:26:00 +09:00
Yu Watanabe
f318f64388 sd-netlink: do not enable dump flag by default for RTM_GETADDR message 2021-05-25 08:26:00 +09:00
Yu Watanabe
97bb863c25 sd-netlink: do not append prefixlen by default
Otherwise, when NETLINK_GET_STRICT_CHK socket option is enabled, no
address will be dumped.
2021-05-25 08:26:00 +09:00
Yu Watanabe
5aafd5b190 network: add several assertions in conf parsers 2021-05-25 07:12:05 +09:00
Yu Watanabe
f0c09831bd network: allow to set Group=0 in [Link] section
Previously, when a link has already in a numbered group, we cannot
remove the link from the group.

This also fixes the range mentioned in the man page.
2021-05-25 07:12:05 +09:00
наб
44230fa2b0
kernel-install: don't erase previous errors if a hook returns 77
The manpage says that exiting 77 is the same as exiting 0,
then skipping all other hooks, but the behaviour heretofor
was to exit 0, skip all, and behave as if all hooks exited 0
2021-05-24 21:56:35 +02:00
Zbigniew Jędrzejewski-Szmek
82855aa610 sysusers: make sysusers work with dnf --installroot
This is not very pretty, but the code in fs-util.c already provisions for
missing /proc. We ourselves are careful to set up /proc, but not everybody
is and it is important for sysusers to also work where shadow-utils would:
I would like to replace calls to useradd and groupadd in Fedora systemd rpm
scriptlets with a call to sysusers. It has a number of advantages:
- dogfooding
- we don't need to manually duplicate the information from our sysusers
  files to scriptlets
- a dependency on shadow-utils is dropped, which transitively drops dependencies
  on setup and fedora-repos and bunch of other stuff.

We could try to get 'dnf' and 'rpm --root' and such to be reworked,
but not in any reasonable timeframe. And even if this was done, we'd still
want to support older rpm/dnf versions.
2021-05-24 21:41:24 +02:00
Zbigniew Jędrzejewski-Szmek
0520564dcf basic: allow copy_rights() to work without mounted /proc
This will be used in sysusers later on.
2021-05-24 21:41:22 +02:00
Zbigniew Jędrzejewski-Szmek
335f6ab4f1 sysusers: add debug lines to failing getent/putent operations
I'm trying to use systemd-sysusers for systemd.rpm itself, and the invocation
in dnf chroot is failing like this:
...
Creating group input with gid 999.
Creating group kvm with gid 36.
Creating group render with gid 998.
Creating group sgx with gid 997.
Creating group systemd-journal with gid 190.
Creating group systemd-network with gid 192.
Creating user systemd-network (systemd Network Management) with uid 192 and gid 192.
Creating group systemd-oom with gid 996.
Creating user systemd-oom (systemd Userspace OOM Killer) with uid 996 and gid 996.
Creating group systemd-resolve with gid 193.
Creating user systemd-resolve (systemd Resolver) with uid 193 and gid 193.
Creating group systemd-timesync with gid 995.
Creating user systemd-timesync (systemd Time Synchronization) with uid 995 and gid 995.
Creating group systemd-coredump with gid 994.
Creating user systemd-coredump (systemd Core Dumper) with uid 994 and gid 994.
Failed to write files: Function not implemented

Let's add more info to make such failures easier to debug.
2021-05-24 21:41:10 +02:00
Zbigniew Jędrzejewski-Szmek
62d1c93a02 sysusers: reduce scope of variables and drop unnecessary initializations 2021-05-24 21:39:04 +02:00
наб
0ad401dc5d
kernel-install/90-loaderentry: use install(1) instead of cp/chown/chmod chains
Also fix typo in error message
2021-05-24 21:35:12 +02:00
Roshan Shariff
07c0e5eeaf rules.d: Properly quote $env{MODALIAS}
Add quotes around use of $env{MODALIAS} in rules.d/80-drivers.rules. The
 modalias can contain whitespace, for example when it is dynamically generated
 using device or vendor IDs.
2021-05-24 18:40:01 +01:00
Vincent Dechenaux
f0c7e594ed Typo in service.c
use => user
2021-05-24 14:47:29 +02:00
наб
8a2f7b7c9b
man: we is OK too -> which is OK too (#19708) 2021-05-24 18:39:38 +09:00
Zbigniew Jędrzejewski-Szmek
341d883ad6
Merge pull request #19701 from yuwata/network-udev-do-not-manage-loopback-interfaces
udev: do not manage loopback interfaces
2021-05-24 07:26:18 +02:00
Yu Watanabe
113d94c393
Merge pull request #19704 from yuwata/network-small-fixes
network: several tiny cleanups
2021-05-23 23:02:07 +09:00
Yu Watanabe
70f32a260b udev/net: do not manage loopback interfaces
There are nothing we can configure in udevd for loopback interfaces;
no ethertool configs can be applied, MAC address, interface name should
not be touched.
2021-05-23 22:58:47 +09:00
Yu Watanabe
f25e642bca sd-netlink: rename rtnl_get_link_iftype() -> rtnl_get_link_info() and make it optionally return link flags 2021-05-23 22:58:03 +09:00
Yu Watanabe
ce01c07f1c udev/net: rename link_config -> LinkConfig 2021-05-23 22:58:03 +09:00
Yu Watanabe
afca7ac13d udev/net: rename link_config_ctx -> LinkConfigContext 2021-05-23 22:58:03 +09:00
Yu Watanabe
75d5abd298 network: IPv6LinkLocalAddressGenerationMode=none disables IPv6LL addressing 2021-05-23 17:13:06 +09:00
Yu Watanabe
c3b9425130 network: make link_configure() static 2021-05-23 17:12:48 +09:00
Yu Watanabe
fbb1a39866 ordered-set: introduce ordered_set_get() 2021-05-23 17:12:40 +09:00
Yu Watanabe
2a5a844259
Merge pull request #19681 from yuwata/ethtool-util-log
ethtool-util: several cleanups
2021-05-23 15:24:46 +09:00
Yu Watanabe
3ee316bd7b ethtool-util: drop unused function 2021-05-23 11:40:15 +09:00
Yu Watanabe
80662eecbf udev/net: drop unnecessary conditions 2021-05-23 11:40:15 +09:00
Yu Watanabe
a7994dd3ab udev/net: drop fallback logic to set speed
ethtool_set_glinksettings() already fallback to use ETHTOOL_GSET/ETHTOOL_SSET
commands when ETHTOOL_GLINKSETTINGS/ETHTOOL_SLINKSETTINGS are not
supported.
2021-05-23 11:40:15 +09:00
Yu Watanabe
ba1030594e ethtool-util: do not touch anything if nothing is requested
And update settings only when it is necessary.
2021-05-23 11:40:15 +09:00
Yu Watanabe
c8e644b116 ethtool-util: disable autonegotiation when speed, duplex, or port is specified
And if autonegotiation is enabled, speed, duplex, and port are ignored.

Fixes #19625.
2021-05-23 11:40:15 +09:00