Re: [PATCH 2/3] mm/gup: small refactoring: simplify try_grab_page()
From: John Hubbard <jhubbard@nvidia.com>
Date: 2021-08-09 06:46:19
Also in:
lkml
On 8/8/21 11:38 PM, Christoph Hellwig wrote:
On Sun, Aug 08, 2021 at 04:50:17PM -0700, John Hubbard wrote:quoted
try_grab_page() does the same thing as try_grab_compound_head(..., refs=1, ...), just with a different API. So there is a lot of code duplication there. Change try_grab_page() to call try_grab_compound_head(), while keeping the API contract identical for callers. Signed-off-by: John Hubbard <jhubbard@nvidia.com> --- mm/gup.c | 29 ++--------------------------- 1 file changed, 2 insertions(+), 27 deletions(-)diff --git a/mm/gup.c b/mm/gup.c index 5cb18b62921c..4be6f060fa0b 100644 --- a/mm/gup.c +++ b/mm/gup.c@@ -203,33 +203,8 @@ static void put_compound_head(struct page *page, int refs, unsigned int flags) */ bool __must_check try_grab_page(struct page *page, unsigned int flags) { + if (flags & (FOLL_GET | FOLL_PIN)) + return try_grab_compound_head(page, 1, flags) != NULL; return true;Nit: something like: if (!(flags & (FOLL_GET | FOLL_PIN))) return true; return try_grab_compound_head(page, 1, flags) != NULL; would be a little easier to read.
Really? Well I'll be darned, that's what I wrote in my first draft. And then I looked at the diffs and thought, "positive logic is clearer, and the diffs are smaller too", and went with the current version. Which now is apparently a little worse. oops. Well, "50-50/90", as we used to say in an earlier job: 50% chance of either outcome, and due to The Way Things Go, a 90% chance of picking the wrong one! I can no longer tell which one is easier to read now, so I'll be glad to change it. :) thanks, -- John Hubbard NVIDIA