Re: isolate_lru_page on !head pages

From: Vlastimil Babka
Date: Tue Dec 22 2015 - 10:47:49 EST


On 12/15/2015 05:59 PM, Michal Hocko wrote:

head page is what linked into LRU, but not nessesary the way we obtain the
page to check. If we check PageLRU(pte_page(*pte)) it should produce the
right result.

I am not following you here. Any pfn walk could get to a tail page and
if we happen to do e.g. isolate_lru_page we have to remember that we
should always treat compound page differently. This is subtle.

I think the problem is that isolate_lru_page() is not the only reason for calling PageLRU(). And the other use cases have different expectations, to either way (PF_ANY or PF_HEAD) you pick for PageLRU(), somebody will have to be careful. IMHO usually it's pfn scanners who have to be careful for many reasons...

Anyway I
am far from understading other parts of the refcount rework so I will
spend time studying the code as soon as the time permits. In the
meantime I agree that VM_BUG_ON_PAGE(PageTail(page), page) would be
useful to catch all the fallouts.

+1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/