[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <55359a0d-fced-431c-a8fe-734c739b0158@bytedance.com>
Date: Wed, 28 Feb 2024 10:22:15 +0800
From: Chengming Zhou <zhouchengming@...edance.com>
To: Sergey Senozhatsky <senozhatsky@...omium.org>
Cc: yosryahmed@...gle.com, hannes@...xchg.org, nphamcs@...il.com,
Andrew Morton <akpm@...ux-foundation.org>, Minchan Kim <minchan@...nel.org>,
linux-kernel@...r.kernel.org, linux-mm@...ck.org
Subject: Re: [External] Re: [PATCH 0/2] mm/zsmalloc: simplify synchronization
between zs_page_migrate() and free_zspage()
On 2024/2/28 09:57, Sergey Senozhatsky wrote:
> On (24/02/27 03:02), Chengming Zhou wrote:
>> Hello,
>>
>> free_zspage() has to hold locks of all pages, since zs_page_migrate()
>> path rely on this page lock to protect the race between zs_free() and
>> it, so it can safely get zspage from page->private.
>>
>> But this way is not good and simple enough:
>>
>> 1. Since zs_free() couldn't be sleepable, it can only trylock pages,
>> or has to kick_deferred_free() to defer that to a work.
>>
>> 2. Even in the worker context, async_free_zspage() can't simply
>> lock all pages in lock_zspage(), it's still trylock because of
>> the race between zs_free() and zs_page_migrate(). Please see
>> the commit 2505a981114d ("zsmalloc: fix races between asynchronous
>> zspage free and page migration") for details.
>>
>> Actually, all free_zspage() needs is to get zspage from page safely,
>> we can use RCU to achieve it easily. Then free_zspage() don't need to
>> hold locks of all pages, so don't need the deferred free mechanism
>> at all. This patchset implements it and remove all of deferred free
>> related code.
>>
>> Thanks for review and comments!
>>
>> Signed-off-by: Chengming Zhou <zhouchengming@...edance.com>
>
> JFI, recovered from the SPAM folder
> "The sender hasn't authenticated this message"
Sorry for this, I thought the problem was fixed after testing with my own
Gmail last time. But it turns out my corporation email still sometimes has
this problem.
I will always use linux.dev email in the future to avoid these problems.
Thanks for your time!
Powered by blists - more mailing lists