Re: [PATCH v2 1/4] mm: Introduce vm_uffd_ops API
From: Liam R. Howlett
Date: Wed Sep 17 2025 - 12:54:18 EST
* Mike Rapoport <rppt@xxxxxxxxxx> [250917 05:26]:
> Hi Liam,
>
> On Mon, Sep 08, 2025 at 12:53:37PM -0400, Liam R. Howlett wrote:
> >
> > Reading through the patches, I'm not entirely sure what you are
> > proposing.
> >
> > What I was hoping to see by a generalization of the memory types is a
> > much simpler shared code base until the code hit memory type specific
> > areas where a function pointer could be used to keep things from getting
> > complicated (or, I guess a switch statement..).
> >
> > What we don't want is non-mm code specifying values for the function
> > pointer and doing what they want, or a function pointer that returns a
> > core mm resource (in the old example this was a vma, here it is a
> > folio).
> >
> > From this patch set:
> > + * Return: zero if succeeded, negative for errors.
> > + */
> > + int (*uffd_get_folio)(struct inode *inode, pgoff_t pgoff,
> > + struct folio **folio);
> >
> > This is one of the contention points in the current scenario as the
> > folio would be returned.
>
> I don't see a problem with it. It's not any different from
> vma_ops->fault(): a callback for a filesystem to get a folio that will be
> mapped afterwards by the mm code.
>
I disagree, the filesystem vma_ops->fault() is not a config option like
this one. So we are on a path to enable uffd by default, and it really
needs work beyond this series. Setting up a list head and passing in
through every call stack is far from idea.
I also think the filesystem model is not one we want to duplicate in mm
for memory types - think of the test issues we have now and then have a
look at the xfstests support of filesystems [1].
So we are on a path of less test coverage, and more code that is
actually about mm that is outside of mm. So, is there another way?
Cheers,
Liam
[1]. https://github.com/kdave/xfstests/blob/master/README#L37