On 07/23/2020 11:44 AM, Baoquan He wrote: > On 07/23/20 at 10:36am, Anshuman Khandual wrote: >> >> >> On 07/23/2020 08:52 AM, Baoquan He wrote: >>> The checking is_migration_entry() and is_hwpoison_entry() are stricter >>> than non_swap_entry(), means they have covered the conditional check >>> which non_swap_entry() is doing. >> >> They are no stricter as such but implicitly contains non_swap_entry() in itself. >> If a swap entry tests positive for either is_[migration|hwpoison]_entry(), then >> its swap_type() is among SWP_MIGRATION_READ, SWP_MIGRATION_WRITE and SWP_HWPOISON. >> All these types >= MAX_SWAPFILES, exactly what is asserted with non_swap_entry(). >> >>> >>> Hence remove the unnecessary non_swap_entry() in is_hugetlb_entry_migration() >>> and is_hugetlb_entry_hwpoisoned() to simplify code. >>> >>> Signed-off-by: Baoquan He <bhe@xxxxxxxxxx> >>> Reviewed-by: Mike Kravetz <mike.kravetz@xxxxxxxxxx> >>> Reviewed-by: David Hildenbrand <david@xxxxxxxxxx> >>> --- >>> mm/hugetlb.c | 4 ++-- >>> 1 file changed, 2 insertions(+), 2 deletions(-) >>> >>> diff --git a/mm/hugetlb.c b/mm/hugetlb.c >>> index 3569e731e66b..c14837854392 100644 >>> --- a/mm/hugetlb.c >>> +++ b/mm/hugetlb.c >>> @@ -3748,7 +3748,7 @@ bool is_hugetlb_entry_migration(pte_t pte) >>> if (huge_pte_none(pte) || pte_present(pte)) >>> return false; >>> swp = pte_to_swp_entry(pte); >>> - if (non_swap_entry(swp) && is_migration_entry(swp)) >>> + if (is_migration_entry(swp)) >>> return true; >>> else >>> return false; >>> @@ -3761,7 +3761,7 @@ static bool is_hugetlb_entry_hwpoisoned(pte_t pte) >>> if (huge_pte_none(pte) || pte_present(pte)) >>> return false; >>> swp = pte_to_swp_entry(pte); >>> - if (non_swap_entry(swp) && is_hwpoison_entry(swp)) >>> + if (is_hwpoison_entry(swp)) >>> return true; >>> else >>> return false; >>> >> >> It would be better if the commit message contains details about >> the existing redundant check. But either way. > > Thanks for your advice. Do you think updating the log as below is OK? > > ~~~~~~~~ > If a swap entry tests positive for either is_[migration|hwpoison]_entry(), then > its swap_type() is among SWP_MIGRATION_READ, SWP_MIGRATION_WRITE and SWP_HWPOISON. > All these types >= MAX_SWAPFILES, exactly what is asserted with non_swap_entry(). > > So the checking non_swap_entry() in is_hugetlb_entry_migration() and > is_hugetlb_entry_hwpoisoned() is redundant. > > Let's remove it to optimize code. > ~~~~~~~~ Something like above would be good.