On Thu, Feb 8, 2024 at 11:34 AM Johannes Weiner <hannes@xxxxxxxxxxx> wrote: > > On Sun, Feb 04, 2024 at 09:15:43PM +0800, Zhongkun He wrote: > > The spinklock in z3fold_alloc() is used to protect page->lru, > > but now it was removed in commit 'e774a7bc7f0ad', so remove > > the spinlock too. > > The pool->lock clearly protects things other than page->lru. Yes, it protects pool unbuddied lists now. I mean the following page-lru is removed in z3fold_alloc: headless: spin_lock(&pool->lock); - /* Add/move z3fold page to beginning of LRU */ - if (!list_empty(&page->lru)) - list_del(&page->lru); - - list_add(&page->lru, &pool->lru); - *handle = encode_handle(zhdr, bud); spin_unlock(&pool->lock); if (bud != HEADLESS) z3fold_page_unlock(zhdr); For more detail please see the commit 'e774a7bc7f0ad'. > > I'm not saying that you're wrong, but your changelog doesn't make a > strong case that you're right, either ;) > Hi Johannes, I am confused by the annotation : The __encode_handle() annotation show: * Pool lock should be held as this function accesses first_num. but I did not find any use cases where first_num was protected by pool lock. Furthermore, encode_handle() is protected by z3fold_page_lock() as I can see. > Please CC Vitaly (scripts/get_maintainer.pl) on these patches. Got it, thanks.