Re: [PATCH v1 06/11] mm: support GUP-triggered unsharing via FAULT_FLAG_UNSHARE (!hugetlb)

From: Matthew Wilcox
Date: Sun Dec 19 2021 - 17:02:14 EST


On Sun, Dec 19, 2021 at 01:53:36PM -0800, Linus Torvalds wrote:
> On Sun, Dec 19, 2021 at 1:48 PM Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote:
> >
> > Yes, agreed, I was thinking that we could use "not mapped at all"
> > as an optimisation to avoid doing rmap walks. eg __unmap_and_move().
>
> So the thing is, it's a very dodgy optimization for a rather simple
> reason: what if somebody pages the page in?
>
> So even "not mapped at all" is questionable.
>
> You have to check that it's also not a swapcache page, and hold the
> page lock for that check, at the very least.
>
> And by then, you're really in a very unusual situation - and my gut
> feel says not one worth optimizing for (because anon pages are
> _usually_ mapped at least once).

I'd like to get rid of ->mapcount for file pages too. And those are
definitely never mapped in the majority of cases.