Commit Graph
47947 Commits
Author SHA1 Message Date
Mike Yuan d7ececa107 Merge pull request #31028 from yuwata/journalctl-raise
journalctl: call all cleanup functions before raise()
2024-02-12 19:16:15 +08:00
Mike Yuan 4d0b06d535 Merge pull request #31181 from fbuihuu/gpt-auto-more-defensive
gpt-auto-generator: be more defensive when checking the presence of E…
2024-02-12 19:12:17 +08:00
Lennart Poettering 24835e9933 varlinkctl: if "call" verb is used, imply "-j"
For the other verbs turning off JSON mode makes sense, but for "call"
not so much, after all the contents of a method call reply is JSON we
couldn't really show any other way.

Hence, when JSON output was not configured otherwise in "call", default
to the same as -j.
2024-02-12 12:04:18 +01:00
Lennart Poettering 7781d28fd7 varlinkctl: add new --collect switch
It exposes the varlink_collect() call we internally provide: it collects
all responses of a method call that is issued with the "more" method
call flag. It then returns the result as a single JSON array.
2024-02-12 12:04:18 +01:00
Lennart Poettering 9bca989183 varlink: rework varlink_collect()
This reworks varlink_collect() so that it is not just a wrapper around
varlink_observe(), varlink_bind_reply() and others. It becomes a first
class operation.

This has various benefits:

1. Memory management is normalized: the reply json variant is now
   tracked as part of the varlink object, and thus we do not pass
   ownership to the caller. This is just like we do it for simple method
   calls and removes a lot of confusion.
2. The bind reply/user data pointer can be used for user stuff, we'll
   not silently override this.
3. We enforce an overall time-out operation on the whole thing, so that
   this synchronous operation does no longer block forever.
2024-02-12 12:04:18 +01:00
Lennart Poettering 72226a2f95 varlink: properly return reply flags to callers
We so far have a reply flags return parameter on varlink_call_full(),
but we return 0 always. Let's fix that, and return the actual flags we
see.
2024-02-12 12:04:18 +01:00
Lennart Poettering 0430a11eb4 varlink: enforce a maximum size limit on replies collected via varlink_collect()
We should not allow servers to blow up client's memory without bounds,
hence set a (high) limit on replies we'll collect before failing.
2024-02-12 12:04:18 +01:00
Lennart Poettering 15138e7980 pcrlock: add basic Varlink interface
This can be used to make or delete a PCR policy via Varlink. It can also
be used to query the current event log in CEL format.
2024-02-12 12:04:18 +01:00
Lennart Poettering 9fe15ce84d pcrlock: split out generation of CEL objects into helper func
This way, we can reuse it later to generate Varlink replies

No change in behaviour, just some trivial split out.
2024-02-12 12:04:18 +01:00
Lennart Poettering 8279484a41 pcrlock: use log_setup() 2024-02-12 12:02:27 +01:00
Lennart Poettering 48930a5ded pid1: make MaxConnectionsPerSource= also work for AF_UNIX sockets
The setting currently puts limits on connections per IP address and
AF_UNIX CID. Let's extend it to cover AF_UNIX too, where it puts a limit
on connections per UID.

This is particularly useful for the various Accept=yes Varlink services
we now have, as it means, the number of per-user instance services
cannot grow without bounds.
2024-02-12 11:57:16 +01:00
Yu Watanabe f43330eace Merge pull request #30209 from yuwata/sd-journal-reduce-fstat
sd-journal: potentially reduce number of fstat call
2024-02-12 19:38:24 +09:00
Sam Leonard a8f940c4b5 vmspawn: add support for --bind(-ro)= 2024-02-12 09:46:02 +00:00
Sam Leonard c05ca33af3 vmspawn: add support for --private-users 2024-02-12 09:46:01 +00:00
Sam Leonard d4a58877e4 nspawn: use parse_userns_uid_range 2024-02-12 09:46:01 +00:00
Sam Leonard acdef55ef7 basic/namespace-util: add parse_userns_uid_range 2024-02-12 09:46:00 +00:00
Sam Leonard 5c57a86506 vmspawn: add support for -D/--directory 2024-02-12 09:46:00 +00:00
Eric Daigle 321a8c595e firstboot: validate keymap entry
As described in #30940, systemd-firstboot currently does not perform
any validation on keymap entry, allowing nonexistent keymaps to be
written to /etc/vconsole.conf. This commit adds validation checks
based on those already performed on locale entry, preventing invalid
keymaps from being set.

Closes #30940

m
2024-02-12 10:23:38 +01:00
Frantisek Sumsal 3588c510d3 Merge pull request #31149 from YHNdnzj/restart-force-oneshot
core/service: allow RestartForceExitStatus= for oneshot service
2024-02-12 10:20:09 +01:00
Franck Bui 8a1326581d gpt-auto-generator: be more defensive when checking the presence of ESP in fstab
Looking for the ESP node is useful to shortcut things but if we're told that
the node is not referenced in fstab that doesn't necessarily mean that ESP is
not mounted via fstab. Indeed the check is not reliable in all cases. Firstly
because it assumes that udev already set the symlinks up. This is not the case
for initrd-less boots. Secondly the devname of the ESP partition can be wrongly
constructed by the dissect code. For example, the approach which consists in
appending "p<partnum>" suffix to construct the partition devname from the disk
devname doesn't work for DM devices.

Hence this patch makes the logic more defensive and do not mount neither ESP
nor XBOOTLDR automatically if any path in paths that starts with /efi or /boot
exists.
2024-02-12 09:30:35 +01:00
Yu Watanabe ac5c938006 Merge pull request #30138 from yuwata/udev-processing-flag
udev: introduce ID_PROCESSING flag
2024-02-12 11:38:57 +09:00
Yu Watanabe 1651c914df repart: fix typo
Follow-up for 1a0541d44c.
2024-02-12 02:52:37 +09:00
Yu WatanabeandCosta Tsaousis 63d2c7554e logs-show: get timestamp and boot ID only when necessary
Previously, get_display_timestamp() is unconditionally called even if we
will show logs in e.g. json format.
This drops unnecessary call of get_display_timestamp().

This also makes journal fields in each entry parsed only once in
output_short(). Still output_verbose() twice though.

This should improve performance of dumping journals.

Replaces #29365.

Co-authored-by: Costa Tsaousis <costa@netdata.cloud>
2024-02-12 02:42:36 +09:00
Yu WatanabeandCosta Tsaousis cb2b0326ee sd-journal: drop to use Hashmap to manage journal files per boot ID
As reported at https://github.com/systemd/systemd/pull/30209#issuecomment-1831344431,
using hashmap in frequently called function reduces performance.
Let's replace it with a single array and bsearch.

Replaces #29366.

Co-authored-by: Costa Tsaousis <costa@netdata.cloud>
2024-02-12 02:42:36 +09:00
Yu WatanabeandCosta Tsaousis f7f062bf9f tree-wide: set SD_JOURNAL_ASSUME_IMMUTABLE where appropriate
Co-authored-by: Costa Tsaousis <costa@netdata.cloud>
2024-02-12 02:42:36 +09:00
Yu WatanabeandCosta Tsaousis bd1af1d5fb sd-journal: introduce SD_JOURNAL_ASSUME_IMMUTABLE flag
The flag can be used when it is not necessary to follow journal file
update.

Co-authored-by: Costa Tsaousis <costa@netdata.cloud>
2024-02-12 02:41:28 +09:00
Yu Watanabe 64347b9723 journalctl: call all cleanup functions before raise()
Note, even with this, memory allocated internally by glibc is not freed.
But, at least, memory explicitly allocated by us is freed cleanly even
Ctrl-C is pressed during 'journalctl --follow'.

Closes #30995.
2024-02-12 02:36:20 +09:00
Yu Watanabe 51fb0d30c7 main-func: make _DEFINE_MAIN_FUNC() take short function
No functional change, just refactoring.
2024-02-12 02:18:18 +09:00
Yu Watanabe 51b2bcf835 sd-journal: make journal_file_read_tail_timestamp() notify to the caller that some new journal entries added
Tiny optimization for journal_file_find_newest_for_boot_id().
2024-02-12 01:27:50 +09:00
Yu Watanabe 99e6f682d3 sd-journal: cache last entry offset and journal file state
When the offset of the last entry object (or last object for journal
files generated by an old journald) is not changed, the timestamps
should be updated by journal_file_read_tail_timestamp() are unchanged.
So, we can drop to call fstat() in the function.

As, the journal header is always mapped, so we can read the offset and
journal file state without calling fstat.
Still, when the last entry offset is changed, we may need to call fstat()
to read the entry object. But, hopefully the number of fstat() call
can be reduced.
2024-02-12 01:23:16 +09:00
Yu Watanabe 13176bfedc network: do not enter initialized state when the interface is being processed by udevd
Fixes #30056.
2024-02-12 01:14:55 +09:00
Yu Watanabe f30a47c45e udev-util: introduce device_is_processing() helper function 2024-02-12 01:14:48 +09:00
Yu Watanabe 1e7c8fe494 udev-util: use device_get_property_bool() at one more place 2024-02-12 01:13:50 +09:00
Yu Watanabe f6bda694f9 udev: introduce ID_PROCESSING=1 boolean property
This indicates that the device is being processed by udevd.
2024-02-12 01:09:21 +09:00
Yu Watanabe 4ebf678f1f Merge pull request #30260 from yuwata/sd-journal-cleanups
sd-journal: further cleanups
2024-02-12 01:07:11 +09:00
Mike Yuan 189a08e83d core/service: allow RestartForceExitStatus= for oneshot services
I think this was just overlooked in #13754, which removed
the restriction of Restart= on Type=oneshot services.
There's no reason to prevent RestartForceExitStatus=
now that Restart= has been allowed.

Closes #31148
2024-02-10 21:19:36 +08:00
Mike Yuan d67c51e386 core/service: make error msg match with conditions
This was discussed in
https://github.com/systemd/systemd/pull/13754#discussion_r333395362.
I think we should actually list "success" Restart= settings instead.
There are more error statuses than success ones after all, and this
list hasn't really changed for quite some time.
2024-02-10 21:19:35 +08:00
Daan De Meyer 1a0541d44c repart: Add --generate-fstab= and --generate-crypttab= options
These can be used along with two new settings MountPoint= and
EncryptedVolume= to write fstab and crypttab entries to the given
paths respectively in the root directory that repart is operating on.

This is useful to cover scenarios that aren't covered by the
Discoverable Partitions Spec. For example when one wants to mount
/home as a separate btrfs subvolume. Because multiple btrfs subvolumes
can be mounted from the same partition, we allow specifying MountPoint=
multiple times to add multiple entries for the same partition.
2024-02-10 13:07:02 +01:00
Luca Boccassi 769ca9ab55 Merge pull request #31261 from bluca/repart_engine
repart: support engines and providers
2024-02-09 21:28:59 +00:00
Daan De Meyer 23f9af646b Merge pull request #29960 from CodethinkLabs/vmspawn/mkosi-features
vmspawn: add features required by mkosi
2024-02-09 18:39:54 +01:00
Lennart Poettering d7c3724258 ptyfwd: automatically turn off tinting/window title logic on dumb terminals
If we are not talking to a reasonable terminal let's not try to set the
window title or tint the background.
2024-02-09 18:27:01 +01:00
Lennart Poettering 8f1fe0410d ptyfwd: simplify error handling in shovel()
We treat all errors the same, hence let's just have a common handling
for that, and normalize how we propagate errors from shovel().

No change in behaviour, just some refactoring.
2024-02-09 18:27:01 +01:00
Lennart Poettering 8496b938ab run: set window title
In interactive terminal mode, let's set a window title that reflects our
change of context to the target. Let's prefix it it with red/yellow
emoji dot in case we changed privileges.
2024-02-09 18:27:01 +01:00
Lennart Poettering ab03434aa7 nspawn: set window title from container name
Let's update the window title with an ANSI sequence if we can. We'll
insert a blue dot, to match the blue tinting of the terminal screen,
indicating that we are in a container.
2024-02-09 18:27:01 +01:00
Lennart Poettering c80139f078 glyph-util: add colored circle glyphs 2024-02-09 18:27:01 +01:00
Lennart Poettering ddba81d8dd ptyfwd: optionally update window title if we are running a ptyfwd session 2024-02-09 18:27:01 +01:00
Lennart Poettering d0aa368c85 ptyfwd: tweaks to background tinting logic
This makes two changes:

1. it resets the background color not only on NL (aka LF) but also on
   CR, but without erasing things to the end of the line. This increases
   compatbility with tools such as "less" which use CR to jump back to
   the beginning of the line.

2. previously we'd not process series of newlines or ansi sequences
   without intermediate other characters correctly, we'd always assume
   what follows is regular text. Fix that, and correctly determine the
   right state from the subsequent character.
2024-02-09 18:27:01 +01:00
Lennart Poettering e90ec3a847 Merge pull request #31269 from poettering/vconsole-enodev
vconsole/pid1: handle ENODEV on /dev/console somewhat graceful
2024-02-09 18:04:09 +01:00
Zbigniew Jędrzejewski-Szmek 117aa0140f tmpfiles: simplify how a helper function is called
No functional change.
2024-02-09 17:57:42 +01:00
Zbigniew Jędrzejewski-Szmek b1935cc943 tmpfiles: use dir_cleanup() for R and D
... i.e. apply nested config (exclusions and such) when executing R and D.

This fixes a long-standing RFE. The existing logic seems to have been an
accident of implementation. After all, if somebody specifies a config with
'R /foo; x /tmp/bar', then probably the goal is to remove stuff from under /foo,
but keep /tmp/bar. If they just wanted to nuke everything, then would not specify
the second item.

This also makes R and D use O_NOATIME, i.e. the access times of the directories
that are accessed will not be changed by the cleanup.

Obviously, we'll have to add this to NEWS and such.
Looking at the whole tmpfiles.d config in Fedora, this change has no effect.

The test cases are adjusted as appropriate. I also added another test case for
'R'/'D' with a file, just to test this code path more.

Replaces #20641.
Fixes #1633.
2024-02-09 17:57:42 +01:00