Message ID | 20200723032248.24772-3-bhe@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | mm/hugetlb: Small cleanup and improvement | expand |
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@redhat.com> > Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com> > Reviewed-by: David Hildenbrand <david@redhat.com> > --- > 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. Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com>
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@redhat.com> > > Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com> > > Reviewed-by: David Hildenbrand <david@redhat.com> > > --- > > 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. ~~~~~~~~ Thanks Baoquan
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@redhat.com> >>> Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com> >>> Reviewed-by: David Hildenbrand <david@redhat.com> >>> --- >>> 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.
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;