Lennart Poettering 81bd798b65 repart: support subscription on ListCandidateDevices
Extend the Varlink call so it can optionally stay open after the initial
enumeration and stream additions and removals over the same connection.
Useful for UIs that want a live list of candidate disks without polling.

New input "subscribe" (default false) and new output "action" (an enum
"add" / "remove" / "ready"). When subscribing:

  - The server starts an sd-device monitor on the "block" subsystem
    *before* the initial enumeration so events occurring during that
    window aren't dropped. Duplicate "add" events for the same device
    are legitimate and documented; clients upsert by identifier.
  - The initial candidate set is streamed as "add" notifications.
  - Exactly one "ready" notification follows, marking the boundary
    between the initial picture and live deltas.
  - Live SD_DEVICE_REMOVE events become "remove" notifications carrying
    only "node".
  - All other live actions re-run blockdev_list_one(); MATCH_YES maps
    to "add" (which doubles as "device metadata changed"), MATCH_FILTERED
    maps to "remove" so transitions driven by the dynamic
    ignoreEmpty / ignoreReadOnly filters (size becoming 0, read-only flag
    flipping on) are propagated as the device leaving the candidate set.
    Clients may therefore receive a "remove" for a device they never saw
    an "add" for; that is documented as legal.

Existing non-subscribing callers see no schema change: the new "action"
field is omitted from their replies via SD_JSON_BUILD_PAIR_CONDITION,
and the original NoCandidateDevices sentinel still fires when the
enumeration is empty.

The per-link subscription state is freed via an on-disconnect callback
bound lazily on first subscribe.
2026-06-01 11:26:15 +02:00
2026-05-25 12:37:36 +02:00
2025-03-07 17:27:20 +01:00
2026-05-31 10:02:00 +00:00
2026-04-09 14:04:16 -05:00
…
2026-04-18 14:24:47 +01:00
…
…
2025-06-05 14:39:20 +02:00
2026-03-06 08:55:55 +01:00
2025-10-07 13:00:12 +01:00
2026-05-05 15:09:47 +02:00
2026-05-26 21:54:42 +01:00
…
2026-05-26 21:52:59 +01:00
2026-05-22 12:15:15 +02:00

Systemd

System and Service Manager

OBS Packages Status
Semaphore CI 2.0 Build Status
Coverity Scan Status
OSS-Fuzz Status
CIFuzz
CII Best Practices
Fossies codespell report
Translation status
Coverage Status
Packaging status
OpenSSF Scorecard

Details

Most documentation is available on systemd's web site.

Assorted, older, general information about systemd can be found in the systemd Wiki.

Information about build requirements is provided in the README file.

Consult our NEWS file for information about what's new in the most recent systemd versions.

Please see the Code Map for information about this repository's layout and content.

Please see the Hacking guide for information on how to hack on systemd and test your modifications.

Please see our Contribution Guidelines for more information about filing GitHub Issues and posting GitHub Pull Requests.

When preparing patches for systemd, please follow our Coding Style Guidelines.

If you are looking for support, please contact our mailing list, join our IRC channel #systemd on libera.chat or Matrix channel

Stable branches with backported patches are available in the stable repo.

We have a security bug bounty program sponsored by the Sovereign Tech Fund hosted on YesWeHack

Repositories with distribution packages built from git main are available on OBS, and also repositories with packages built from the latest stable release

S
Description
systemd patched fork
Readme Cite this repository
409 MiB
Languages
C 88.5%
Shell 5.7%
Python 4.6%
Meson 1.1%