[PATCH v4 00/13] liveupdate: Remove limits on sessions and files
Pasha Tatashin
pasha.tatashin at soleen.com
Sat May 30 15:19:25 PDT 2026
Hi all,
This series removes the fixed limits on the number of files that can
be preserved within a single session, and the total number of sessions
managed by the Live Update Orchestrator (LUO).
The core of the change is a transition from single contiguous memory
blocks for metadata serialization to a chain of linked blocks. This
allows LUO to scale dynamically.
1. ABI Evolution:
- Introduced linked-block headers for both file and session
serialization.
- Bumped session ABI version to v4.
2. Memory Management & Security:
- Implemented a dynamic block allocation and reuse strategy. Blocks
are allocated only when existing ones are exhausted and are reused
during session/file removal cycles.
- Introduced KHO_MAX_BLOCKS (10000) as a safeguard against stupid
excessive allocations or corrupted cyclic lists during restore.
3. Expanded Selftests:
- Added new kexec-based tests verifying preservation of
2000 sessions and 500 files per session.
- Added self-tests for many sessions and many files management.
Tree: git.kernel.org/pub/scm/linux/kernel/git/tatashin/linux.git
Branch: luo-remove-max-files-sessions-limits/v4
Changes v4:
- Addressed comments from Sashiko:
- Enforced file count mismatches during deserialization as a hard
failure.
- Reset bs->head_pa to 0 in kho_block_restore() on cyclic block
detection.
- Added two small fixes to pre-existing problems at the beginning of
the series:
- "liveupdate: change file_set->count type to u64 for type safety"
- "liveupdate: avoid mixing cleanup guards with goto in
luo_session_retrieve_fd"
Changes v3:
- Moved the linked-block serialization infrastructure from
LUO-specific (luo_block.c) to generic KHO helper infrastructure
(kho_block.c, include/linux/kho_block.h,
include/linux/kho/abi/block.h).
- Registered luo_ser directly as a raw KHO subtree instead of
wrapping it inside FDT.
- Collected Acked-by tags from Mike Rapoport.
Please review.
Thanks,
Pasha
Pasha Tatashin (13):
liveupdate: change file_set->count type to u64 for type safety
liveupdate: avoid mixing cleanup guards with goto in
luo_session_retrieve_fd
liveupdate: centralize state management into struct luo_ser
liveupdate: register luo_ser as KHO subtree
liveupdate: Extract luo_file_deserialize_one helper
liveupdate: Extract luo_session_deserialize_one helper
kho: add support for linked-block serialization
liveupdate: defer session block allocation and PA setting
liveupdate: Remove limit on the number of sessions
liveupdate: Remove limit on the number of files per session
selftests/liveupdate: Test session and file limit removal
selftests/liveupdate: Add stress-sessions kexec test
selftests/liveupdate: Add stress-files kexec test
Documentation/core-api/kho/abi.rst | 5 +
Documentation/core-api/kho/index.rst | 11 +
MAINTAINERS | 1 +
include/linux/kho/abi/block.h | 56 +++
include/linux/kho/abi/luo.h | 149 ++-----
include/linux/kho_block.h | 79 ++++
kernel/liveupdate/Makefile | 1 +
kernel/liveupdate/kho_block.c | 384 ++++++++++++++++++
kernel/liveupdate/luo_core.c | 99 ++---
kernel/liveupdate/luo_file.c | 211 +++++-----
kernel/liveupdate/luo_flb.c | 65 +--
kernel/liveupdate/luo_internal.h | 16 +-
kernel/liveupdate/luo_session.c | 242 +++++------
tools/testing/selftests/liveupdate/Makefile | 2 +
.../testing/selftests/liveupdate/liveupdate.c | 75 ++++
.../selftests/liveupdate/luo_stress_files.c | 97 +++++
.../liveupdate/luo_stress_sessions.c | 102 +++++
.../selftests/liveupdate/luo_test_utils.c | 24 ++
.../selftests/liveupdate/luo_test_utils.h | 2 +
19 files changed, 1161 insertions(+), 460 deletions(-)
create mode 100644 include/linux/kho/abi/block.h
create mode 100644 include/linux/kho_block.h
create mode 100644 kernel/liveupdate/kho_block.c
create mode 100644 tools/testing/selftests/liveupdate/luo_stress_files.c
create mode 100644 tools/testing/selftests/liveupdate/luo_stress_sessions.c
base-commit: 5428435567cbe06c19914592fc22ca23c9ca1de5
--
2.53.0
More information about the kexec
mailing list