On Mon, 9 Dec 2024 08:36:17 +0000 Chen Ridong <chenridong@xxxxxxxxxxxxxxx> wrote: > The commit 359a5e1416ca ("mm: multi-gen LRU: retry folios written back > while isolated") only fixed the issue for mglru. However, this issue > also exists in the traditional active/inactive LRU. Fix this issue > in the same way for active/inactive lru. > > What is fixed: > The page reclaim isolates a batch of folios from the tail of one of the > LRU lists and works on those folios one by one. For a suitable > swap-backed folio, if the swap device is async, it queues that folio for > writeback. After the page reclaim finishes an entire batch, it puts back > the folios it queued for writeback to the head of the original LRU list. > > In the meantime, the page writeback flushes the queued folios also by > batches. Its batching logic is independent from that of the page reclaim. > For each of the folios it writes back, the page writeback calls > folio_rotate_reclaimable() which tries to rotate a folio to the tail. > > folio_rotate_reclaimable() only works for a folio after the page reclaim > has put it back. If an async swap device is fast enough, the page > writeback can finish with that folio while the page reclaim is still > working on the rest of the batch containing it. In this case, that folio > will remain at the head and the page reclaim will not retry it before > reaching there. For a single patch series I think it's best to just make it a single patch! No need for a [0/n]: just put all the info into the patch's changelog. The patch doesn't apply to current development kernels. Please check the mm-unstable branch of https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git/, or linux-next. Please replace vmascan with vmscan in the title.