From: Zi Yan <ziy@nvidia.com>
To: Kefeng Wang <wangkefeng.wang@huawei.com>
Cc: Matthew Wilcox <willy@infradead.org>,
Andrew Morton <akpm@linux-foundation.org>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
Huang Ying <ying.huang@intel.com>,
David Hildenbrand <david@redhat.com>
Subject: Re: [PATCH 1/4] mm: migrate: use a folio in add_page_for_migration()
Date: Thu, 03 Aug 2023 22:42:22 -0400 [thread overview]
Message-ID: <F2621E68-F36E-493C-8619-ADFE05050823@nvidia.com> (raw)
In-Reply-To: <fb2a22cf-14ae-3594-f5f3-8680c2100d70@huawei.com>
[-- Attachment #1: Type: text/plain, Size: 2411 bytes --]
On 3 Aug 2023, at 21:45, Kefeng Wang wrote:
> On 2023/8/3 20:30, Matthew Wilcox wrote:
>> On Thu, Aug 03, 2023 at 03:13:21PM +0800, Kefeng Wang wrote:
>>>
>>>
>>> On 2023/8/2 20:21, Matthew Wilcox wrote:
>>>> On Wed, Aug 02, 2023 at 05:53:43PM +0800, Kefeng Wang wrote:
>>>>> err = -EACCES;
>>>>> - if (page_mapcount(page) > 1 && !migrate_all)
>>>>> - goto out_putpage;
>>>>> + if (folio_estimated_sharers(folio) > 1 && !migrate_all)
>>>>> + goto out_putfolio;
>>>>
>>>> I do not think this is the correct change. Maybe leave this line
>>>> alone.
>>>
>>> Ok, I am aware of the discussion about this in other mail, will not
>>> change it(also the next two patch about this function), or wait the
>>> new work of David.
>>>>
>>>>> - if (PageHuge(page)) {
>>>>> - if (PageHead(page)) {
>>>>> - isolated = isolate_hugetlb(page_folio(page), pagelist);
>>>>> + if (folio_test_hugetlb(folio)) {
>>>>> + if (folio_test_large(folio)) {
>>>>
>>>> This makes no sense when you read it. All hugetlb folios are large,
>>>> by definition. Think about what this code used to do, and what it
>>>> should be changed to.
>>>
>>> hugetlb folio is self large folio, will drop redundant check
>>
>> No, that's not the difference. Keep thinking about it. This is not
>> a mechanical translation!
>
>
> if (PageHuge(page)) // page must be a hugetlb page
> if (PageHead(page)) // page must be a head page, not tail
> isolate_hugetlb() // isolate the hugetlb page if head
>
> After using folio,
>
> if (folio_test_hugetlb(folio)) // only check folio is hugetlb or not
>
> I don't check the page is head or not, since the follow_page could
> return a sub-page, so the check PageHead need be retained, right?
Right. It will prevent the kernel from trying to isolate the same hugetlb page
twice when two pages are in the same hugetlb folio. But looking at the
code, if you try to isolate an already-isolated hugetlb folio, isolate_hugetlb()
would return false, no error would show up. But it changes err value
from -EACCES to -EBUSY and user will see a different page status than before.
I wonder why we do not have follow_folio() and returns -ENOENT error pointer
when addr points to a non head page. It would make this patch more folio if
follow_folio() can be used in place of follow_page(). One caveat is that
user will see -ENOENT instead of -EACCES after this change.
--
Best Regards,
Yan, Zi
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 854 bytes --]
next prev parent reply other threads:[~2023-08-04 2:42 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-02 9:53 [PATCH 0/4] mm: migrate: more folio conversion Kefeng Wang
2023-08-02 9:53 ` [PATCH 1/4] mm: migrate: use a folio in add_page_for_migration() Kefeng Wang
2023-08-02 12:21 ` Matthew Wilcox
2023-08-03 7:13 ` Kefeng Wang
2023-08-03 12:30 ` Matthew Wilcox
2023-08-04 1:45 ` Kefeng Wang
2023-08-04 2:42 ` Zi Yan [this message]
2023-08-04 5:54 ` Kefeng Wang
2023-08-07 12:20 ` Kefeng Wang
2023-08-07 18:45 ` Zi Yan
2023-08-09 12:37 ` Kefeng Wang
2023-08-09 20:53 ` Mike Kravetz
2023-08-09 22:44 ` Mike Kravetz
2023-08-10 1:49 ` Kefeng Wang
2023-08-10 16:29 ` Mike Kravetz
2023-08-15 3:58 ` Huang, Ying
2023-08-15 21:12 ` Mike Kravetz
2023-08-16 0:50 ` Kefeng Wang
2023-08-15 3:56 ` Huang, Ying
2023-08-15 13:49 ` Zi Yan
2023-08-15 20:39 ` Huang, Ying
2023-08-02 9:53 ` [PATCH 2/4] mm: migrate: convert numamigrate_isolate_page() to numamigrate_isolate_folio() Kefeng Wang
2023-08-02 12:30 ` Matthew Wilcox
2023-08-03 7:08 ` Kefeng Wang
2023-08-06 5:04 ` Hugh Dickins
2023-08-02 9:53 ` [PATCH 3/4] mm: migrate: make migrate_misplaced_page() to take a folio Kefeng Wang
2023-08-02 9:53 ` [PATCH 4/4] mm: migrate: use __folio_test_movable() Kefeng Wang
2023-08-02 12:37 ` Matthew Wilcox
2023-08-02 12:38 ` David Hildenbrand
2023-08-02 11:47 ` [PATCH 0/4] mm: migrate: more folio conversion David Hildenbrand
2023-08-02 12:38 ` Kefeng Wang
2023-08-03 9:34 ` David Hildenbrand
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=F2621E68-F36E-493C-8619-ADFE05050823@nvidia.com \
--to=ziy@nvidia.com \
--cc=akpm@linux-foundation.org \
--cc=david@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=wangkefeng.wang@huawei.com \
--cc=willy@infradead.org \
--cc=ying.huang@intel.com \
/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