1
0
mirror of https://github.com/systemd/systemd.git synced 2025-01-26 14:04:03 +03:00

56592 Commits

Author SHA1 Message Date
Zbigniew Jędrzejewski-Szmek
02de9614d4 manager: prevent cleanup of triggering units before we start the handler
This fixes the following case:
OnFailure= would be spawned correctly, but OnSuccess= would be
spawned without the MONITOR_* metadata, because we'd "collect" the unit
that started successfully. So let's block cleanup while we have a job
running for the handler. The job cannot last infinitely, so at some point
we'll be able to collect both.
2022-03-10 14:51:28 +00:00
Zbigniew Jędrzejewski-Szmek
7a5049c780 manager/service: when we have multiple candidates to handle, warn
This would be very confusing to users, so let's warn if they configured the
same handler for multiple units and we're not running it as expected.
2022-03-10 14:51:28 +00:00
Zbigniew Jędrzejewski-Szmek
edbf8984a4 manager/service: when we spawn, say why
We already logged what we are spawning, but not so much why. Let's
add this, so it's easier to distinguish execstartpre/execstart/execstartpost
and such.
2022-03-10 14:51:28 +00:00
Zbigniew Jędrzejewski-Szmek
82acee149c manager: log how many OnSuccess/OnFailure jobs were started 2022-03-10 14:51:28 +00:00
Zbigniew Jędrzejewski-Szmek
adf769b06c manager: adjust comment 2022-03-10 14:51:28 +00:00
Zbigniew Jędrzejewski-Szmek
fb1381662b various: align vertically for ease of reading 2022-03-10 14:51:28 +00:00
Zbigniew Jędrzejewski-Szmek
f086cca248 TEST-68: enhance testing of chained commands
The test would fail when the the same handler was used for multiple
*failing* units. We need to call 'reset-failed' to let the manager forget
about the earlier ones.

systemd-analyze log-target console is removed, because it's easier to follow
the logs if logging it to the journal.
2022-03-10 14:51:28 +00:00
Zbigniew Jędrzejewski-Szmek
ff7b9a2693 TEST-68-PROPAGATE-EXIT-STATUS: deobfuscate shell code and fix typo
After the cleanup, it was fairly easy to see the wrong variable name ;)
2022-03-10 14:43:14 +00:00
Luca Boccassi
3fbd5f2007 NEWS: note backward-incompatible MONITOR_METADATA change 2022-03-10 14:43:14 +00:00
Luca Boccassi
c19c4ab148 test: cover template OnFailure/OnSuccess handlers in TEST-68-PROPAGATE-EXIT-STATUS 2022-03-10 14:43:14 +00:00
Luca Boccassi
95c81c55b2 core: split $MONITOR_METADATA and return it only if a single unit triggers OnFailure/OnSuccess
Remove the list logic, and simply skip passing metadata if more than one
unit triggered an OnFailure/OnSuccess handler.
Instead of a single env var to loop over, provide each separate item
as its own variable.

Fixes https://github.com/systemd/systemd/issues/22370
2022-03-10 14:43:14 +00:00
Luca Boccassi
bd844eae23
Merge pull request #22685 from bluca/user_root_dir
core: support MountAPIVFS and RootDirectory in user manager
2022-03-10 13:12:19 +00:00
Yu Watanabe
999fc88331
Merge pull request #22595 from poettering/logind-action-refact
logind: some minor refactoring around logind's HandleAction logic
2022-03-10 20:56:15 +09:00
Luca Boccassi
ea63a260d4 core: support MountAPIVFS and RootDirectory in user manager
The only piece missing was to somehow make /proc appear in the
new user+mount namespace. It is not possible to mount a new
/proc instance, not even with hidepid=invisible,subset=pid, in
a user namespace unless a PID namespace is created too (and also
at the same time as the other namespaces, it is not possible to
mount a new /proc in a child process that creates a PID namespace
forked from a parent that created a user+mount namespace, it has
to happen at the same time).

Use the host's /proc with a bind-mount as a fallback for this
case. User session services would already run with it, so
nothing is lost.
2022-03-10 10:21:03 +00:00
licunlong
28c5859fa3 main: drop get_process_cmdline from crash handler
get_process_cmdline calls malloc, which should be avoid in signal handler.

Fixes: #22690
2022-03-10 09:19:50 +01:00
Temuri Doghonadze
b62c270503 po: Translated using Weblate (Georgian)
Currently translated at 23.2% (44 of 189 strings)

po: Added translation using Weblate (Georgian)

Co-authored-by: Temuri Doghonadze <temuri.doghonadze@gmail.com>
Translate-URL: https://translate.fedoraproject.org/projects/systemd/master/ka/
Translation: systemd/main
2022-03-09 15:42:19 +00:00
Lennart Poettering
a3ddcc1114 logind: rename scheduled_shutdown_type → scheduled_shutdown_action
This matches naming of the 'delayed_action' field we already have. It's
similar in both type and concept, and hence should be named similarly.
2022-03-09 16:34:32 +01:00
Lennart Poettering
48bccaa92e logind: rename manager_item_for_handle() → handle_action_lookup()
The function has nothing to do with any Manager object, hence drop that
from the name. And it actually looks something up by handle *action* not
by *handle*, hence the old name was a bit misnomer. Let's call it
handle_action_lookup(), as it queries handle action metainfo for a
handle action.

Also, let's make sure it behaves more like our usual functions that
lookup some fixed data from some enum value/int: let's return NULL if we
don't find it.
2022-03-09 16:34:00 +01:00
Lennart Poettering
5e06260b2c logind: drop unused prototype 2022-03-09 16:24:11 +01:00
Lennart Poettering
510eccab5f logind: minor whitespace fix 2022-03-09 16:24:11 +01:00
Lennart Poettering
b0a3a5e538 logind: rename ActionTableItem → HandleActionData
It stores meta-info about various HandleActions, hence let's name it
after that. The fact that it can be seen as stored inside some form of a
table is an implementation detail of logind-action.c, and should not
leak into other modules, hence let's focus on what it is, not how it is
stored.
2022-03-09 16:24:11 +01:00
Lennart Poettering
6800876608 logind: replace handle_action_valid() macro by inline function
The old macro will double evaluation and has no protection against
operator precedence issues. Let's fix that by using an inline func
instead, which also gives us typesafety.
2022-03-09 16:24:10 +01:00
Lennart Poettering
a5a316e7a7 update TODO 2022-03-09 14:25:43 +01:00
Jason A. Donenfeld
31234fbeec random-util: unify RANDOM_ALLOW_INSECURE and !RANDOM_BLOCK and simplify
RANDOM_BLOCK has existed for a long time, but RANDOM_ALLOW_INSECURE was
added more recently, leading to an awkward relationship between the two.
It turns out that only one, RANDOM_BLOCK, is needed.

RANDOM_BLOCK means return cryptographically secure numbers no matter
what. If it's not set, it means try to do that, but if it fails, fall
back to using unseeded randomness.

This part of falling back to unseeded randomness is the intent of
GRND_INSECURE, which is what RANDOM_ALLOW_INSECURE previously aliased.
Rather than having an additional flag for that, it makes more sense to
just use it whenever RANDOM_BLOCK is not set. This saves us the overhead
of having to open up /dev/urandom.

Additionally, when getrandom returns too little data, but not zero data,
we currently fall back to using /dev/urandom if RANDOM_BLOCK is not set.
This doesn't quite make sense, because if getrandom returned seeded data
once, then it will forever after return the same thing as whatever
/dev/urandom does. So in that case, we should just loop again.

Since there's never really a time where /dev/urandom is able to return
some easily but more with difficulty, we can also get rid of
RANDOM_EXTEND_WITH_PSEUDO. Once the RNG is initialized, bytes
should just flow normally.

This also makes RANDOM_MAY_FAIL obsolete, because the only case this ran
was where we'd fall back to /dev/urandom on old kernels and return
GRND_INSECURE bytes on new kernels. So also get rid of that flag.

Finally, since we're always able to use GRND_INSECURE on newer kernels,
and we only fall back to /dev/urandom on older kernels, also only fall
back to using RDRAND on those older kernels. There, the only reason to
have RDRAND is to avoid a kmsg entry about unseeded randomness.

The result of this commit is that we now cascade like this:

  - Use getrandom(0) if RANDOM_BLOCK.
  - Use getrandom(GRND_INSECURE) if !RANDOM_BLOCK.
  - Use /dev/urandom if !RANDOM_BLOCK and no GRND_INSECURE support.
  - Use /dev/urandom if no getrandom() support.
  - Use RDRAND if we would use /dev/urandom for any of the above reasons
    and RANDOM_ALLOW_RDRAND is set.
2022-03-09 14:25:15 +01:00
Laura Barcziova
d15e1a29e3 Packit: build SRPMs in Copr
Add srpm_build_deps key to the Packit config to specify needed dependencies for SRPM build
and indicate to build SRPM in Copr.
2022-03-09 09:52:41 +00:00
Luca Boccassi
4c0ab40ab8 test: set log level of user manager in TEST-43 to debug 2022-03-09 02:08:25 +00:00
Luca Boccassi
3ebf0b0bd4 core: create parent directory for mount point of ExtensionDirectories
This is used by ExtensionDirectories too, as they are bind-mounted in the
propagate directory to check the extension-release files
2022-03-09 02:02:17 +00:00
Yu Watanabe
c10caebb98 test: skip TEST-17 on ubuntu ppc64el
On Ubuntu CI on ppc64el, the test randomly fails when /run/udev is not
synced before checking its contents (see #22357). But /run/udev is a
tmpfs and fsync on tmpfs is noop (see `struct shmem_file_operations` in
mm/shmem.c of the kernel), hence, it is not necessary to call fsync on
/run/udev in general. This should be a testing emvironment issue (I
guess it is an issue on nested KVM on ppc64el), instead of an issue on
udev.

C.f. #22357.

Fixes #21603.
2022-03-08 17:03:11 +00:00
licunlong
7347b3db83 main: log which process send SIGNAL to PID1
This can help users to figure out what makes systemd freeze.
1. Someone kills systemd accidentally, then the sender_pid won't be 1;
2. systemd triggers segfault or assert, then the sender_pid will be 1;
2022-03-09 00:09:46 +09:00
Zbigniew Jędrzejewski-Szmek
4db62561c2 core: manage SetShowStatus through polkit
When writing docs for SD_BUS_VTABLE_CAPABILITY, I noticed that we have one use
of SD_BUS_VTABLE_CAPABILITY(CAP_SYS_ADMIN) in the tree. This is the default, so
it's not very useful to specify it. But if we're touching that, I think it's
better to use mac + polkit for this like for everything else.

We don't have a very good category for this, but I don't think it makes sense
to add a new one. I just reused the same as other similar calls.
2022-03-08 23:13:36 +09:00
David Bond
e92a3d8fa3 udev: 60-persistent-storage-tape.rules: handle duplicate device ID
Some SCSI tape devices use the same device ID (NAA registered device
designator) for the SCSI tape changer device and the first actual tape
device. For example, this one:

https://docs.oracle.com/en/storage/tape-storage/storagetek-sl150-modular-tape-library/slofs/bridged-tape-drives.html

   You must connect the bridged drive to an HBA supporting multiple
   LUNs (also referred to as LUN scanning). The SL150 Library uses a
   single SCSI ID and two logical unit numbers (LUN). LUN 0 controls
   the tape drive and LUN 1 which is configured as a SCSI medium
   changer device controls the robotics. Data is sent to the remaining
   LUN on the bridged drive or to LUNs on the other, unbridged drives
   in the partition, all of which are configured as SCSI
   sequential-access (tape) devices.

This may lead to errors because /dev/tape/by-id symlinks may sometimes
point to the st device representing the tape, and sometimes to the sg
device representing the changer.

Fix this by assigning an increased priority to the tape device, and creating
a separate -changer link for the SCSI tape changer.

Co-developed-by: Martin Wilck <mwilck@suse.com>
2022-03-08 23:12:10 +09:00
tawefogo
6c5f368646
Fix mic mute on Acer TravelMate B311-31 (#22677) 2022-03-08 23:10:51 +09:00
Zbigniew Jędrzejewski-Szmek
835f79fddd
Merge pull request #22656 from keszybz/portablectl-method2
portable: add return parameter to GetImageMetadataWithExtensions
2022-03-08 13:26:33 +01:00
Luca Boccassi
4f2dba98ad TEST-29: do not pass -q to mk/unsquashfs, not supported on CentOS 8 2022-03-08 18:02:09 +09:00
Ludwig Nussel
ee3d33c415 logind: use mfree instead of freep 2022-03-07 19:43:18 +00:00
Frantisek Sumsal
3a2f1d19d4 ci: make the concurrency group identifier unique once again
Otherwise we end up randomly cancelling once of the two centos_epel
jobs.

Follow-up to da637c8fcad1baa530578982d41a6ecb1440f7c5.
2022-03-07 19:42:14 +00:00
Luca Boccassi
963c560a29 TEST-29: do not pass -q to mk/unsquashfs, not supported on CentOS 8 2022-03-07 17:05:59 +00:00
Bastien Nocera
d48bf01636 memory-id: Work-around incorrect "Number of slots"
In some BIOSes, the "Number of slots or sockets available for Memory
Devices in this array" is incorrectly set to the number of memory array
that's populated.

Work-around this problem by outputting the number of sockets after
having parsed them so that consumers of this data can carry on expecting
an accurate number in this property.

This fixes the number of memory slots advertised for the HP Z600.

See https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/1686
2022-03-07 15:33:26 +00:00
Luca Boccassi
ce3ca32cb9 NEWS: note GetMetadataWithExtensions backward incompatible change 2022-03-07 14:49:54 +00:00
Zbigniew Jędrzejewski-Szmek
087a799f64 portable: add return parameter to GetImageMetadataWithExtensions
The complaint was that the output array was used for two kinds of data, and the
input flag decided whether this extra data should be included. The flag is
removed, and instead the old method is changed to include the data always as
a separate parameter.

This breaks backward compatibility, but  the old method is effectively broken
and does not appear to be used yet, at least in open source code, by
searching on codesearch.debian.net and github.com.

Fixes #22404.

Co-authored-by: Luca Boccassi <bluca@debian.org>
2022-03-07 14:49:54 +00:00
Daan De Meyer
da637c8fca mkosi: Add CentOS Stream 9
The blocker causing Stream 9 builds to fail was fixed
(https://bugzilla.redhat.com/show_bug.cgi?id=2056276) so we can add
CentOS Stream 9 builds as well now.
2022-03-07 14:30:49 +00:00
Zbigniew Jędrzejewski-Szmek
6d6104e0c9 docs: add more links for portabled 2022-03-07 14:32:16 +01:00
Zbigniew Jędrzejewski-Szmek
90e3f3581d portable: inline one variable declaration 2022-03-07 14:32:01 +01:00
Zbigniew Jędrzejewski-Szmek
573e33de07 portablectl: reorder if branches to match previous conditional in the same function
One is a ternary op, the other an normal conditional, but they should still use
the same order of branches.
2022-03-07 14:31:48 +01:00
Zbigniew Jędrzejewski-Szmek
13391986b5 TEST-29: trim output a bit
IIUC, pipefail doesn't matter for a sequence of commands joined with &&, and we
don't have any pipes. And such a failing expression also does not trigger an
exit, so the set +e/set -e were noops.
2022-03-07 14:31:36 +01:00
4piu
19a04e8071 Add support for NEC VersaPro VG-S
The brightness control key (Fn+F7 Fn+F8) and touchpad toggle key (Fn + Space) do not work on the NEC VersaPro VG-S laptop. Add the keycode to fix the problem.
2022-03-07 12:07:26 +00:00
Yu Watanabe
a17e54783a tree-wide: fix typo 2022-03-07 15:32:22 +09:00
Frantisek Sumsal
55c09511e1 test: check systemd RPM macros
Make sure our RPM macros work as intended. Based on the original PR
(#16464) by Mikhail Novosyolov.

Co-authored-by: Mikhail Novosyolov <m.novosyolov@rosalinux.ru>
2022-03-06 13:07:20 +09:00
Zbigniew Jędrzejewski-Szmek
af5e1c5bd1
Merge pull request #22663 from keszybz/various-man-page-bits
Various man page bits
2022-03-04 18:16:46 +01:00
Zbigniew Jędrzejewski-Szmek
367a5e8a67 journalctl: advertise --header a bit more
Fixes #2738.
2022-03-04 16:44:02 +01:00