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@xxxxxxxxxxxxx> > > 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!