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-19 19:22:06 +00:00
2026-04-22 17:41:42 +02:00
2026-03-04 14:32:15 +01:00
2026-05-19 19:22:06 +00:00
2026-04-22 17:41:42 +02:00
2026-02-11 02:39:26 +01:00
2026-05-24 13:34:31 +02:00
2026-05-18 02:55:56 +09:00
2026-04-29 21:39:24 +01:00
2026-05-19 19:22:06 +00:00
2026-04-22 17:41:42 +02:00
2026-06-01 11:26:06 +02:00
2026-06-01 11:26:06 +02:00
2026-05-13 23:47:29 +01:00
2026-05-13 23:47:29 +01:00
2026-05-28 13:33:08 +01:00
2026-02-06 23:15:49 +01:00
2026-05-21 10:33:03 +09:00
2026-05-21 10:33:03 +09:00
2026-05-18 21:17:38 +00:00
2026-05-13 10:36:12 +02:00
2026-04-12 15:27:15 +02:00
2026-05-19 18:56:44 +00:00
2026-05-18 21:17:38 +00:00
2026-05-28 13:33:08 +01:00
2026-05-21 10:33:03 +09:00
2026-05-27 14:05:08 +02:00
2026-03-31 18:30:40 +02:00
2026-05-18 21:42:56 +02:00
2026-02-03 15:00:32 +01:00
2026-05-05 17:22:26 +02:00
2026-04-12 15:27:15 +02:00
2026-04-13 13:20:43 +02:00
2026-05-20 11:03:27 +02:00
2026-05-22 05:09:56 +09:00
2026-05-21 18:30:16 +02:00
2026-05-28 13:33:08 +01:00
2026-01-25 20:51:50 +01:00
2026-05-21 10:33:03 +09:00
2026-03-23 19:19:46 +00:00
2026-05-14 08:12:28 +02:00
2026-05-14 08:12:28 +02:00
2026-05-21 10:33:03 +09:00
2026-05-22 14:09:16 +01:00
2026-05-22 14:09:16 +01:00
2026-05-19 19:22:06 +00:00
2026-05-18 21:17:38 +00:00
2026-05-19 19:22:06 +00:00
2026-05-11 18:17:53 +01:00
2026-05-15 13:46:08 +01:00
2026-05-15 13:46:08 +01:00
2026-05-21 10:33:03 +09:00
2026-04-20 23:35:31 +02:00
2026-02-19 15:05:15 +01:00
2026-05-26 17:53:27 +09:00
2026-02-19 15:08:19 +01:00
2026-04-12 15:27:15 +02:00
2026-02-03 15:07:41 -05:00
2026-02-03 15:07:41 -05:00
2026-04-22 17:41:42 +02:00
2026-05-20 11:16:29 +02:00
2026-04-30 09:43:55 +02:00
2026-04-30 09:43:55 +02:00
2026-05-20 11:03:27 +02:00
2026-03-24 21:24:47 +01:00
2026-02-27 08:50:37 +01:00
2026-05-21 10:33:03 +09:00
2026-05-22 10:25:50 +02:00
2026-05-01 07:10:31 +02:00
2026-05-01 07:10:31 +02:00
2026-05-19 19:22:06 +00:00
2026-05-13 10:29:50 +02:00
2026-05-18 02:44:46 +09:00
2026-05-21 10:33:03 +09:00
2026-03-28 20:13:40 +00:00
2026-04-12 15:27:15 +02:00
2026-05-19 19:22:06 +00:00
2026-05-12 18:31:21 +02:00
2026-01-21 15:55:06 +01:00
2026-01-21 15:49:58 +01:00
2026-04-12 15:27:15 +02:00
2026-05-28 13:33:08 +01:00
2026-04-20 17:19:27 +02:00
2026-05-05 17:22:26 +02:00
2026-05-12 20:52:18 +02:00
2026-04-27 22:14:05 +09:00
2026-05-14 12:17:54 +02:00
2026-04-30 09:15:34 +02:00
2026-05-18 02:44:46 +09:00
2026-05-18 02:44:46 +09:00
2026-05-21 10:33:03 +09:00
2026-05-19 19:22:06 +00:00
2026-04-23 06:41:05 +02:00
2026-04-02 13:59:55 +02:00
2026-04-02 13:59:55 +02:00
2026-05-25 12:37:36 +02:00
2026-04-24 15:04:16 +02:00
2026-04-13 13:20:43 +02:00
2026-03-05 10:27:58 +01:00
2026-05-21 10:33:03 +09:00
2026-04-22 17:41:42 +02:00
2026-04-22 17:41:42 +02:00
2026-03-31 18:30:40 +02:00
2026-02-19 15:05:15 +01:00
2026-04-12 15:27:15 +02:00
2026-05-21 10:33:03 +09:00
2026-04-10 15:08:03 +02:00
2026-05-05 17:22:26 +02:00
2026-05-05 17:22:26 +02:00
2026-03-31 18:30:40 +02:00
2026-04-12 16:10:03 +02:00
2026-04-21 17:07:53 +02:00
2026-05-28 13:33:08 +01:00
2026-01-25 20:51:50 +01:00
2026-05-28 13:33:08 +01:00
2026-04-03 08:15:27 +02:00
2026-05-21 10:33:03 +09:00
2026-05-19 19:22:06 +00:00
2026-05-13 10:29:50 +02:00
2026-05-19 19:22:06 +00:00
2026-04-22 17:41:42 +02:00
2026-05-19 19:22:06 +00:00
2026-04-22 17:41:42 +02:00
2026-05-30 00:20:00 +02:00
2026-04-22 17:41:42 +02:00
2026-05-19 19:22:06 +00:00
2026-04-22 17:41:42 +02:00
2026-03-31 18:30:40 +02:00
2026-05-20 16:38:19 +02:00
2026-05-20 16:38:19 +02:00
2026-05-21 18:02:05 +02:00
2026-02-23 10:43:00 +01:00
2026-05-18 02:55:56 +09:00
2026-05-18 10:39:04 +01:00
2026-05-15 13:46:08 +01:00
2026-04-12 15:27:15 +02:00
2026-05-24 21:18:58 +02:00
2026-04-15 10:14:48 +02:00
2026-05-06 10:30:16 +02:00
2026-05-06 10:30:16 +02:00
2026-05-21 19:41:37 +01:00
2026-05-12 22:56:04 +02:00
2026-05-12 22:56:04 +02:00
2026-05-19 19:22:06 +00:00
2026-04-23 06:41:05 +02:00
2026-05-21 10:33:03 +09:00
2026-05-21 10:33:03 +09:00
2026-04-12 15:27:15 +02:00
2026-05-19 19:22:06 +00:00
2026-04-22 17:41:42 +02:00
2026-05-21 10:33:03 +09:00
2026-05-21 10:33:03 +09:00
2026-04-10 15:08:03 +02:00
2026-04-20 23:35:31 +02:00
2026-02-20 16:22:00 +09:00
2026-05-19 14:39:20 +02:00
2026-05-19 14:39:20 +02:00
2026-05-18 02:55:56 +09:00
2026-03-31 18:30:40 +02:00
2026-04-27 22:14:05 +09:00
2026-05-06 10:30:13 +02:00
2026-05-20 11:39:11 +02:00
2026-05-20 11:39:11 +02:00
2026-05-15 18:47:17 +02:00
2026-05-24 20:36:56 +02:00
2026-05-16 09:38:25 +09:00
2026-05-19 19:22:06 +00:00
2026-05-18 21:17:38 +00:00
2026-05-16 18:37:12 +02:00
2026-02-20 21:20:45 +01:00
2026-04-14 15:51:02 +02:00
2026-04-13 11:14:11 +02:00
2026-05-19 19:22:06 +00:00
2026-04-22 17:41:42 +02:00
2026-05-19 19:22:06 +00:00
2026-04-22 17:41:42 +02:00
2026-05-19 19:22:06 +00:00
2026-04-22 17:41:42 +02:00
2026-05-22 12:15:12 +02:00
2026-05-22 12:15:12 +02:00
2026-05-29 04:30:48 +09:00
2026-04-24 06:32:42 +02:00
2026-04-24 06:32:42 +02:00
2026-02-17 22:00:14 +01:00
2026-05-22 14:09:16 +01:00
2026-05-22 14:09:16 +01:00
2026-05-22 14:09:16 +01:00
2026-02-03 13:21:03 +01:00
2026-02-03 13:21:03 +01:00
2026-02-16 14:32:38 +01:00
2026-02-05 14:14:38 +01:00
2026-01-21 15:09:46 +01:00
2026-05-20 16:32:22 +02:00
2026-05-20 16:34:21 +02:00
2026-05-20 16:34:21 +02:00
2026-05-20 18:04:13 +02:00
2026-04-02 15:12:52 +02:00
2026-05-21 09:55:04 +00:00
2026-05-21 09:55:04 +00:00
2026-05-19 19:22:06 +00:00
2026-04-22 17:41:42 +02:00
2026-04-13 11:13:04 +02:00
2026-04-13 11:13:04 +02:00
2026-05-13 23:47:29 +01:00
2026-05-21 10:33:03 +09:00
2026-04-13 13:20:43 +02:00
2026-05-29 01:09:19 +09:00
2026-04-22 17:41:42 +02:00
2026-05-21 10:33:03 +09:00
2026-04-22 17:41:42 +02:00
2026-05-05 13:49:51 +02:00
2026-05-08 16:52:57 +02:00
2026-04-22 17:41:42 +02:00
2026-05-21 10:33:03 +09:00
2026-04-12 15:27:15 +02:00
2026-02-09 09:05:44 +01:00
2026-03-31 18:25:09 +02:00
2026-03-31 18:25:09 +02:00
2026-05-21 10:33:03 +09:00
2026-04-13 13:59:24 +02:00
2026-04-10 15:08:02 +02:00
2026-05-05 17:22:26 +02:00
2026-05-19 19:22:06 +00:00
2026-04-24 06:32:42 +02:00
2026-05-06 10:30:16 +02:00
2026-05-21 10:33:03 +09:00
2026-05-21 10:33:03 +09:00
2026-04-05 20:34:11 +02:00
2026-03-24 14:42:39 +01:00
2026-04-23 19:10:15 +02:00
2026-02-19 15:05:15 +01:00
2026-04-29 12:03:21 +02:00
2026-05-16 18:32:14 +02:00
2026-05-24 20:36:56 +02:00
2026-05-21 10:33:03 +09:00
2026-05-21 10:33:03 +09:00
2026-05-22 12:15:12 +02:00
2026-05-22 12:15:12 +02:00
2026-04-12 15:27:15 +02:00
2026-03-18 17:33:22 -04:00
2026-05-22 14:09:16 +01:00
2026-05-22 14:09:16 +01:00
2026-03-30 09:37:32 +01:00
2026-05-15 00:02:01 -07:00
2026-05-15 00:02:01 -07:00
2026-02-27 08:49:21 +01:00
2026-05-05 15:09:47 +02:00
2026-03-04 14:32:16 +01:00
2026-02-27 04:09:15 +01:00
2026-05-05 17:22:26 +02:00
2026-03-26 10:54:15 +01:00
2026-03-26 10:54:15 +01:00
2026-05-19 11:05:55 +02:00
2026-04-27 13:49:19 +02:00
2026-02-23 10:43:00 +01:00
2026-02-21 13:02:38 +01:00
2026-05-26 17:52:07 +09:00
2026-05-22 02:56:24 +00:00
2026-04-24 14:39:25 +02:00
2026-04-14 02:10:52 -07:00
2026-03-04 14:32:16 +01:00
2026-05-12 22:54:08 +02:00
2026-04-15 10:14:47 +02:00
2026-04-14 02:10:52 -07:00
2026-05-11 03:03:32 -07:00
2026-05-11 03:03:32 -07:00
2026-03-04 14:32:16 +01:00
2026-02-02 08:03:48 -08:00
2026-01-21 23:12:47 +01:00
2026-03-04 14:32:16 +01:00
2026-02-24 18:29:37 +01:00
2026-03-18 22:55:52 +00:00
2026-03-18 22:55:52 +00:00
2026-03-19 11:50:45 +00:00
2026-02-24 23:56:20 +09:00
2026-05-18 21:42:56 +02:00
2026-02-09 02:05:57 +01:00
2026-02-09 02:05:57 +01:00
2026-03-26 10:54:15 +01:00
2026-06-01 11:26:15 +02:00
2026-03-02 13:22:14 +09:00
2026-02-24 23:59:08 +09:00
2026-04-07 21:01:21 +02:00
2026-04-07 20:38:40 +02:00
2026-04-29 12:25:46 +02:00
2026-04-29 12:25:46 +02:00
2026-02-27 08:49:54 +01:00
2026-02-27 08:49:54 +01:00
2026-02-27 08:49:21 +01:00
2026-05-21 10:14:08 +01:00
2026-05-15 00:02:01 -07:00
2026-04-15 10:14:47 +02:00
2026-04-15 10:14:47 +02:00
2026-02-16 09:44:58 +01:00
2026-02-16 09:44:58 +01:00
2026-05-20 16:34:21 +02:00
2026-05-20 16:34:21 +02:00
2026-05-16 18:37:12 +02:00
2026-05-24 20:36:56 +02:00
2026-03-31 18:30:40 +02:00
2026-05-21 17:42:29 +09:00
2026-04-12 15:27:15 +02:00
2026-05-28 13:33:08 +01:00
2026-02-19 15:05:15 +01:00
2026-04-13 13:59:24 +02:00
2026-04-16 21:12:20 +02:00
2026-04-16 21:12:20 +02:00