| .. SPDX-License-Identifier: GPL-2.0 | |
| ================ | |
| Live Update uAPI | |
| ================ | |
| :Author: Pasha Tatashin <pasha.tatashin@soleen.com> | |
| ioctl interface | |
| =============== | |
| .. kernel-doc:: kernel/liveupdate/luo_core.c | |
| :doc: LUO ioctl Interface | |
| ioctl uAPI | |
| =========== | |
| .. kernel-doc:: include/uapi/linux/liveupdate.h | |
| Note on Compatibility | |
| ===================== | |
| Note that the Live Update feature is still under development and subject to | |
| change, so compatibility is not guaranteed when kexec rebooting between | |
| different kernel versions. This is expected to change and stabilize in a future | |
| version. | |
| Userspace Integration | |
| ===================== | |
| systemd (since version v261) uses LUO to preserve its per-service file | |
| descriptor store across a kexec-based live update. Services opt in by setting | |
| ``FileDescriptorStoreMax=`` and ``FileDescriptorStorePreserve=`` in their unit, | |
| and push file descriptors with a name into the store via | |
| ``sd_pid_notify_with_fds(... "FDSTORE=1\nFDNAME=foo")``. | |
| Services may also create their own LUO sessions (via ``/dev/liveupdate``) and | |
| push the resulting session fds into their file descriptor store like any other | |
| fd. systemd detects such session fds and handles them accordingly, and | |
| hands the re-retrieved session fd back to the service after kexec, using the | |
| existing file descriptor store service interface. | |
| For details, see: | |
| - `File Descriptor Store <https://systemd.io/FILE_DESCRIPTOR_STORE/>`_ | |
| - `systemd.service(5) FileDescriptorStorePreserve= | |
| <https://www.freedesktop.org/software/systemd/man/latest/systemd.service.html#FileDescriptorStorePreserve=>`_ | |
| - `sd_pid_notify_with_fds(3) | |
| <https://www.freedesktop.org/software/systemd/man/latest/sd_pid_notify_with_fds.html>`_ | |
| See Also | |
| ======== | |
| - :doc:`Live Update Orchestrator </core-api/liveupdate>` |