From: "Huang, Ying" <ying.huang@intel.com>
To: Zi Yan <ziy@nvidia.com>
Cc: Andrew Morton <akpm@linux-foundation.org>, <linux-mm@kvack.org>,
<linux-kernel@vger.kernel.org>, Yang Shi <shy828301@gmail.com>,
Baolin Wang <baolin.wang@linux.alibaba.com>,
Oscar Salvador <osalvador@suse.de>,
"Matthew Wilcox" <willy@infradead.org>,
Bharata B Rao <bharata@amd.com>,
"Alistair Popple" <apopple@nvidia.com>,
haoxin <xhao@linux.alibaba.com>,
Minchan Kim <minchan@kernel.org>,
Mike Kravetz <mike.kravetz@oracle.com>,
Hyeonggon Yoo <42.hyeyoo@gmail.com>
Subject: Re: [PATCH -v4 7/9] migrate_pages: share more code between _unmap and _move
Date: Fri, 10 Feb 2023 15:09:18 +0800 [thread overview]
Message-ID: <87pmaif141.fsf@yhuang6-desk2.ccr.corp.intel.com> (raw)
In-Reply-To: <475B26C7-8BA8-4647-BDB0-25C805FD5ACC@nvidia.com> (Zi Yan's message of "Wed, 08 Feb 2023 14:47:35 -0500")
Zi Yan <ziy@nvidia.com> writes:
> On 8 Feb 2023, at 7:02, Huang, Ying wrote:
>
>> Zi Yan <ziy@nvidia.com> writes:
>>
>>> On 6 Feb 2023, at 1:33, Huang Ying wrote:
>>>
>>>> This is a code cleanup patch to reduce the duplicated code between the
>>>> _unmap and _move stages of migrate_pages(). No functionality change
>>>> is expected.
>>>>
>>>> Signed-off-by: "Huang, Ying" <ying.huang@intel.com>
>>>> Cc: Zi Yan <ziy@nvidia.com>
>>>> Cc: Yang Shi <shy828301@gmail.com>
>>>> Cc: Baolin Wang <baolin.wang@linux.alibaba.com>
>>>> Cc: Oscar Salvador <osalvador@suse.de>
>>>> Cc: Matthew Wilcox <willy@infradead.org>
>>>> Cc: Bharata B Rao <bharata@amd.com>
>>>> Cc: Alistair Popple <apopple@nvidia.com>
>>>> Cc: haoxin <xhao@linux.alibaba.com>
>>>> Cc: Minchan Kim <minchan@kernel.org>
>>>> Cc: Mike Kravetz <mike.kravetz@oracle.com>
>>>> Cc: Hyeonggon Yoo <42.hyeyoo@gmail.com>
>>>> ---
>>>> mm/migrate.c | 203 ++++++++++++++++++++-------------------------------
>>>> 1 file changed, 81 insertions(+), 122 deletions(-)
>>>>
>>>> diff --git a/mm/migrate.c b/mm/migrate.c
>>>> index 23eb01cfae4c..9378fa2ad4a5 100644
>>>> --- a/mm/migrate.c
>>>> +++ b/mm/migrate.c
>>>> @@ -1037,6 +1037,7 @@ static void __migrate_folio_extract(struct folio *dst,
>>>> static void migrate_folio_undo_src(struct folio *src,
>>>> int page_was_mapped,
>>>> struct anon_vma *anon_vma,
>>>> + bool locked,
>>>> struct list_head *ret)
>>>> {
>>>> if (page_was_mapped)
>>>> @@ -1044,16 +1045,20 @@ static void migrate_folio_undo_src(struct folio *src,
>>>> /* Drop an anon_vma reference if we took one */
>>>> if (anon_vma)
>>>> put_anon_vma(anon_vma);
>>>> - folio_unlock(src);
>>>> - list_move_tail(&src->lru, ret);
>>>> + if (locked)
>>>> + folio_unlock(src);
>>>
>>> Having a comment would be better.
>>> /* A page that has not been migrated, move it to a list for later restoration */
>>
>> Emm... the page state has been restored in the previous operations of
>> the function. This is the last step and the page will be moved to
>> "return" list, then the caller of migrate_pages() will call
>> putback_movable_pages().
>
> But if (rc == -EAGAIN || rc == -EDEADLOCK) then ret will be NULL, thus the page
> will not be put back, right?
Yes. That is a special case.
> And for both cases, the src page state is not
> changed at all.
Their state should be restored to the original state too for being
processed again. That is done in the previous operations too. For
example, if the folio has been locked, before return with -EAGAIN, we
need to unlock the folio, otherwise, we will run into double lock.
> So probably only call migrate_folio_undo_src() when
> (rc != -EAGAIN && rc != -EDEADLOCK)? And still require ret to be non NULL.
>
>>
>> We have some comments for the function (migrate_folio_undo_src()) as
>> follows,
>>
>> /* Restore the source folio to the original state upon failure */
>>
>>>> + if (ret)
>>>> + list_move_tail(&src->lru, ret);
>>>> }
>>>>
[snip]
Best Regards,
Huang, Ying
next prev parent reply other threads:[~2023-02-10 7:10 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-06 6:33 [PATCH -v4 0/9] migrate_pages(): batch TLB flushing Huang Ying
2023-02-06 6:33 ` [PATCH -v4 1/9] migrate_pages: organize stats with struct migrate_pages_stats Huang Ying
2023-02-07 16:28 ` haoxin
2023-02-06 6:33 ` [PATCH -v4 2/9] migrate_pages: separate hugetlb folios migration Huang Ying
2023-02-07 16:42 ` haoxin
2023-02-08 11:35 ` Huang, Ying
2023-02-06 6:33 ` [PATCH -v4 3/9] migrate_pages: restrict number of pages to migrate in batch Huang Ying
2023-02-07 17:01 ` haoxin
2023-02-06 6:33 ` [PATCH -v4 4/9] migrate_pages: split unmap_and_move() to _unmap() and _move() Huang Ying
2023-02-07 17:11 ` haoxin
2023-02-07 17:27 ` haoxin
2023-02-06 6:33 ` [PATCH -v4 5/9] migrate_pages: batch _unmap and _move Huang Ying
2023-02-06 16:10 ` Zi Yan
2023-02-07 5:58 ` Huang, Ying
2023-02-13 6:55 ` Huang, Ying
2023-02-07 17:33 ` haoxin
2023-02-06 6:33 ` [PATCH -v4 6/9] migrate_pages: move migrate_folio_unmap() Huang Ying
2023-02-07 14:40 ` Zi Yan
2023-02-06 6:33 ` [PATCH -v4 7/9] migrate_pages: share more code between _unmap and _move Huang Ying
2023-02-07 14:50 ` Zi Yan
2023-02-08 12:02 ` Huang, Ying
2023-02-08 19:47 ` Zi Yan
2023-02-10 7:09 ` Huang, Ying [this message]
2023-02-06 6:33 ` [PATCH -v4 8/9] migrate_pages: batch flushing TLB Huang Ying
2023-02-07 14:52 ` Zi Yan
2023-02-08 11:27 ` Huang, Ying
2023-02-07 17:44 ` haoxin
2023-02-06 6:33 ` [PATCH -v4 9/9] migrate_pages: move THP/hugetlb migration support check to simplify code Huang Ying
2023-02-07 14:53 ` Zi Yan
2023-02-08 6:21 ` [PATCH -v4 0/9] migrate_pages(): batch TLB flushing haoxin
2023-02-08 6:27 ` haoxin
2023-02-08 11:04 ` Jonathan Cameron
2023-02-08 11:25 ` Huang, Ying
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=87pmaif141.fsf@yhuang6-desk2.ccr.corp.intel.com \
--to=ying.huang@intel.com \
--cc=42.hyeyoo@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=apopple@nvidia.com \
--cc=baolin.wang@linux.alibaba.com \
--cc=bharata@amd.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mike.kravetz@oracle.com \
--cc=minchan@kernel.org \
--cc=osalvador@suse.de \
--cc=shy828301@gmail.com \
--cc=willy@infradead.org \
--cc=xhao@linux.alibaba.com \
--cc=ziy@nvidia.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