David Hildenbrand <david@xxxxxxxxxx> writes: > On 03.06.24 19:01, Matthew Wilcox wrote: >> 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. > > I'm curious when to set that, though. > > While migrating/reclaiming, when unmapping the folio from the page > tables, the folio is still valid in the page cache. So at the point in > time of unmapping from one process, we cannot simply replace the folio > in the page cache by some other value -- I think. > > Maybe it's all easier than I think. IIUC, we need to held folio lock before replacing the folio in the page cache. In page_cache_delete(), folio_test_locked() is checked. And, we will lock the folio before writing to it via write syscall. So, it's safe to defer TLB flushing until we unlock the folio. -- Best Regards, Huang, Ying