Re: [PATCH v6 2/2] mm: support large folios swap-in for zRAM-like devices
From: Matthew Wilcox
Date: Fri Aug 16 2024 - 17:17:29 EST
On Fri, Aug 16, 2024 at 11:06:12AM +1200, Barry Song wrote:
> When memcg approaches its limit, charging mTHP becomes difficult.
> At this point, when the charge fails, we fallback to the next order
> to avoid repeatedly retrying larger orders.
Why do you always find the ugliest possible solution to a problem?
> @@ -4244,7 +4248,7 @@ vm_fault_t do_swap_page(struct vm_fault *vmf)
> }
> need_clear_cache = true;
>
> - if (mem_cgroup_swapin_charge_folio(folio,
> + if (nr_pages == 1 && mem_cgroup_swapin_charge_folio(folio,
> vma->vm_mm, GFP_KERNEL,
> entry)) {
> ret = VM_FAULT_OOM;
Just make alloc_swap_folio() always charge the folio, even for order-0.
And you'll have to uncharge it in the swapcache_prepare() failure case.