On Thu, 26 Feb 2026 18:26:20 +0000 Dmitry Ilvokhin <[email protected]> wrote:

> Compaction uses compact_lock_irqsave(), which currently operates
> on a raw spinlock_t pointer so it can be used for both zone->lock
> and lruvec->lru_lock. Since zone lock operations are now wrapped,
> compact_lock_irqsave() can no longer directly operate on a
> spinlock_t when the lock belongs to a zone.
> 
> Split the helper into compact_zone_lock_irqsave() and
> compact_lruvec_lock_irqsave(), duplicating the small amount of
> shared logic. As there are only two call sites and both statically
> know the lock type, this avoids introducing additional abstraction
> or runtime dispatch in the compaction path.
> 
> No functional change intended.
> 
> Signed-off-by: Dmitry Ilvokhin <[email protected]>
> ---
>  mm/compaction.c | 33 ++++++++++++++++++++++++---------
>  1 file changed, 24 insertions(+), 9 deletions(-)
> 
> diff --git a/mm/compaction.c b/mm/compaction.c
> index 47b26187a5df..9f7997e827bd 100644
> --- a/mm/compaction.c
> +++ b/mm/compaction.c
> @@ -503,19 +503,36 @@ static bool test_and_set_skip(struct compact_control 
> *cc, struct page *page)
>   *
>   * Always returns true which makes it easier to track lock state in callers.
>   */
> -static bool compact_lock_irqsave(spinlock_t *lock, unsigned long *flags,
> -                                             struct compact_control *cc)
> -     __acquires(lock)
> +static bool compact_zone_lock_irqsave(struct zone *zone,
> +                                   unsigned long *flags,
> +                                   struct compact_control *cc)
> +__acquires(&zone->lock)

Nit.  Why don't you keep the indentation?

My impression based on below output is that mm code prefer indenting
__acquires().

    $ git grep __acquires mm
    mm/compaction.c:__acquires(&zone->_lock)
    mm/compaction.c:__acquires(&lruvec->lru_lock)
    mm/khugepaged.c:        __acquires(&khugepaged_mm_lock)
    mm/userfaultfd.c:       __acquires(ptl1)
    mm/userfaultfd.c:       __acquires(ptl2)


Thanks,
SJ

[...]

Reply via email to