From: David Matlack <dmatlack@google.com>
To: Pasha Tatashin <pasha.tatashin@soleen.com>
Cc: Tarun Sahu <tarunsahu@google.com>,
Andrew Morton <akpm@linux-foundation.org>,
joro@8bytes.org, Mike Rapoport <rppt@kernel.org>,
Pratyush Yadav <pratyush@kernel.org>,
maz@kernel.org, arnd@arndb.de, jgg@nvidia.com,
robin.murphy@arm.com, loganodell@google.com, oupton@kernel.org,
kevin.tian@intel.com, alex@shazbot.org, dwmw2@infradead.org,
pbonzini@redhat.com, seanjc@google.com, will@kernel.org,
Alexander Graf <graf@amazon.com>,
Bjorn Helgaas <bhelgaas@google.com>,
baolu.lu@linux.intel.com, linux-arm-kernel@lists.infradead.org,
linux-arch@vger.kernel.org, sagis@google.com, linux-mm@kvack.org,
kvmarm@lists.linux.dev, iommu@lists.linux.dev,
linux-pci@vger.kernel.org, kexec@lists.infradead.org,
skhawaja@google.com, kvm@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [RFC PATCH v2 2/4] liveupdate: Select file handler by name in the preserve ioctl
Date: Thu, 22 Oct 2026 17:57:15 +0000 [thread overview]
Message-ID: <atpOe-blcgW-uDd4@google.com> (raw)
In-Reply-To: <CA+CK2bAxgtx2gZ-UE2HqwAU8=h9K5RE3xozBs1njgLo1-CaPvA@mail.gmail.com>
On 2026-10-21 09:14 PM, Pasha Tatashin wrote:
> On Wed, Oct 21, 2026 at 7:02 PM David Matlack <dmatlack@google.com> wrote:
> >
> > On 2026-10-21 01:17 PM, Pasha Tatashin wrote:
> > > On Wed, Oct 21, 2026 at 11:25 AM Tarun Sahu <tarunsahu@google.com> wrote:
> > > >
> > > > Currently luo_preserve_file() iterates over luo_file_handler_list and
> > > > picks the first registered handler whose .can_preserve() callback
> > > > returns true. When a subsystem introduces a new, backwards-incompatible
> > > > file handler alongside an existing one for the same file type, userspace
> > > > has no way to choose which handler preserves a file descriptor, nor can
> > > > the kernel keep the existing rollback-safe handler as the default while
> > > > allowing callers to opt into the new handler.
> > >
> > > That is not how it will work. If we are in the .can_preserve() call,
> > > it means the user has already decided which file handlers to use. We
> > > need to do that before any preservation happens; otherwise, we could
> > > run into conflicts on FLBs i.e. FH of different version require
> > > different FLBs.
> > >
> > > Therefore, there should be a luoctl call (i.e via a new ioctl to set
> > > compatability) that provides the kernel with the specs file of the
> > > target kernel we are updating to, allowing the kernel to select the
> > > compatible file handlers. Since .can_preserve() is called when the
> > > user is already preserving files, the specification must have already
> > > been supplied, or the kernel should fall back to using the default
> > > (i.e., latest) file handlers.
> >
> > I don't think that is the right direction. IMO the kernel should not be
> > choosing which file handler to use, userspace should be. If userspace
> > gets it wrong and chooses a file handler the next kernel does not
> > support, that's on them.
> >
> > The problem with the kernel making a decision about file handlers is
> > then userspace does not know what arguments to pass in. We are adding
> > custom per-file handler arguments to PRESERVE_FD and RETRIEVE_FD. If the
> > kernel is picking which file handler to use, say for a memfd, then
> > userspace doesn't know which arguments to pass in.
>
> It is not the kernel deciding on its own which handler to use; it is
> the system admin (or host orchestrator) that configures LUO before the
> LU process starts, because the sysadmin knows what kernel we are
> rebooting into and the LUO specs of that target kernel. Meanwhile, the
> process calling PRESERVE_FD (e.g., a VMM) only knows about its own FDs
> and should not have to track target kernel serialization versions.
>
> Also, the PRESERVE_FD and RETRIEVE_FD arguments are uABI tied to the
> FD type, not to a specific internal handler version. They are stable,
> and we can expand them the same way any ioctl argument is expanded
> (via size and flags), without ever shrinking or breaking them. We
> should not play the game of providing completely different uABI
> argument structs for different versions of a file handler. If a caller
> passes a new feature in the uABI args that the currently configured
> file handler version does not support, PRESERVE_FD simply returns
> -EOPNOTSUPP, just like any other extensible ioctl.
If we require that PRESERVE_FD and RETRIEVE_FD uAPI is stable across
different file handlers for the same file type, then my concern is
resolved.
> More generally, we are rebooting the host into a single target kernel,
> so compatibility is a session-level property, not a per-FD property.
> If we need an upfront global ioctl anyway, configuring the target
> compatibility upfront in one place is much cleaner than exposing FLBs
> to userspace and splitting version selection between a global ioctl
> and per-FD PRESERVE_FD calls.
That's a good point. Ok let's not do per-FD FH selection.
next prev parent reply other threads:[~2026-10-22 17:57 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-21 15:25 [RFC PATCH v2 0/4] liveupdate: Feature header ABI and named handler Tarun Sahu
2026-10-21 15:25 ` [RFC PATCH v2 1/4] liveupdate: Rename handler compatible to name Tarun Sahu
2026-10-21 17:11 ` Pasha Tatashin
2026-10-21 18:16 ` tarunsahu
2026-10-21 19:11 ` Pasha Tatashin
2026-10-21 19:35 ` tarunsahu
2026-10-23 7:44 ` Mike Rapoport
2026-10-23 21:51 ` tarunsahu
2026-10-22 15:26 ` sashiko-bot
2026-10-21 15:25 ` [RFC PATCH v2 2/4] liveupdate: Select file handler by name in the preserve ioctl Tarun Sahu
2026-10-21 17:17 ` Pasha Tatashin
2026-10-21 23:02 ` David Matlack
2026-10-22 1:14 ` Pasha Tatashin
2026-10-22 17:57 ` David Matlack [this message]
2026-10-22 12:50 ` tarunsahu
2026-10-22 13:42 ` Pasha Tatashin
2026-10-22 15:26 ` sashiko-bot
2026-10-21 15:25 ` [RFC PATCH v2 3/4] liveupdate: Replace compatibility string with a 2-bit pair feature header Tarun Sahu
2026-10-21 17:27 ` Pasha Tatashin
2026-10-21 17:40 ` Jason Gunthorpe
2026-10-21 17:55 ` Pasha Tatashin
2026-10-21 18:40 ` tarunsahu
2026-10-21 18:46 ` David Matlack
2026-10-21 18:50 ` Pasha Tatashin
2026-10-21 23:28 ` David Matlack
2026-10-22 1:26 ` Pasha Tatashin
2026-10-22 2:57 ` David Matlack
2026-10-22 3:32 ` Pasha Tatashin
2026-10-22 3:52 ` David Matlack
2026-10-22 4:11 ` Pasha Tatashin
2026-10-22 17:51 ` David Matlack
2026-10-22 20:53 ` Pasha Tatashin
2026-10-23 13:50 ` David Matlack
2026-10-25 20:38 ` Pasha Tatashin
2026-10-26 20:49 ` David Matlack
2026-10-27 16:21 ` Pasha Tatashin
2026-10-27 17:33 ` David Matlack
2026-10-28 17:17 ` Pratyush Yadav
2026-10-28 17:24 ` David Matlack
2026-10-28 17:47 ` Pasha Tatashin
2026-10-28 17:44 ` Pasha Tatashin
2026-10-21 23:55 ` David Matlack
2026-10-22 0:04 ` David Matlack
2026-10-26 11:50 ` tarunsahu
2026-10-26 21:14 ` David Matlack
2026-10-26 23:28 ` tarunsahu
2026-10-27 0:01 ` David Matlack
2026-10-27 0:55 ` Tarun Sahu
2026-10-27 3:26 ` David Matlack
2026-10-27 16:40 ` Pasha Tatashin
2026-10-27 17:37 ` David Matlack
2026-10-27 21:57 ` tarunsahu
2026-10-22 15:26 ` sashiko-bot
2026-10-21 15:25 ` [RFC PATCH v2 4/4] mm: memfd_luo: Add the " Tarun Sahu
2026-10-21 17:38 ` Pasha Tatashin
2026-10-21 23:18 ` David Matlack
2026-10-22 0:41 ` Pasha Tatashin
2026-10-22 2:51 ` David Matlack
2026-10-22 3:50 ` Pasha Tatashin
2026-10-22 15:26 ` sashiko-bot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=atpOe-blcgW-uDd4@google.com \
--to=dmatlack@google.com \
--cc=akpm@linux-foundation.org \
--cc=alex@shazbot.org \
--cc=arnd@arndb.de \
--cc=baolu.lu@linux.intel.com \
--cc=bhelgaas@google.com \
--cc=dwmw2@infradead.org \
--cc=graf@amazon.com \
--cc=iommu@lists.linux.dev \
--cc=jgg@nvidia.com \
--cc=joro@8bytes.org \
--cc=kevin.tian@intel.com \
--cc=kexec@lists.infradead.org \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.linux.dev \
--cc=linux-arch@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-pci@vger.kernel.org \
--cc=loganodell@google.com \
--cc=maz@kernel.org \
--cc=oupton@kernel.org \
--cc=pasha.tatashin@soleen.com \
--cc=pbonzini@redhat.com \
--cc=pratyush@kernel.org \
--cc=robin.murphy@arm.com \
--cc=rppt@kernel.org \
--cc=sagis@google.com \
--cc=seanjc@google.com \
--cc=skhawaja@google.com \
--cc=tarunsahu@google.com \
--cc=will@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.