Re: [RFC PATCH v2 01/16] mm,hwpoison: cleanup unused PageHuge() check

From: Michal Hocko
Date: Mon Oct 21 2019 - 08:16:40 EST


On Mon 21-10-19 07:00:46, Naoya Horiguchi wrote:
> On Fri, Oct 18, 2019 at 01:48:32PM +0200, Michal Hocko wrote:
> > On Thu 17-10-19 16:21:08, Oscar Salvador wrote:
> > > From: Naoya Horiguchi <n-horiguchi@xxxxxxxxxxxxx>
> > >
> > > Drop the PageHuge check since memory_failure forks into memory_failure_hugetlb()
> > > for hugetlb pages.
> > >
> > > Signed-off-by: Oscar Salvador <osalvador@xxxxxxx>
> > > Signed-off-by: Naoya Horiguchi <n-horiguchi@xxxxxxxxxxxxx>
> >
> > s-o-b chain is reversed.
> >
> > The code is a bit confusing. Doesn't this check aim for THP?
>
> No, PageHuge() is false for thp, so this if branch is just dead code.
>
> > AFAICS
> > PageTransHuge(hpage) will split the THP or fail so PageTransHuge
> > shouldn't be possible anymore, right?
>
> Yes, that's right.
>
> > But why does hwpoison_user_mappings
> > still work with hpage then?
>
> hwpoison_user_mappings() is called both from memory_failure() and
> from memory_failure_hugetlb(), so it need handle both cases.

Thanks for the clarification. Maybe the changelog could be more explicit
because the code is quite confusing.
--
Michal Hocko
SUSE Labs