Re: [PATCH v11 09/12] mm: implement LUF(Lazy Unmap Flush) defering tlb flush when folios get unmapped

From: Matthew Wilcox
Date: Mon Jun 03 2024 - 13:01:45 EST


On Mon, Jun 03, 2024 at 09:37:46AM -0700, Dave Hansen wrote:
> Yeah, we'd need some equivalent of a PTE marker, but for the page cache.
> Presumably some xa_value() that means a reader has to go do a
> luf_flush() before going any farther.

I can allocate one for that. We've got something like 1000 currently
unused values which can't be mistaken for anything else.

> That would actually have a chance at fixing two issues: One where a new
> page cache insertion is attempted. The other where someone goes to look
> in the page cache and takes some action _because_ it is empty (I think
> NFS is doing some of this for file locks).
>
> LUF is also pretty fundamentally built on the idea that files can't
> change without LUF being aware. That model seems to work decently for
> normal old filesystems on normal old local block devices. I'm worried
> about NFS, and I don't know how seriously folks take FUSE, but it
> obviously can't work well for FUSE.

I'm more concerned with:

- page goes back to buddy
- page is allocated to slab
- application reads through stale TLB entry and sees kernel memory

Or did that scenario get resolved?