[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Wed, 9 Oct 2019 17:18:04 -0700
From: Linus Torvalds <torvalds@...ux-foundation.org>
To: Thomas Hellström (VMware)
<thomas_os@...pmail.org>
Cc: Thomas Hellstrom <thellstrom@...are.com>,
"Kirill A. Shutemov" <kirill@...temov.name>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
Linux-MM <linux-mm@...ck.org>,
Matthew Wilcox <willy@...radead.org>,
Will Deacon <will.deacon@....com>,
Peter Zijlstra <peterz@...radead.org>,
Rik van Riel <riel@...riel.com>,
Minchan Kim <minchan@...nel.org>,
Michal Hocko <mhocko@...e.com>,
Huang Ying <ying.huang@...el.com>,
Jérôme Glisse <jglisse@...hat.com>
Subject: Re: [PATCH v4 3/9] mm: pagewalk: Don't split transhuge pmds when a
pmd_entry is present
On Wed, Oct 9, 2019 at 4:51 PM Linus Torvalds
<torvalds@...ux-foundation.org> wrote:
>
> (a) right now nobody wants the "skip" behavior. You think you'll
> eventually want it
>
> (b) right now, the "return positive value" is actually a horribly
> ugly pointless hack, which could be made to be an error value and
> cleaned up in the process
>
> (c) to me that really argues that we should just make the rule be
>
> - negative error means break out with error
>
> - 0 means continue down the next level
>
> - positive could be trivially be made to just mean "ok, I did it,
> you can just continue".
>
> and I think that would make a lot of sense.
So here's an ENTIRELY untested patch, but the return value of
pmd_entry() now makes conceptual sense to me. The whole "I hit an
error, I did nothing, I already did it myself" to me is the intuitive
meaning of {neg,0,pos} handling.
I think we probably should do this same thing for the upper levels too
to be consistent, but I think this at least makes sense, and is
simple, and avoids any hacky PAGE_WALK_CALLER_MAX magic.
I also wonder if some caller might want to get a count of "how many X
handled", and we'd just sum up all the positive return values as we're
traversing things, but that falls under "nobody seems to want it right
now", so I'm not adding extra code for something that might not be
useful.
And it is possible that I missed some other pmd_entry() callback that
returns a positive value. I did check them all, but mistakes happen
and I might have missed some case...
Again: entirely and utterly untested. It compiles. That's all I'm
going to guarantee, and even that might be a fluke.
Linus
View attachment "patch.diff" of type "text/x-patch" (2426 bytes)
Powered by blists - more mailing lists