From: Yu Zhao <yuzhao@google.com>
To: Yin Fengwei <fengwei.yin@intel.com>, akpm@linux-foundation.org
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
stable@vger.kernel.org, willy@infradead.org,
vishal.moola@gmail.com, wangkefeng.wang@huawei.com,
minchan@kernel.org, david@redhat.com, ryan.roberts@arm.com,
shy828301@gmail.com
Subject: Re: [PATCH v2 2/3] madvise:madvise_free_huge_pmd(): don't use mapcount() against large folio for sharing check
Date: Mon, 7 Aug 2023 20:49:19 -0600 [thread overview]
Message-ID: <CAOUHufZnYk5BtTB9Cm0Jnf_KJPXdsLD4H7Fd4wdxP2Rm+QW+Ag@mail.gmail.com> (raw)
In-Reply-To: <20230808020917.2230692-3-fengwei.yin@intel.com>
On Mon, Aug 7, 2023 at 8:11 PM Yin Fengwei <fengwei.yin@intel.com> wrote:
>
> Commit fc986a38b670 ("mm: huge_memory: convert madvise_free_huge_pmd to
> use a folio") replaced the page_mapcount() with folio_mapcount() to check
> whether the folio is shared by other mapping.
>
> It's not correct for large folios. folio_mapcount() returns the total
> mapcount of large folio which is not suitable to detect whether the folio
> is shared.
>
> Use folio_estimated_sharers() which returns a estimated number of shares.
> That means it's not 100% correct. It should be OK for madvise case here.
>
> User-visible effects is that the THP is skipped when user call madvise.
> But the correct behavior is THP should be split and processed then.
>
> NOTE: this change is a temporary fix to reduce the user-visible effects
> before the long term fix from David is ready.
>
> Fixes: fc986a38b670 ("mm: huge_memory: convert madvise_free_huge_pmd to use a folio")
> Cc: stable@vger.kernel.org
Andrew, this one isn't really a bug fix but an optimization, so please
feel free to drop the Fixes and Cc tags above. (It seems to me it
doesn't hurt for stable to take it though.)
Thank you.
> Signed-off-by: Yin Fengwei <fengwei.yin@intel.com>
> Reviewed-by: Yu Zhao <yuzhao@google.com>
> Reviewed-by: Ryan Roberts <ryan.roberts@arm.com>
> ---
> mm/huge_memory.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/mm/huge_memory.c b/mm/huge_memory.c
> index 154c210892a1..0b709d2c46c6 100644
> --- a/mm/huge_memory.c
> +++ b/mm/huge_memory.c
> @@ -1612,7 +1612,7 @@ bool madvise_free_huge_pmd(struct mmu_gather *tlb, struct vm_area_struct *vma,
> * If other processes are mapping this folio, we couldn't discard
> * the folio unless they all do MADV_FREE so let's skip the folio.
> */
> - if (folio_mapcount(folio) != 1)
> + if (folio_estimated_sharers(folio) != 1)
> goto out;
>
> if (!folio_trylock(folio))
> --
> 2.39.2
>
next prev parent reply other threads:[~2023-08-08 2:49 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-08 2:09 [PATCH v2 0/3] don't use mapcount() to check large folio sharing Yin Fengwei
2023-08-08 2:09 ` [PATCH v2 1/3] madvise:madvise_cold_or_pageout_pte_range(): don't use mapcount() against large folio for sharing check Yin Fengwei
2023-08-08 2:09 ` [PATCH v2 2/3] madvise:madvise_free_huge_pmd(): " Yin Fengwei
2023-08-08 2:49 ` Yu Zhao [this message]
2023-08-08 2:09 ` [PATCH v2 3/3] madvise:madvise_free_pte_range(): " Yin Fengwei
[not found] ` <CGME20230815132509eucas1p1b34b2852a9c4efe743c8da82867c4cc3@eucas1p1.samsung.com>
2023-08-15 13:25 ` Daniel Gomez
2023-08-15 13:41 ` David Hildenbrand
2023-08-15 23:30 ` Yin Fengwei
2023-08-16 11:44 ` Daniel Gomez
2023-08-16 12:04 ` Yin, Fengwei
2023-08-16 14:13 ` Daniel Gomez
2023-08-16 15:11 ` David Hildenbrand
2023-08-17 7:57 ` Daniel Gomez
2023-08-08 2:43 ` [PATCH v2 0/3] don't use mapcount() to check large folio sharing Yu Zhao
2023-08-08 4:10 ` Yin, Fengwei
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAOUHufZnYk5BtTB9Cm0Jnf_KJPXdsLD4H7Fd4wdxP2Rm+QW+Ag@mail.gmail.com \
--to=yuzhao@google.com \
--cc=akpm@linux-foundation.org \
--cc=david@redhat.com \
--cc=fengwei.yin@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=minchan@kernel.org \
--cc=ryan.roberts@arm.com \
--cc=shy828301@gmail.com \
--cc=stable@vger.kernel.org \
--cc=vishal.moola@gmail.com \
--cc=wangkefeng.wang@huawei.com \
--cc=willy@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox