17 lines
1.4 KiB
Markdown
17 lines
1.4 KiB
Markdown
# nh3-svos application-consistent backup hook (svos-dev, vendored 2026-10-05)
|
|
|
|
- `50-svos` → installed as `/etc/qemu/fsfreeze-hook.d/50-svos` (root 0755) on nh3-svos. Authored by svos-dev
|
|
(SHA256 `f94cbba36fc410db2334a7c1fd552ffef60f16831f4e03501c53a4785970b556`, identical to the installed copy). On
|
|
freeze it records which SVOS services are active (root-private `/run/svos-backup/state.json`), stops them, and
|
|
requires `inactive` + `Result=success` within 35 s. On failure it queues a restart and keeps the record. On thaw
|
|
it restarts only those services, within 15 s, and keeps the record if a restart fails.
|
|
- `test_quiesce.py`: the hook's six failure/recovery controls (`python3 -m unittest test_quiesce` from this
|
|
directory; the loader points at `50-svos` beside it).
|
|
- Runs under `../fsfreeze-dispatch`, which qemu-ga calls via `/etc/qemu/qemu-ga.conf`. Without that config,
|
|
Debian's qemu-ga runs no hooks at all.
|
|
- If the voice service is ever enabled, add it to `SERVICES` before enabling it (svos-dev).
|
|
- 2026-10-07 (a737a06 refresh): `SERVICES` gained `svos-terminal`, `svos-knowledge` and `svos-postoffice` before
|
|
they were started. The hook restores only the units that were active at freeze, so a declared-but-stopped app
|
|
(postoffice until its bridge handle exists) is recorded as inactive and left stopped.
|
|
- 2026-10-08: `svos-voice` added (Prime: voice on), before it started.
|