On 2/27/26 17:00, Dmitry Ilvokhin 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]> > Acked-by: Shakeel Butt <[email protected]> > --- > mm/compaction.c | 33 ++++++++++++++++++++++++--------- > 1 file changed, 24 insertions(+), 9 deletions(-) > > diff --git a/mm/compaction.c b/mm/compaction.c > index fa0e332a8a92..c68fcc416fc7 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)
... two tabs :) Acked-by: David Hildenbrand (Arm) <[email protected]> -- Cheers, David
