Commit Graph
46910 Commits
Author SHA1 Message Date
Lennart Poettering 891abc9cf1 systemctl: port to the new underline cell attribute
And be more careful when adding color to log lines:

1. Apply color derived from load state only to load state (and in
   special cases to the circle at the beginning of the line)

2. Apply color derived from active/sub states only to active/sub states
   (and in special cases to the circle at the beginning of the line)

3. Special case the "exited" state of services, i.e. make the substate
   grey, as in this case the service is active, yet consumes no
   resources.

4. Cover the "inactive" state properly, by greying it our too

5. Downgrade the load state of "not-found" from red to yellow, since
   it's not really a case one needs to be come active on.
2023-11-20 13:05:50 +01:00
Lennart Poettering aab79f5278 format-table: add a proper "underline" concept to cells 2023-11-20 13:05:50 +01:00
Lennart Poettering 6ad2049dd9 terminal-util: add macro for adding underline to existing formats
This is different from the existing macros that generate "underline"
ANSI sequences: these ones are additive, i.e. do not reset the font to
the default first. The idea is to combine these with other ansi
sequences.
2023-11-20 13:00:43 +01:00
Luca Boccassi 514c70eb52 test-condition: skip group test during Debian package build
The group names won't match in a package build chroot and the test might
fail, skip it.

https://buildd.debian.org/status/fetch.php?pkg=systemd&arch=hppa&ver=255%7Erc2-2&stamp=1700424353&raw=0
2023-11-20 10:51:42 +00:00
Yu Watanabe 0c710e0377 test: add test cases about plugin exit code 2023-11-20 10:17:54 +09:00
Yu Watanabe e42931b0ac kernel-install: propagate failures in plugins
This fixes a regression introduced by
42551ea7e9.

In the shell script version, plugin failures are propagated to the
caller. But after the commit, failures in plugins are logged, but never
propagated as the exit code of the execution.

Fixes #30087.
2023-11-20 09:55:53 +09:00
Mike Yuan 0e8f09561f hibernate-util: if asked to bypass space check, accept the case when we
have no swap space at all

But I shall still recommend
https://chrisdown.name/2018/01/02/in-defence-of-swap.html
to everyone ;-)

Fixes #30083
2023-11-18 20:15:42 +08:00
Mike Yuan 500ec22d09 hibernate-util: report no available swap as no enough swap space
Otherwise, ENOENT or ENXIO may be directly returned as error through
bus.

Should help to generate clearer error message for #30083.
2023-11-18 20:15:41 +08:00
Yu Watanabe fbf946ce22 network/dhcp: actually refuse to assign DHCP option when an invalid string is passed
Prompted by #30029.
2023-11-18 11:19:17 +00:00
Yu Watanabe 5acea42501 fuzz: always call fuzz_setup_logging() 2023-11-18 03:04:27 +09:00
Yu Watanabe 965040d811 test: always call test_setup_logging() 2023-11-18 03:04:27 +09:00
Zbigniew Jędrzejewski-Szmek 07a6647abb core: split out the helper to serialize/deserialize ratelimits 2023-11-17 17:47:37 +01:00
Luca Boccassi 41113e1c10 Merge pull request #30064 from bluca/unbork_direct_io
loop-util: restart loop_configure and reopen FD when O_DIRECT fails
2023-11-17 09:40:09 +00:00
Luca Boccassi dcddb2fc6b test: avoid asserting on default user shell
In some build environments it might differ:

/* test_get_user_creds_one("root", "root", 0, 0, "/root", "/usr/bin/bash") */
got "root", 0, 0, "/root", "/bin/sh": Success
Assertion 'path_equal(rshell, shell)' failed at src/test/test-user-util.c:345, function test_get_user_creds_one(). Aborting.

https://buildd.debian.org/status/fetch.php?pkg=systemd&arch=alpha&ver=255%7Erc2-1&stamp=1700147880&raw=0
2023-11-16 23:17:31 +00:00
Luca Boccassi 210dcd8fc6 test: minix fsck not found on alpha
It seems even this one is not everywhere, so relax the test:

/* test_fsck_exists */
Assertion 'fsck_exists_for_fstype("minix") == 1' failed at src/test/test-path-util.c:624, function test_fsck_exists(). Aborting.

https://buildd.debian.org/status/fetch.php?pkg=systemd&arch=alpha&ver=255%7Erc2-1&stamp=1700147880&raw=0
2023-11-16 23:01:46 +00:00
Luca Boccassi d579c42e9d loop-util: use the right error variable in log_debug_errno after fd_reopen 2023-11-16 21:13:10 +00:00
Luca Boccassi f5bb0a3163 loop-util: restart loop_configure and reopen FD when O_DIRECT fails
On kernel 5.10.178, when a squashfs file is stored on an EXT4 filesystem
backed by a dm-crypt volume, dissecting fails:

$ SYSTEMD_LOG_LEVEL=debug systemd-dissect /var/foo/bar.raw
Opened '/var/foo/bar.raw' in O_RDONLY access mode, with O_DIRECT enabled.
Couldn't find any partition table to derive sector size of.
loop2: Acquired exclusive lock.
Could not enable direct IO mode, proceeding in buffered IO mode.
Successfully acquired /dev/loop2, devno=7:2, nr=2, diskseq=87
Opened /dev/loop2 (fd=3, whole_block_devnum=7:2, diskseq=87).
      Name: bar.raw
      Size: 67.2M
 Sec. Size: 512
     Arch.: n/a

Successfully forked off '(sd-dissect)' as PID 4110.
Mounting /proc/self/fd/3 (squashfs) on /tmp/dissect-Zk3K5F (MS_RDONLY|MS_NODEV "")...
Failed to mount /proc/self/fd/3 (type squashfs) on /tmp/dissect-Zk3K5F (MS_RDONLY|MS_NODEV ""): Input/output error
Failed to mount dissected image: Input/output error
Failed to read /etc/hostname of image: No such file or directory
/etc/machine-id file of image is empty.
Failed to read has-init-system boolean: Input/output error
(sd-dissect) failed with exit status 1.
Failed to acquire image metadata: Input/output error

The kernel shows I/O errors:

kernel: blk_update_request: I/O error, dev loop2, sector 0 op 0x0:(READ) flags 0x800 phys_seg 1 prio class 0
kernel: SQUASHFS error: Failed to read block 0x0: -5
kernel: unable to read squashfs_super_block

This is independent of a particular filesystem and can be reproduced
reliably in my setup, starting from freshly formatted disks.

Instead of continuing when O_DIRECT fails, start over the setup
process without the flag, including opening a new FD, to make the
kernel happy.
2023-11-16 21:12:40 +00:00
Luca Boccassi 905dd9d6e6 Merge pull request #30055 from YHNdnzj/logind-handle-action
logind-action: several cleanups
2023-11-16 16:04:37 +00:00
Frantisek Sumsal f1e02423a9 login: mark the TTY property as "emits change"
Triggered by the SetTTY() method.

Follow-up to 092e6cd19a.
Addresses: https://github.com/systemd/systemd/pull/30043#pullrequestreview-1733628935
2023-11-16 11:26:26 +00:00
Luca Boccassi 9037ebf991 Merge pull request #30052 from dtardon/udev-fixes
Two small udev fixes
2023-11-16 11:25:24 +00:00
Mike Yuan 99416b6d4e logind-action: check if inhibit_what is valid
Fixes #30037
2023-11-16 17:49:33 +08:00
Mike Yuan febe81313e logind-inhibit: introduce inhibit_what_is_valid 2023-11-16 17:49:33 +08:00
Mike Yuan ddd0c2be81 logind-action: split out logic for handle_action_sleep
Preparation for #29853
2023-11-16 17:49:33 +08:00
Mike Yuan 51eeeb7bde logind: return "no" if sleep operation is disabled
According to org.freedesktop.login1:

> If "na" is returned, the operation is not available because
> hardware, kernel, or drivers do not support it. If "yes" is
> returned, the operation is supported and the user may execute
> the operation without further authentication. If "no" is returned,
> the operation is available but the user is not allowed to execute
> the operation.

Therefore, we should return "no" if sleep is explicitly disabled,
otherwise we return "na".
2023-11-16 17:49:33 +08:00
Luca Boccassi fd13d32ba7 Merge pull request #30047 from yuwata/sd-bus-assert-return
sd-bus: several fixlets found by making assert_return() critical
2023-11-16 09:34:31 +00:00
Yu Watanabe 25ac30bdb8 log: rename variables to store function call results 2023-11-16 09:21:10 +00:00
David Tardon 3afe909b75 udev-manager: fix log message 2023-11-16 10:16:11 +01:00
Yu Watanabe ebfbc5b9d8 Merge pull request #30043 from mrc0mmand/more-assert_return
More `assert_return()` shenanigans
2023-11-16 11:28:33 +09:00
Yu Watanabe 335185f1f2 Merge pull request #30045 from poettering/discover-image-tweaklets
discover-image: tiny tweaklets
2023-11-16 11:28:04 +09:00
Yu Watanabe 4d8b8f79d0 Merge pull request #30044 from poettering/dissect-tool-tweaklets
systemd-dissect --discover tweaklets
2023-11-16 11:27:47 +09:00
Luca Boccassi 461ef3981f sd-dhcp: use CMSG_FIND_AND_COPY_DATA to avoid build failures on x32 architectures
On architectures where timeval is 64bit but size_t is 32bit
we have to use CMSG_FIND_AND_COPY_DATA. This affects x32 and riscv32.

Follow-up for 905d0ea7b0
2023-11-16 11:26:57 +09:00
Yu Watanabe 69f1c33425 test: sd_bus_process() may assign NULL even if it returns positive
Let's not trigger assert_return() needlessly.

Prompted by #30029.
2023-11-16 09:35:44 +09:00
Yu Watanabe ce5a6d5307 test: several cleanups for test-bus-chat
- use sd_bus_query_sender_creds() to retrieve credentials,
- read credentials only when we get credentials, to avoid triggering
  assert_return(),
- downgrade log level of expected failure, and update log message about
  unexpected success.

Prompted by #30029.
2023-11-16 09:35:44 +09:00
Yu Watanabe 02dd646b16 sd-bus: drop SD_BUS_CREDS_AUGMENT flag
On checking if the message has enough credentials, the special flag
needs to be dropped.

Fixes a bug introduced by 705a415f68.
2023-11-16 09:35:44 +09:00
Yu Watanabe 22185cb71e sd-bus: insert missing space 2023-11-16 09:35:44 +09:00
Lennart Poettering 5df1a5538b discover-image: use TAKE_PTR() where appropriate 2023-11-15 22:53:35 +01:00
Lennart Poettering 25cdbd0428 discover-image: reindent string table 2023-11-15 22:53:35 +01:00
Lennart Poettering ba113008de dissect: set dash as ersatz string 2023-11-15 22:51:37 +01:00
Lennart Poettering 8f488d4634 dissect: right-align size column in --discover table 2023-11-15 22:51:37 +01:00
Frantisek Sumsal 236cb01622 login: mark the Display property as "emits change"
With the introduction of SetDisplay() method in 4885d7490b the Display
property emits a "properties changed" message every time the display is
changed using this method, so mark it appropriately.

Caught by systemd/systemd#30029:

systemd-logind[1366]: Got message type=method_call sender=:1.165 destination=org.freedesktop.login1 path=/org/freedesktop/login1/session/_310 interface=org.freedesktop.login1.Session member=SetDisplay  cookie=8 reply_cookie=0 signature=s error-name=n/a error-message=n/a
systemd-logind[1366]: Assertion 'v->vtable->flags & SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE || v->vtable->flags & SD_BUS_VTABLE_PROPERTY_EMITS_INVALIDATION' failed at src/libsystemd/sd-bus/bus-objects.c:2141, function emit_properties_changed_on_interface(). Ignoring.

Follow-up to 4885d7490b.
2023-11-15 22:41:24 +01:00
Frantisek Sumsal 9988043b6b sd-journal: don't assert on invalid field
Also, field_is_valid(field) already does isempty(field), so drop that as
well.

$ SYSTEMD_LOG_LEVEL=debug journalctl -o verbose -F foo-bar-baz
...
Assertion 'field_is_valid(field)' failed at src/libsystemd/sd-journal/sd-journal.c:2789, function sd_journal_query_unique(). Ignoring.
Failed to query unique data objects: Invalid argument
2023-11-15 22:31:02 +01:00
Frantisek Sumsal 1fa20dde9f Merge pull request #30040 from yuwata/assert-return-fixes
several assert_return() fixes
2023-11-15 21:05:06 +00:00
Krzesimir Nowak 59c8afbc89 repart: Fix compilation warning when tpm2 is disabled
The warning is about unused variable "flags":

```
../src/partition/repart.c: In function ‘partition_encrypt’:
../src/partition/repart.c:3690:19: warning: unused variable ‘flags’ [-Wunused-variable]
 3690 |         TPM2Flags flags = 0;
      |                   ^~~~~
```

Move the flags variable into the scope where it is actually used, which happens
to be inside the HAVE_TPM2 block.
2023-11-15 19:55:50 +00:00
Yu Watanabe aecedc48a6 sd-device: do not trigger assertion by a bad udev rules
The assertion can be triggered by bad `$attr{[<subsys>/<sysname>]<attribute>}`
formatting. That's not a programmer's error, but a runtime error.

Prompted by #30029.
2023-11-16 02:32:12 +09:00
Yu Watanabe c0b927eb3a dhcp: do not trigger assertion by malformed messages
This also changes error code from -ENODATA -> -EBADMSG,
as we received bad message in that case.

Prompted by #30029.
2023-11-16 02:32:12 +09:00
Yu Watanabe 4f6ae86629 network: do not try to create netdev from tests
Prompted by #30029.
2023-11-16 02:32:12 +09:00
Luca Boccassi 83aa04b998 Merge pull request #30033 from mrc0mmand/assert_return-tweaks
Dial back a couple of `assert_return()` uses
2023-11-15 16:24:48 +00:00
Luca Boccassi 03745d68f3 Merge pull request #30030 from poettering/gpt-growfs-root-fix
make gpt flag 59 (growfs) actually work on the root fs
2023-11-15 13:57:28 +00:00
Frantisek Sumsal 6565b9d0b1 sd-bus: don't treat invalid user/machine as a programming error
$ SYSTEMD_LOG_LEVEL=debug machinectl status --machine=@
Assertion 'r > 0' failed at src/libsystemd/sd-bus/sd-bus.c:1694, function sd_bus_open_system_machine(). Ignoring.
2023-11-15 13:56:50 +01:00
Frantisek Sumsal 6e07f600ba mount: don't call sd_device_get_property_value() with a NULL pointer
Otherwise bad thing would've happened is this was a hard assert:

+ systemd-mount --umount /dev/loop0
Assertion 'device' failed at src/libsystemd/sd-device/sd-device.c:2202, function sd_device_get_property_value(). Ignoring.
2023-11-15 13:46:09 +01:00