2024-02-28 06:15:24

by Sergey Senozhatsky

[permalink] [raw]
Subject: Re: [PATCH 1/2] mm/zsmalloc: don't hold locks of all pages when free_zspage()

On (24/02/27 03:02), Chengming Zhou wrote:
> @@ -834,13 +841,12 @@ static void __free_zspage(struct zs_pool *pool, struct size_class *class,
> VM_BUG_ON_PAGE(!PageLocked(page), page);
> next = get_next_page(page);
> reset_page(page);

reset_page()->__ClearPageMovable()->PageMovable() expects page to be
locked.

> - unlock_page(page);
> dec_zone_page_state(page, NR_ZSPAGES);
> put_page(page);
> page = next;
> } while (page != NULL);


2024-02-28 06:49:27

by Chengming Zhou

[permalink] [raw]
Subject: Re: [PATCH 1/2] mm/zsmalloc: don't hold locks of all pages when free_zspage()

On 2024/2/28 14:14, Sergey Senozhatsky wrote:
> On (24/02/27 03:02), Chengming Zhou wrote:
>> @@ -834,13 +841,12 @@ static void __free_zspage(struct zs_pool *pool, struct size_class *class,
>> VM_BUG_ON_PAGE(!PageLocked(page), page);
>> next = get_next_page(page);
>> reset_page(page);
>
> reset_page()->__ClearPageMovable()->PageMovable() expects page to be
> locked.

This seems to make the patch doesn't work anymore... will think about it.

Thanks!

>
>> - unlock_page(page);
>> dec_zone_page_state(page, NR_ZSPAGES);
>> put_page(page);
>> page = next;
>> } while (page != NULL);