Re: [PATCH v2 2/4] mm/hugetlb.c: Remove the unnecessary non_swap_entry()
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 >>> Reviewed-by: Mike Kravetz >>> Reviewed-by: David Hildenbrand >>> --- >>> 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.
Re: [PATCH v2 2/4] mm/hugetlb.c: Remove the unnecessary non_swap_entry()
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 > > Reviewed-by: Mike Kravetz > > Reviewed-by: David Hildenbrand > > --- > > 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
Re: [PATCH v2 2/4] mm/hugetlb.c: Remove the unnecessary non_swap_entry()
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 > Reviewed-by: Mike Kravetz > Reviewed-by: David Hildenbrand > --- > 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
[PATCH v2 2/4] mm/hugetlb.c: Remove the unnecessary non_swap_entry()
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. 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 Reviewed-by: Mike Kravetz Reviewed-by: David Hildenbrand --- 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; -- 2.17.2