On Fri, Jun 13, 2025 at 11:18 AM Pratyush Yadav <pratyush@xxxxxxxxxx> wrote: > > On Sun, Jun 08 2025, Pasha Tatashin wrote: > > > On Thu, Jun 5, 2025 at 12:04 PM Pratyush Yadav <pratyush@xxxxxxxxxx> wrote: > >> > >> On Thu, May 15 2025, Pasha Tatashin wrote: > >> > >> > Implements the core logic within luo_files.c to invoke the prepare, > >> > reboot, finish, and cancel callbacks for preserved file instances, > >> > replacing the previous stub implementations. It also handles > >> > the persistence and retrieval of the u64 data payload associated with > >> > each file via the LUO FDT. > >> > > >> > This completes the core mechanism enabling registered filesystem > >> > handlers to actively manage file state across the live update > >> > transition using the LUO framework. > >> > > >> > Signed-off-by: Pasha Tatashin <pasha.tatashin@xxxxxxxxxx> > >> > --- > >> > drivers/misc/liveupdate/luo_files.c | 105 +++++++++++++++++++++++++++- > >> > 1 file changed, 103 insertions(+), 2 deletions(-) > >> > > >> [...] > >> > @@ -305,7 +369,29 @@ int luo_do_files_prepare_calls(void) > >> > */ > >> > int luo_do_files_freeze_calls(void) > >> > { > >> > - return 0; > >> > + unsigned long token; > >> > + struct luo_file *h; > >> > + int ret; > >> > + > >> > + xa_for_each(&luo_files_xa_out, token, h) { > >> > >> Should we also ensure at this point that there are no open handles to > >> this file? How else would a file system ensure the file is in quiescent > >> state to do its final serialization? > > > > Do you mean check refcnt here? If so, this is a good idea, but first > > we need to implement the lifecycle of liveupdate agent correctectly, > > where owner of FD must survive through entering into reboot() with > > /dev/liveupdate still open. > > Yes, by this point we should ensure refcnt == 1. IIUC you plan to > implement the lifecycle change in the next revision, so this can be > added there as well I suppose. Yes, I am working on that. Current, WIP patch looks like this: https://github.com/soleen/linux/commit/fecf912d8b70acd23d24185a8c0504764e43a279 However, I am not sure about refcnt == 1 at freeze() time. We can have programs, that never terminated while we were still in userspace (i.e. kexec -e -> reboot() -> freeze()), in that case refcnt can be anything at the time of freeze, no? Pasha > > [...] > > -- > Regards, > Pratyush Yadav