Thread (24 messages) flat view 24 messages, 6 authors, 2026-02-27

Re: [PATCH v3 3/5] mm: convert compaction to zone lock wrappers

From: SeongJae Park <sj@kernel.org>
Date: 2026-02-27 00:45:56
Also in: linux-cxl, linux-mm, lkml

On Thu, 26 Feb 2026 18:26:20 +0000 Dmitry Ilvokhin [off-list ref] wrote:
quoted hunk ↗ jump to hunk
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 <redacted>
---
 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

[...]
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help