Re: [PATCH STABLE v6.1.y] mm/migrate: set swap entry values of THP tail pages properly.

Zi Yan
2024-03-05T23:13:44Z

[-- Attachment #1: Type: text/plain, Size: 1932 bytes --]

On 5 Mar 2024, at 17:32, Greg KH wrote:

> On Tue, Mar 05, 2024 at 11:09:17PM +0100, David Hildenbrand wrote:
>> On 05.03.24 23:04, Greg KH wrote:
>>> On Tue, Mar 05, 2024 at 11:13:13AM -0500, Zi Yan wrote:
>>>> From: Zi Yan <ziy@nvidia.com>
>>>>
>>>> The tail pages in a THP can have swap entry information stored in their
>>>> private field. When migrating to a new page, all tail pages of the new
>>>> page need to update ->private to avoid future data corruption.
>>>>
>>>> Signed-off-by: Zi Yan <ziy@nvidia.com>
>>>> ---
>>>> mm/migrate.c | 6 +++++-
>>>> 1 file changed, 5 insertions(+), 1 deletion(-)
>>>
>>> What is the git commit id of this change in Linus's tree?
>>
>> Unfortunately, we had to do stable-only versions, because the backport
>> of the "accidental" fix that removes the per-subpage "private" information
>> would be non-trivial, especially for pre-folio-converison times.
>>
>> The accidental fix is
>>
>> 07e09c483cbef2a252f75d95670755a0607288f5
>
> None of that is obvious at all here, we need loads of documentation in
> the changelog text that says all of that please.

How about?

Before 07e09c483cbe ("mm/huge_memory: work on folio->swap instead of
page->private when splitting folio"), when a THP is added into swapcache,
each of its subpages has its own swapcache entry and need ->private pointing
to the right swapcache entry. THP added to swapcache function is added in
38d8b4e6bdc87 ("mm, THP, swap: delay splitting THP during swap out").
When THP migration was added in 616b8371539a6 ("mm: thp: enable thp migration in generic path"), it did not take care of swapcached THP's subpages,
neither updated subpage's ->private nor replaced subpage pointer in
the swapcache. Later, e71769ae5260 ("mm: enable thp migration for shmem thp")
fixed swapcache update part. Now this patch fixes the subpage ->private
update part.

--
Best Regards,
Yan, Zi

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 854 bytes --]