Re: [PATCH v3 1/4] mm/page_alloc: rename FPI_TRYLOCK -> FPI_NOLOCK
From: Vlastimil Babka (SUSE)
Date: Wed Jul 15 2026 - 09:21:18 EST
On 7/15/26 13:03, Brendan Jackman wrote:
> As discussed in the linked patch, the there is some inconsistency between
> "trylock" and "nolock" nomenclature, let's align it. Since "nolock" is
> used in the public API it seems to have more mindshare so do that.
>
> The linked patch did this for the ALLOC_ flag but forgot about FPI_.
>
> Link: https://lore.kernel.org/all/20260703-alloc-trylock-v5-1-c87b714e19d3@xxxxxxxxxx/
> Reviewed-by: Zi Yan <ziy@xxxxxxxxxx>
> Signed-off-by: Brendan Jackman <jackmanb@xxxxxxxxxx>
Reviewed-by: Vlastimil Babka (SUSE) <vbabka@xxxxxxxxxx>
> ---
> mm/page_alloc.c | 18 +++++++++---------
> 1 file changed, 9 insertions(+), 9 deletions(-)
>
> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> index af63558391345..c2da85e69a0f8 100644
> --- a/mm/page_alloc.c
> +++ b/mm/page_alloc.c
> @@ -90,7 +90,7 @@ typedef int __bitwise fpi_t;
> #define FPI_TO_TAIL ((__force fpi_t)BIT(1))
>
> /* Free the page without taking locks. Rely on trylock only. */
> -#define FPI_TRYLOCK ((__force fpi_t)BIT(2))
> +#define FPI_NOLOCK ((__force fpi_t)BIT(2))
>
> /* free_pages_prepare() has already been called for page(s) being freed. */
> #define FPI_PREPARED ((__force fpi_t)BIT(3))
> @@ -1419,7 +1419,7 @@ static __always_inline bool __free_pages_prepare(struct page *page,
> page_table_check_free(page, order);
> pgalloc_tag_sub(page, 1 << order);
>
> - if (!PageHighMem(page) && !(fpi_flags & FPI_TRYLOCK)) {
> + if (!PageHighMem(page) && !(fpi_flags & FPI_NOLOCK)) {
> debug_check_no_locks_freed(page_address(page),
> PAGE_SIZE << order);
> debug_check_no_obj_freed(page_address(page),
> @@ -1558,7 +1558,7 @@ static void free_one_page(struct zone *zone, struct page *page,
> struct llist_head *llhead;
> unsigned long flags;
>
> - if (unlikely(fpi_flags & FPI_TRYLOCK)) {
> + if (unlikely(fpi_flags & FPI_NOLOCK)) {
> if (!spin_trylock_irqsave(&zone->lock, flags)) {
> add_page_to_zone_llist(zone, page, order);
> return;
> @@ -1569,7 +1569,7 @@ static void free_one_page(struct zone *zone, struct page *page,
>
> /* The lock succeeded. Process deferred pages. */
> llhead = &zone->trylock_free_pages;
> - if (unlikely(!llist_empty(llhead) && !(fpi_flags & FPI_TRYLOCK))) {
> + if (unlikely(!llist_empty(llhead) && !(fpi_flags & FPI_NOLOCK))) {
> struct llist_node *llnode;
> struct page *p, *tmp;
>
> @@ -2882,7 +2882,7 @@ static bool free_frozen_page_commit(struct zone *zone,
> if (pcp->free_count < (batch << CONFIG_PCP_BATCH_SCALE_MAX))
> pcp->free_count += (1 << order);
>
> - if (unlikely(fpi_flags & FPI_TRYLOCK)) {
> + if (unlikely(fpi_flags & FPI_NOLOCK)) {
> /*
> * Do not attempt to take a zone lock. Let pcp->count get
> * over high mark temporarily.
> @@ -2979,7 +2979,7 @@ static void __free_frozen_pages(struct page *page, unsigned int order,
> migratetype = MIGRATE_MOVABLE;
> }
>
> - if (unlikely((fpi_flags & FPI_TRYLOCK) && IS_ENABLED(CONFIG_PREEMPT_RT)
> + if (unlikely((fpi_flags & FPI_NOLOCK) && IS_ENABLED(CONFIG_PREEMPT_RT)
> && (in_nmi() || in_hardirq()))) {
> add_page_to_zone_llist(zone, page, order);
> return;
> @@ -3002,7 +3002,7 @@ void free_frozen_pages(struct page *page, unsigned int order)
>
> void free_frozen_pages_nolock(struct page *page, unsigned int order)
> {
> - __free_frozen_pages(page, order, FPI_TRYLOCK);
> + __free_frozen_pages(page, order, FPI_NOLOCK);
> }
>
> /*
> @@ -5399,7 +5399,7 @@ struct page *__alloc_frozen_pages_noprof(gfp_t gfp, unsigned int order,
> if (memcg_kmem_online() && (gfp & __GFP_ACCOUNT) && page &&
> unlikely(__memcg_kmem_charge_page(page, gfp, order) != 0)) {
> __free_frozen_pages(page, order,
> - alloc_flags & ALLOC_NOLOCK ? FPI_TRYLOCK : 0);
> + alloc_flags & ALLOC_NOLOCK ? FPI_NOLOCK : 0);
> page = NULL;
> }
>
> @@ -5522,7 +5522,7 @@ EXPORT_SYMBOL(__free_pages);
> */
> void free_pages_nolock(struct page *page, unsigned int order)
> {
> - ___free_pages(page, order, FPI_TRYLOCK);
> + ___free_pages(page, order, FPI_NOLOCK);
> }
>
> /**
>