Commit Graph
51571 Commits
Author SHA1 Message Date
Luca Boccassi 2b577d598b Merge pull request #34675 from poettering/dupfd-query
fd-util: use F_DUPFD_QUERY for same_fd()
2024-10-08 19:30:57 +01:00
Luca Boccassi 8a1c78f33e Merge pull request #34674 from yuwata/reallocarray
tree-wide: replace reallocarray() with GREEDY_REALLOC()
2024-10-08 19:27:43 +01:00
Luca Boccassi d07e1e07fe Merge pull request #34672 from yuwata/timestamp
analyze: fix timestamp
2024-10-08 19:21:28 +01:00
Michal Koutný 64f173324e core/manager: Deprecate StartAuxiliaryScope() method
The method was added with migration of resources in mind (e.g. process's
allocated memory will follow it to the new scope), however, such a
resource migration is not in cgroup semantics. The method may thus have
the intended users and others could be guided to StartTransientUnit().

Since this API was advertised in a regular release, start the removal
with a deprecation message to callers.
Eventually, the goal is to remove the method to clean up DBus API and
simplify code (removal of cgroup_context_copy()).

Part of DBus docs is retained to satisfy build checks.
2024-10-08 17:49:13 +02:00
Lennart Poettering ac42b151f8 Merge pull request #34556 from ryantimwilson/extra-fds
Add ExtraFileDescriptor property to StartTransientUnit dbus API
2024-10-08 13:26:59 +02:00
Lennart Poettering e7f9053475 fd-util: use F_DUPFD_QUERY for same_fd()
Catch up with the nice little toys the kernel fs developers have added
for us. Preferably, let's make use of the new F_DUPFD_QUERY fcntl() call
that checks whether two fds are just duplicates of each other
(duplicates as in dup(), not as in open() of the same inode, i.e.
whether they share a single file offset and so on).

This API is much nicer, since it is a core kernel feature, unlike the
kcmp() call we so far used, which is part of the (optional)
checkpoint/restore stuff.

F_DUPFD_QUERY is available since kernel 6.10.
2024-10-08 13:13:49 +02:00
Lennart Poettering 6056663a14 fd-util: introduce fd_validate() helper
It just uses F_GETFD to validate an fd. it's a bit easier to read
though, and handles the < 0 case internally.
2024-10-08 13:13:44 +02:00
Yu Watanabe 223a67e572 tree-wide: replace reallocarray() with GREEDY_REALLOC() 2024-10-08 19:56:09 +09:00
Yu Watanabe 5f9f38b8df sd-bus: introduce bus_process_cmsg()
- Close all fds on failure.
- Close pidfd on success.
2024-10-08 19:56:00 +09:00
Yu Watanabe 483db6867a analyze: use RET_GATHER() 2024-10-08 19:36:50 +09:00
Yu Watanabe 6d3012bab4 time-util: copy input string before fork()
Fixes #34670.
2024-10-08 19:15:54 +09:00
Yu Watanabe eb87d3e1e9 time-util: fix parsing timestamp with NZ timezone
Fixes a bug caused by ef658a63f8.
2024-10-08 19:15:00 +09:00
Lennart Poettering 86eb9b4f38 resolved: use SOCKADDR_LEN() where appropriate 2024-10-08 12:09:34 +02:00
Lennart Poettering 5699e4c2d4 resolved: fix fastopen fallback
We should not invalidate the socket address size before we use it.

Fixes: #34579
2024-10-08 12:09:34 +02:00
Yu Watanabe 9f0d2d64cc core: use memdup_suffix0() at one more place 2024-10-08 14:43:23 +09:00
Yu Watanabe 858eac353b prioq: use GREEDY_REALLOC() and structured initializer
No functional change, just refactoring.
2024-10-08 14:43:23 +09:00
Ryan Wilson 3543456f84 Add ExtraFileDescriptor property to StartTransientUnit dbus API
This adds the ExtraFileDescriptor property to StartTransient dbus API
with format "a(hs)" - array of (file descriptor, name) pairs. The FD
will be passed to the unit via sd_notify like Socket and OpenFile.

systemctl show also shows ExtraFileDescriptorName for these transient
units. We only show the name passed to dbus as the FD numbers will
change once passed over the unix socket and are duplicated, so its
confusing to display the numbers.

We do not add this functionality for systemd-run or general systemd
service units as it is not useful for general systemd services.
Arguably, it could be useful for systemd-run in bash scripts but we
prefer to be cautious and not expose the API yet.

Fixes: #34396
2024-10-07 09:01:48 -07:00
Daan De Meyer a417592b06 Merge pull request #34472 from ikruglov/ikruglov/io-systemd-Machine
machine: implement varlink interfaces io.systemd.Machine.{List, Unregister, Terminate, Kill}
2024-10-07 17:22:31 +02:00
Ivan Kruglov 144128d317 machine: extend io.systemd.Machine.List output with sshPrivateKeyPath field
Effectivelly, this is an implementation of GetMachineSSHInfo in dbus.
2024-10-07 14:50:16 +02:00
Ivan Kruglov 0c3191a506 machine: use JSON_BUILD_PAIR_STRING_NON_EMPTY() in io.systemd.Machine.List output 2024-10-07 14:49:55 +02:00
Ivan Kruglov 17d9f172eb machine: introduce io.systemd.Machine.Kill varlink method 2024-10-07 14:45:49 +02:00
Ivan Kruglov 6bb6354b4f machine: introduce io.systemd.Machine.Terminate varlink method 2024-10-07 14:45:49 +02:00
Ivan Kruglov 7999aa2c79 machine: introduce io.systemd.Machine.Unregister varlink method 2024-10-07 14:45:49 +02:00
Ivan Kruglov 1bd979dddb machine: io.systemd.Machine.List supports 'pid' filter 2024-10-07 14:45:48 +02:00
Luca Boccassi 68f0c80bc4 Merge pull request #34644 from yuwata/udev-node-diskseq
udev-node: do not create stack directory for by-diskseq symlink
2024-10-07 12:17:28 +01:00
Yu Watanabe 14dde316c7 sd-json: use sd_json_dispatch_const_string() in sd_json_dispatch_string()
Also, do similar for json_dispatch_user_group_name().
2024-10-07 09:53:36 +02:00
Yu Watanabe f769518c9a tree-wide: drop doubled empty lines 2024-10-07 09:51:37 +02:00
Yu Watanabe 1faf2e5332 network: use Network.name for bus path
No functional change, just refactoring.
2024-10-07 09:48:57 +02:00
Yu Watanabe a02166297c networkctl: sort ifindexes in status command
Before:
$ networkctl status
● Interfaces: 372, 368, 373, 375, 376, 377, 378, 379, 381, 391, 3, 1201, 1202, 1184, 1610, 9, 8, 1340, 2, 1, 1256, 7

After:
$ networkctl status
● Interfaces: 1, 2, 3, 7, 8, 9, 368, 372, 373, 375, 376, 377, 378, 379, 381, 391, 1184, 1201, 1202, 1256, 1340, 1610
2024-10-07 09:48:00 +02:00
Yu Watanabe dd9a02ce88 homectl: drop unnecessary brackets
Follow-up for 164ca24d74.
2024-10-07 09:01:57 +02:00
Yu Watanabe ec846d9db3 Merge pull request #34491 from AdrianVovk/sysupdate-fixups
Quick sysupdate fixups
2024-10-07 15:38:58 +09:00
Yu Watanabe 51e905b9fa Merge pull request #34408 from Werkov/fix-device-limits
core/cgroup: Apply IODevice*= directives in configured order
2024-10-07 14:05:44 +09:00
Lukas Nykryn da32cac8a0 core: warn if a generator is world-writable
... because that is obviously a security risk.
2024-10-07 11:02:37 +09:00
Yu Watanabe 96067f7669 udev-node: introduce node_remove_symlink()
Also
- make the failure propagated,
- remove /dev/block or /dev/char if empty.

Hopefully, no effective functionality changed. Just refactoring.
2024-10-07 09:56:26 +09:00
Yu Watanabe 2a41b4b0f4 udev-node: rename node_symlink() -> node_create_symlink()
Also adds short comment for the NULL arguments.

No functional change, just refactoring.
2024-10-07 09:56:26 +09:00
Yu Watanabe 09373c1a50 udev-node: skip stack directory creation for diskseq
The disk/by-diskseq symlink should not be shared with multiple block
devices. Hence, it is not necessary to create stack directory for the
symlink that manages which device owns the symlink.

This is not just a optimization.
If a service unit tries to mount a disk image but the service fails, then
the diskseq of the loop device for the image may be continuously increased
during restart, and inodes in /run may increase rapidly, as the stack
directories are cleaned up only when udev queue is empty.

Fixes #34637.
2024-10-07 09:56:26 +09:00
Yu Watanabe ffe967c598 Merge pull request #34432 from YHNdnzj/path-lookup-refactor
path-lookup: several cleanups
2024-10-07 09:31:47 +09:00
Ryan Wilson f88813b71a busctl: Support file descriptors in busctl
Previously using file descriptors as input arguments in busctl was
unsupported with "UNIX file descriptor not supported as type."

We fix this by parsing the file descriptor as an integer and verifying
it is an available file descriptor in busctl.

Fixes: #14954
Replaces: #34551
2024-10-06 14:11:31 -07:00
Benjamin ROBIN 615279f369 shutdown: In sync_with_progress(), log first then send SIGKILL
The order of these 2 lines was swapped in commit
758760a361. Put them in the right order,
and take yuwata's comment into account.
2024-10-06 19:56:49 +02:00
Zbigniew Jędrzejewski-Szmek ac36c4dcd9 sd-json: reorder enum so that SD_JSON_FORMAT_OFF is first
This doesn't really matter, all bits in a word are created equal, but having
the "off" value in the middle seems strange.
2024-10-06 19:48:17 +02:00
Mike Yuan 0aae1a09a3 path-lookup: move xdg_user_dirs() to xdg-autostart-generator
This is the only place where xdg_user_dir() is needed and
makes sense. All other invocations have been replaced with
user_search_dirs() - see previous commits for details.
2024-10-06 19:42:39 +02:00
Mike Yuan 5ce4902249 path-lookup: refactor lookup_paths_init() search paths handling
* Rename user_dirs() -> user_unit_search_dirs() and port to
  user_search_dirs()
* Use STRV_IFNOTNULL to guard paths that could be NULL,
  assert otherwise
2024-10-06 19:42:39 +02:00
Mike Yuan 1f8eedba9d path-lookup: introduce user_search_dirs() (shall replace xdg_user_dirs())
xdg_user_dirs() doesn't seem well-organized currently.
In all other xdg_user_*() funcs we assume /etc/xdg/systemd
to be a symlink to /etc/systemd/, hence it is the odd one out.
Also, when the relevant envvar is unset, it only returns
the global search dirs.

sd_path_lookup() actually covers this nicely with SD_PATH_SEARCH_*,
where the combined search paths (from user home and system) are used.
Therefore, let's introduce a wrapper for that, and deprecate xdg_user_dirs()
(would be removed in later commits).
2024-10-06 19:42:39 +02:00
Mike Yuan 546110ded9 path-lookup: assert that LOOKUP_PATHS_{EXCLUDE,TEMPORARY}_GENERATED are not used in conjunction 2024-10-06 19:42:39 +02:00
Mike Yuan cfda202fa9 path-lookup: unify *_generator_binary_paths() 2024-10-06 19:32:55 +02:00
Mike Yuan 536f6bd467 path-lookup: modernize get_paths_from_environ()
Use retval rather than additional param to indicate
whether the normal paths shall be appended.
2024-10-06 19:32:55 +02:00
Mike Yuan b8018297a8 path-lookup: shortcut patch_root_prefix() if no root_dir 2024-10-06 19:32:54 +02:00
Mike Yuan 716fab66ab path-lookup: unify acquire_{config,control,attached}_dir()
Note that -ENXIO reported by xdg_user_config_dir() is now properly
propagated rather than ignored, as unlike XDG_RUNTIME_DIR, XDG_CONFIG_HOME
has a default value hence ENXIO is not really expected.
2024-10-06 19:32:54 +02:00
Mike Yuan bd79a88f34 path-lookup: use path_strv_contains() rather than strv_contains() 2024-10-06 19:32:54 +02:00
Mike Yuan 0e0e20bfb1 path-lookup: clean up acquire_{generator,transient}_dirs() a bit 2024-10-06 19:32:54 +02:00