Re: [PATCH v4 00/30] Live Update Orchestrator
From: Jason Gunthorpe <jgg@nvidia.com>
Date: 2025-10-07 17:50:48
Also in:
linux-doc, linux-fsdevel, linux-mm, lkml
On Tue, Oct 07, 2025 at 01:10:30PM -0400, Pasha Tatashin wrote:
1. Add three more callbacks to liveupdate_file_ops:
/*
* Optional. Called by LUO during first get global state call.
* The handler should allocate/KHO preserve its global state object and return a
* pointer to it via 'obj'. It must also provide a u64 handle (e.g., a physical
* address of preserved memory) via 'data_handle' that LUO will save.
* Return: 0 on success.
*/
int (*global_state_create)(struct liveupdate_file_handler *h,
void **obj, u64 *data_handle);
/*
* Optional. Called by LUO in the new kernel
* before the first access to the global state. The handler receives
* the preserved u64 data_handle and should use it to reconstruct its
* global state object, returning a pointer to it via 'obj'.
* Return: 0 on success.
*/
int (*global_state_restore)(struct liveupdate_file_handler *h,
u64 data_handle, void **obj);It shouldn't be a "push" like this. Everything has a certain logical point when it will need the luo data, it should be coded to 'pull' the data right at that point.
/* * Optional. Called by LUO after the last * file for this handler is unpreserved or finished. The handler * must free its global state object and any associated resources. */ void (*global_state_destroy)(struct liveupdate_file_handler *h, void *obj);
I'm not sure a callback here is a good idea, the users are synchronous at early boot, they should get their data and immediately process it within the context of the caller. A 'unpack' callback does not seem so useful to me.
The get/put global state data:
/* Get and lock the data with file_handler scoped lock */
int liveupdate_fh_global_state_get(struct liveupdate_file_handler *h,
void **obj);
/* Unlock the data */
void liveupdate_fh_global_state_put(struct liveupdate_file_handler *h);Maybe lock/unlock if it is locking. It seems like a good direction overall. Really need to see how it works with some examples Jason