Commit Graph
100 Commits
Author SHA1 Message Date
Yu Watanabe 15bd45d113 man: fix typos and grammar in various man pages 2026-09-17 02:25:12 +09:00
Yu Watanabe 6a68191199 compress: avoid shifting null pointer
Otherwise, UBSAN complains when src is NULL even though the shift is zero:

../src/basic/compress.c:2074:29: runtime error: applying zero offset to null pointer
2026-09-10 00:11:29 +09:00
Yu Watanabe e0577192d0 tar-util: fix error code on failure (#43688) 2026-09-09 04:27:38 +09:00
Yu Watanabe 2170ce77f2 acl-util: make acl_set_perm() helper return negative errno
All callers expect it returns negative errno on failure.
2026-09-09 00:45:17 +09:00
Yu Watanabe f3a9444896 tar-util: fix error cause passed to logger 2026-09-09 00:45:17 +09:00
Yu Watanabe 2560925dd8 NEWS: fix typo 2026-09-07 20:43:18 +09:00
Yu Watanabe deef441b03 include: update kernel headers from v7.3-rc2
The only difference from the previous update is that now CONFIGFS_MAGIC
is listed in the magic.h, hence the override is not necessary anymore.
2026-09-07 19:36:29 +09:00
Yu Watanabe 5c7ca2d6a6 network: update route protocol string table
RTPROT_KEEPALIVED, RTPROT_OVN, and RTPROT_OPENR are added.
These are mostly used for logging, so documentation update is not
necessary.
2026-09-07 19:08:35 +09:00
Yu Watanabe 50a41d15b5 networkd-link: refactoring logger for IFF_ flags
No functional change.
2026-09-07 19:08:35 +09:00
Yu Watanabe 0b5d9bf140 wifi-util: update string tables
Note, NL80211_CMD_PROBE_CLIENT is renamed to NL80211_CMD_PROBE_PEER
in kernel v7.3:
https://github.com/torvalds/linux/commit/4ab9b637b94a3821acfcd6d6037dffe33669245a
2026-09-07 19:08:35 +09:00
Yu Watanabe 8577cfe2bc wifi-util: align table with = 2026-09-07 19:08:35 +09:00
Yu Watanabe 0b5c330d15 Several follow-ups for wildcard hostname (#43628) 2026-09-04 17:39:51 +09:00
Yu Watanabe 175b52e294 network-generator: use parse_path_argument() to avoid spurious paths 2026-09-04 11:26:11 +09:00
Yu Watanabe c21a49cd3d core/swap: don't resurrect swap units whose device link disappeared (#43443)
Fixes #43442.

A `.swap` unit can end up **active but unloadable, with no device**, and
stopping such a unit aborts PID 1.

### What it looks like

```
$ systemctl show 'dev-disk-byx2dpartlabel-primary.swap' -p LoadState,ActiveState,What
LoadState=not-found
ActiveState=active
What=                     # <-- no device

$ systemctl stop 'dev-disk-byx2dpartlabel-primary.swap'
systemd[1]: About to execute: /usr/sbin/swapoff        # <-- no argument
systemd[1]: Caught <ABRT>, from our own process.
systemd[1]: Freezing execution.
```

PID 1 stays alive but frozen, so the machine stops answering `systemctl`
and never reboots.

### How it happens
1. systemd creates one `.swap` unit per udev device link of every device
in `/proc/swaps`.
2. A device link gets repointed at another device while the swap stays
on. `/proc/swaps` doesn't change, so nothing re-examines the unit — it
stays active.
3. The next `daemon-reload` drops all units and rebuilds them.
Enumeration from `/proc/swaps` no longer produces this name, so only the
deserialization brings the unit back: by name, with no fragment on disk.
4. `swap_load()` only calls `swap_add_extras()` for units that loaded a
fragment or are backed by `/proc/swaps`, so this one gets neither a
`What=` nor a patched `ExecContext`.
5. `swap_coldplug()` restores its active state anyway.
6. Shutdown stops it. `unit_stop()` deliberately permits stopping units
whose load failed, so it reaches `exec_spawn()` and trips the
`PrivateVarTmp=` assertion in `exec_context_serialize()`.
2026-09-04 04:11:29 +09:00
Yu Watanabe d028295865 hostname-setup: use READ_FULL_FILE_VERIFY_REGULAR 2026-09-03 06:56:54 +09:00
Yu Watanabe 65a967fc46 test: several follow-ups for test-hostname-pick-word
'pos' must be >= 1, otherwise triggers assertion in
hostname_pick_word().
'c' should be >= 1, otherwise nothing tested.
2026-09-03 06:45:43 +09:00
Yu Watanabe 15f7905335 Tweak the hostname-worldlist code (#43599) 2026-09-03 06:29:25 +09:00
Yu Watanabe f559927982 test: fix ConditionCPUFeature= tests with architecture prefix
CPU architecture is determined by uname(), rather than the compile time
macros like __i386__, __x86_64__, __aarch64__.

Let's conditionalize with uname_architecture().

Follow-up for d518675741.
2026-09-03 06:16:05 +09:00
Yu Watanabe 736cb91535 resolved: actually unregister DNS-SD services when the D-Bus client vanishes (#43578)
Since the D-Bus DNS-SD API was introduced in c3036641f0ed (v236),
`RegisterService()` has created an `sd_bus_track` object to destroy the
registered service when the registering client disconnects from the bus.
However, the track object is a `_cleanup_(sd_bus_track_unrefp)` local in
`bus_method_register_service()` that is never stored anywhere, so it is
destroyed again as soon as the method handler returns. The vanish
handler (`dnssd_registered_service_on_bus_track()`) has thus been dead
code for the past ~8 years.

The observable effect: services registered via D-Bus silently persist
after the client disconnects — unowned, advertised until resolved exits,
and impossible to re-register since the identifier stays taken
(`DNSSD_SERVICE_EXISTS`). At the same time, the registration doesn't
survive a resolved restart, so the current behavior is neither reliably
ephemeral nor reliably persistent. Noticed while reviewing a project
that (unknowingly relying on this bug) registers a service with a
one-shot `gdbus call` and expects it to persist.

This PR:
1. splits the goodbye/zone-removal logic out of
`bus_dnssd_method_unregister()` into a helper — the vanish path needs
the full teardown, not just `dnssd_registered_service_free()`, which
would leave the service's RRs published in the per-link mDNS zones;
2. stores the track object in `DnssdRegisteredService`, making client
tracking work as originally intended;
3. documents the lifetime semantics in `org.freedesktop.resolve1(5)`
(matching the equivalent Avahi D-Bus API, whose entry groups are
likewise bound to the client connection) and points to `*.dnssd` files
for registrations independent of a client's lifetime;
4. adds a TEST-75 case covering the connection-bound lifetime.

Note this is a behavioral change for fire-and-forget clients (one-shot
`busctl`/`gdbus` invocations). Arguably those were never working
reliably (registrations silently vanished on any resolved restart, and
stale entries blocked re-registration), but if this is deemed too risky,
the alternative would be to drop the dead tracking code and codify the
persist-until-exit behavior instead — I'd argue tracking as originally
intended is the better contract.

Verification: code compiles; the new integration test is included.
2026-09-03 06:14:31 +09:00
Yu Watanabe 26f4d56015 compress: fix unbounded buffer growth on truncated streams, and fuzz the decompressors (#43589) 2026-09-02 19:59:51 +09:00
Yu Watanabe 636bd5a0e6 Revert "build(deps): bump meson from 1.11.2 to 1.12.0 in /.github/workflows"
This reverts commit a8ade912ce.
2026-09-02 00:09:25 +09:00
Yu Watanabe d0fcc5a9ec core: Don't racily stop Type=dbus services when the bus broker restarts (#42455) 2026-09-01 09:24:48 +09:00
Yu WatanabeandSiteshwar Vashisht 9064524e44 ndisc: fix a memory leak in ndisc_option_parse_encrypted_dns()
Newly allocated new_res variable was left unreferenced if memory
allocation failed in ndisc_option_add_encrypted_dns_internal().

Co-authored-by: Siteshwar Vashisht <svashisht@redhat.com>
2026-09-01 01:00:15 +09:00
Yu Watanabe dee2ea17c7 Update Linux kernel headers from v7.3-rc1 (#43573) 2026-09-01 00:59:36 +09:00
Yu Watanabe 69c8578c17 test: use linux/magic.h from our tree
We copy linux/magic.h from the kernel source tree and use it when
building systemd. Let's also make the kernel-filesystem-magics test
use the copy in our tree rather than the one installed on the system.

To achieve that now the 'check' command takes both 'cpp' and
'system_include_args' from meson.
2026-08-31 21:17:30 +09:00
Yu Watanabe 8220fcf4fe filesystem: correctly recognize failfs
The kernel v7.3-rc1 introduces failfs:
https://github.com/torvalds/linux/commit/fa0d6d945e5ce96cff14b114eec7527f13d7f23a
2026-08-31 19:43:10 +09:00
Yu Watanabe 6ce2db8dc2 include: update Linux kernel headers from v7.3-rc1 2026-08-31 19:43:10 +09:00
Yu Watanabe e7e91b9bc1 man: also document -V option for udevd and run0
The option -V has been documented in their help message, but not in the
corresponding man pages.
2026-08-29 07:40:43 +09:00
Yu Watanabe 69a54c37ac options: introduce OPTION_COMMON_VERSION_WITH_V and version_only()
The man page udevadm(8) have explicitly documented that the option -V is
a short form of --version. Let's not hide the short form in the help
message.

This introduces OPTION_COMMON_VERSION_WITH_V then use it in udevadm,
udevd, and run0.

Alos, this moves print_version() to build.c, and renames it to
version_only(). Now the function is also used in udevd amd test-libudev.

With this change, the -V option is hidden only in dmi_memory_id and
scsi_id. So, this removes the OPTION_COMMON_VERSION_WITH_HIDDEN_V macro
and explicitly list the hidden option in their code.
2026-08-29 07:40:35 +09:00
Yu Watanabe 39cf979007 Final batch of conversions to COMMAND and additions of --introspect-cli (#43558) 2026-08-29 04:26:12 +09:00
Yu Watanabe a2de89f622 libc: call epoll_pwait2 syscall directly instead of resolving glibc symbols
As mentioned in a05fe6684a, glibc provides two
wrappers for epoll_pwait2() on 32-bit architectures, and sys/epoll.h,
together with features-time64.h, selects the appropriate one.

To avoid depending on symbols introduced in newer glibc releases, that
commit relied on the glibc internal macro __USE_TIME_BITS64 to determine
which wrapper to use. However, that is incorrect on some architectures.
See:
https://sourceware.org/git/?p=glibc.git;a=commit;h=a4ed0471d71739928a0d0fa3258b3ff3b158e9b9

The above glibc commit introduces a new internal macro,
__USE_TIME64_REDIRECTS, which correctly describes whether the time64
wrapper should be used. However, we cannot rely on it because it was
introduced in glibc 2.40, while our baseline remains glibc 2.34.

Moreover, even after raising the baseline, relying on glibc internal
implementation details is undesirable.

Instead, call the epoll_pwait2 syscall directly. This avoids any
dependency on glibc wrapper selection logic while preserving the original
goal of avoiding newer glibc symbols.

As a side effect, this also enables epoll_pwait2() on musl, which does not
currently provide a libc wrapper for it.

Currently, epoll_pwait2() is only used by sd-event, so this is also the
simplest solution.
2026-08-28 06:19:13 +09:00
Yu Watanabe 82fb7a0297 import: dlopen libacl only when libarchive support is enabled
Otherwise, test-dlopen-note.py fails when libarchive support is disabled
but libacl support is enabled.

Also, log the dlopen_libarchive() failure at LOG_ERR level, matching how
the other failures are already logged.

Fixes #43530.
2026-08-27 17:05:34 +02:00
Yu Watanabe 445c6ce8a2 compress: several fixlets for decompressor (#43506) 2026-08-27 07:58:38 +09:00
Yu Watanabe 46c8f2e9b4 coredump: support kernel coredump socket (#43330)
This adds kernel coredump socket support added in v6.17. See
https://lore.kernel.org/all/20250603-work-coredump-socket-protocol-v2-0-05a5f0c18ecc@kernel.org/
2026-08-27 07:55:47 +09:00
Yu Watanabe 49132b134d README: mention several kernel features about coredump 2026-08-27 05:55:08 +09:00
Yu Watanabe 29de356679 man: update documentation for systemd-coredump 2026-08-27 05:55:03 +09:00
Yu Watanabe d649c186be test: support the new coredump services 2026-08-27 05:54:17 +09:00
Yu Watanabe daef042536 journal: also allow to store coredump by systemd-coredumpd.service 2026-08-27 05:52:53 +09:00
Yu Watanabe 264ca8f827 coredump: support kernel coredump socket protocol
Since kernel v6.17, we can set a path to unix socket to core_pattern
(with request mode). See also:
https://lore.kernel.org/all/20250603-work-coredump-socket-protocol-v2-0-05a5f0c18ecc@kernel.org/

This introduces a tiny service that prepares and listens on a UNIX
socket to be passed to the kernel core pattern. When a process is
crashed, the kernel connects to the socket, and sends information
about the crashed process and passes coredump through the socket.
The service accepts the connection, and forks a worker process that
receives coredump from the kernel.
2026-08-27 05:52:49 +09:00
Yu Watanabe 0351920ac7 coredump: do not coredump in setting up logger
If log_parse_environment() or log_set_target_and_open() triggers
assertion or so, then we may enter endless loop. Let's disable coredump
earlier.
2026-08-27 05:50:14 +09:00
Yu Watanabe 3fd564e876 coredump: do not try to read si_code more than once
This also renames coredump_context_read_pidfd_info() to
coredump_context_read_code(), as it only reads COREDUMP_CODE.

This does not change anything effectively, as the function is called
only once. Preparation for later change.
2026-08-27 05:50:14 +09:00
Yu Watanabe d81e6b93d6 process-util: split out procfs_get_stat_flags() from pid_is_kernel_thread() 2026-08-27 05:50:14 +09:00
Yu Watanabe 059b41654f include: add missing definition of PF_DUMPCORE 2026-08-27 05:50:14 +09:00
Yu Watanabe d8c0fa3cb8 import: finalize decompressor
Otherwise, the result may be truncated, or trailing garbage may be
silently accepted.
2026-08-27 04:36:57 +09:00
Yu Watanabe dac2b39405 compress: strictly check if stream finished on decompress
Previously, even when the compressed data was truncated, or had
trailing garbage, the decompressor might not detect it.

To fix the issue, update the check if stream is finished.
With this change, now decompressor_push() must be called with
size == 0 to finalize the stream.
2026-08-27 04:36:57 +09:00
Yu Watanabe d9b6e8663c compress: check cursor position in should_sparse()
Otherwise, the result will be broken, as skipped area by lseek() is not
cleared.
2026-08-27 04:36:57 +09:00
Yu Watanabe f577c38a52 compress: inline error handling 2026-08-27 04:36:50 +09:00
Yu Watanabe fefe8f3132 compress: use consistent error code for failure in BZ2_bzDecompressInit() 2026-08-27 04:36:29 +09:00
Yu Watanabe b9dbbccd20 compress: fix indentation and add short comment 2026-08-27 04:35:03 +09:00
Yu Watanabe d365c4cd52 compress: fix error handling for lzma_lzma_preset()
Follow-up for 91d6f1ee53.
2026-08-27 04:34:34 +09:00
Yu Watanabe fb1160c588 test-compress: replace writing zeros with ftruncate() + lseek() 2026-08-27 04:34:34 +09:00
Yu Watanabe dd997b4fb8 test-compress: compare decompressed data with source 2026-08-27 04:34:34 +09:00
Yu Watanabe 64b98140fa coredumpctl: several cleanups (#43481)
This splits coredumpctl.c into small pieces, and fixes several minor
issues such that memleak, unremoved temporary files, and missing
uncompressed core file handling. This also makes `coredumpctl
dump/debug` command accept --json= option that was previously silently
ignored.
2026-08-27 00:28:18 +09:00
Yu Watanabe 9fab87df93 udev,network: skip reloading if already in stopping state (#43504)
Prompted by #43482.
2026-08-27 00:26:58 +09:00
Yu Watanabe 6fe09adf81 network: several follow-ups for proxy neighbor setting (#43408)
Follow-ups for 08bebda611.
2026-08-27 00:09:59 +09:00
Yu Watanabe 10adafa358 test-tar: log failure in loading libarchive on LOG_ERR
Other failures are logged on LOG_ERR.
2026-08-26 08:20:34 +09:00
Yu Watanabe 1e615d7e4e import: missing dlopen_libacl() before fork
tar_x() and tar_c() may use libacl. Hence, libacl should be loaded
before fork.
2026-08-26 08:20:34 +09:00
Yu Watanabe 06318e7b98 tar-util: add missing dlopen libarchive
Otherwise, if the library is not loaded yet, these functions will fail.

Note, currently, all callers of tar_x/tar_c() load libarchive before
calling them. So, this should not change any behavior. Just for safety
and following our usual coding style.
2026-08-26 08:20:34 +09:00
Yu Watanabe 32798431dd tar-util: do not call open_inode_done() twice on failure
Previously, if open_inode_finalize() for an object was failed, the number
count was not decremented, hence open_inode_done() is called twice for
the object: once in the failed open_inode_finalize(), and once in the
open_inode_free_array() invoked by the cleanup attribute.

Note, with the previous commit, open_inode_done() is idempotent. Hence,
calling open_inode_done() twice (or more) for the same object is
harmless. Just for safety.
2026-08-26 08:20:33 +09:00
Yu Watanabe 25d7cdc9f5 tar-util: clear xattrs and acls in open_inode_done()
Otherwise, if it is called multiple times for an object, then the
xattrs and acls may be freed multiple times.
2026-08-26 08:19:44 +09:00
Yu Watanabe 385fa7641d coredumpctl: allow to dump uncompressed core file
Previously, if a core file is not compressed, `coredumpctl dump`
is failed with -EPROTONOSUPPORT, as the file was unconditionally passed
to decompress_stream_by_filename().
2026-08-26 02:13:11 +09:00
Yu Watanabe 89a5de18f3 coredumpctl: handle errors earlier
No functional change, just refactoring.
2026-08-26 02:13:11 +09:00
Yu Watanabe c616943f7e coredumpctl: split out acquire_core_from_journal() 2026-08-26 02:13:11 +09:00
Yu Watanabe ab9c1bdae0 coredumpctl: several cleanups for save_core()
- Rename to acquire_core().
- Make it take a fd rather than FILE*.
- Make it take two ret_ arguments to store paths so that callers can
  easily use _cleanup_(unlink_and_freep) for the created temp file.
2026-08-26 02:13:11 +09:00
Yu Watanabe f2496d862a coredumpctl: split out open_tmpfile() from save_core()
No functional change. Preparation for later change.
2026-08-26 02:13:11 +09:00
Yu Watanabe af8ff25a64 coredumpctl: use _cleanup_(unlink_and_free)
This fixes memleak on failure paths, and remaining temp file on failure
in reading coredump from journal.
2026-08-26 02:13:11 +09:00
Yu Watanabe d180614188 coredumpctl: check earlier if stdout is not connected to a tty 2026-08-26 02:13:11 +09:00
Yu Watanabe 8972b051a7 coredumpctl: allow to show coredump info in json format in dump and debug command
Previously `coredumpctl dump/debug` silently ignored --json= option.
Let's honor the option.
2026-08-26 02:13:11 +09:00
Yu Watanabe 6f8b23398c coredumpctl: fix assertion
The field is not checked by journald. Hence, the value may be missing.
An empty value will be refused by path_is_absolute() in the below.
2026-08-26 02:10:56 +09:00
Yu Watanabe 063d7b451d coredumpctl: move verb_run_debug() to coredumpctl-debugger.c 2026-08-26 02:05:55 +09:00
Yu Watanabe ea75664af1 coredumpctl: move verb_dump_core and save_core() to coredumpctl-core.c 2026-08-26 02:05:55 +09:00
Yu Watanabe 3e24c014bf coredumpctl: move verb_dump_list() to coredumpctl-list.c 2026-08-26 02:05:55 +09:00
Yu Watanabe d75e0fb932 coredumpctl: move acquire_journal() and focus() to coredumpctl-journal.c 2026-08-26 02:05:55 +09:00
Yu Watanabe 751a230974 coredumpctl: move print_info() and print_entry() to coredumpctl-info.c 2026-08-26 02:05:55 +09:00
Yu Watanabe a3b8ce6e33 coredumpctl: move resolve_filename() and retrieve() to coredumpctl-util.c 2026-08-26 02:05:55 +09:00
Yu Watanabe 7c8480fe37 coredumpctl: extern several global variables 2026-08-26 02:05:55 +09:00
Yu Watanabe 2d31e784f1 vconsole: allow to control font scaling
This adds FONT_SCALE= setting in vconsole.conf,
vconsole.font_scale= kernel command line option and credential support.
When 2 or 200% is specified, the console font size will be doubled.

Closes #43273.
2026-08-25 06:58:06 +09:00
Yu Watanabe 3f72568682 varlink: introduce io.systemd.service.GetLogLevel (#43484)
...and use it to implement `log-level` in `resolvectl`.
2026-08-25 05:44:16 +09:00
Yu Watanabe 474522edb0 network: refuse reloading if already stopping or restarting
Otherwise, if reloading is requested after SIGTERM/SIGINT is received,
a new operation may be started, e.g. creating a new netdev or so,
and that will easily fail and may cause spurious network state.

Also, send STOPPING notification to the service manager when
received SIGTERM/SIGINT.
2026-08-25 00:01:09 +09:00
Yu Watanabe 39facba161 udev: skip several operations if already in stopping state
Especially, ignore SIGHUP in such case. Otherwise, RELOADING and READY
notification may be sent to PID1, and PID1 warns about the spurious
state transition.

Prompted by 1aedc8fe5e.
2026-08-25 00:01:08 +09:00
Yu Watanabe 98b867040e compress: several trivial cleanups (#43490) 2026-08-24 21:12:06 +09:00
Yu Watanabe e036040529 test-compress: extend buffer size
Otherwise, random input cases are not tested:
```
/* test_compress_decompress_blob */
/* testing xz text blob compression/decompression */
Loaded shared library 'liblzma.so.5' via dlopen().
/* testing xz random blob compression/decompression */
compression failed: No buffer space available
/* testing lz4 text blob compression/decompression */
Loaded shared library 'liblz4.so.1' via dlopen().
/* testing lz4 random blob compression/decompression */
compression failed: No buffer space available
/* testing zstd text blob compression/decompression */
Loaded shared library 'libzstd.so.1' via dlopen().
/* testing zstd random blob compression/decompression */
compression failed: No buffer space available
/* testing gzip text blob compression/decompression */
Loaded shared library 'libz.so.1' via dlopen().
/* testing gzip random blob compression/decompression */
compression failed: No buffer space available
/* testing bzip2 text blob compression/decompression */
Loaded shared library 'libbz2.so.1' via dlopen().
/* testing bzip2 random blob compression/decompression */
compression failed: No buffer space available
```
2026-08-24 03:30:52 +09:00
Yu Watanabe 20923e8ddc compress: use dlopen_compress() at one more place 2026-08-24 03:30:52 +09:00
Yu Watanabe 7ea7833b86 compress: shorten code a bit 2026-08-24 03:30:52 +09:00
Yu Watanabe 1e7a69ff87 compress: use decompressor_new() at several more places 2026-08-24 03:30:52 +09:00
Yu Watanabe 87693c7073 compress: make decompressor_new() accept NONE 2026-08-24 03:30:52 +09:00
Yu Watanabe 4e2cb2bdf1 compress: use dlopen_compress() in decompress_stream() 2026-08-24 03:30:52 +09:00
Yu Watanabe 8f0bc58664 compress: introduce dlopen_compress() and friends 2026-08-24 03:30:52 +09:00
Yu Watanabe ded83144eb sd-journal: constify several arguments 2026-08-23 15:27:41 +09:00
Yu Watanabe f9558beb18 resolve: add io.systemd.Resolve.Monitor.{FlushCaches,ResetServerFeatures} (#43479)
Some miscellaneous varlink migration for resolved.

These seem to fit better with the io.systemd.Resolve.Monitor interface,
so add them to that.
2026-08-22 04:43:41 +09:00
Yu Watanabe 58b0764a20 sysctl: introduce --save= and --revert= options (#43325) 2026-08-21 04:57:57 +09:00
Yu Watanabe 8c321be1fb journal: always obtain Manager object from varlink server
Previously, the userdata assigned varlink operation was Manager object or
SyncReq object, depends on if synchronization operation is queued or not.

When there is a method that sets a custom userdata, we should not
inherit the userdata of sd_varlink_server to sd_varlink.

Let's drop SD_VARLINK_SERVER_INHERIT_USERDATA flag from the server,
and always obtain the Manager object from the server.

Follow-up for c2806a8c1d.
2026-08-21 04:56:28 +09:00
Yu Watanabe 5e2d9c6ed1 man: document systemd-sysctl --save= and --revert= 2026-08-21 00:50:02 +09:00
Yu Watanabe 80e346af74 test: add test cases for systemd-sysctl --save= and --revert= 2026-08-21 00:48:25 +09:00
Yu Watanabe fb19c2ffa2 sysctl: introduce --revert= option to remove runtime sysctl config
This may be useful for removing files created by the --save= option.
2026-08-21 00:46:17 +09:00
Yu Watanabe 45bd015441 sysctl: add --save= option to save loaded settings
This may be useful for saving sysctl settings provided on the command line,
via standard input, or with --inline.
2026-08-21 00:45:13 +09:00
Yu Watanabe 1c223728cf sysctl: skip leading whitespaces and ignore arguments start with '#' when --inline 2026-08-21 00:40:53 +09:00
Yu Watanabe 5c76cb0e27 sysctl: --inline requires positional arguments 2026-08-21 00:40:53 +09:00
Yu Watanabe e67956f31c Another batch of conversions to COMMAND and additions of --introspect-cli (#43436)
This is another batch of straightforward conversions. I wanted to do
udevadm here too, but it requires some design work.
2026-08-20 01:41:53 +09:00
Yu Watanabe d971596a02 verbs: fix typo
Found by Fossies.

Follow-up for 7ea090f41b.
2026-08-19 22:58:22 +09:00