Re: [PATCH v2 1/2] mm: introduce memalloc_flags_move() for transferring allocation scopes
From: Andrew Morton
Date: Sun Jul 19 2026 - 16:57:43 EST
On Sun, 19 Jul 2026 17:57:31 +0800 Yun Zhou <yun.zhou@xxxxxxxxxxxxx> wrote:
> Add memalloc_flags_move() to transfer a saved memalloc scope from one
> tracking variable to another. The source is zeroed so that a
> subsequent memalloc_flags_restore() on it becomes a no-op, effectively
> transferring ownership of the scope to the destination.
>
> This is needed when a subsystem hands off an allocation context from
> one structure to another (e.g. during transaction rolling in
> filesystems), and needs to ensure the scope remains active without an
> extra save/restore cycle.
>
> ...
>
Thanks. fyi, Sashiko might have found a pre-existing xfs issue:
https://sashiko.dev/#/patchset/20260719095732.1813590-1-yun.zhou@xxxxxxxxxxxxx
> include/linux/sched/mm.h | 17 +++++++++++++++++
> 1 file changed, 17 insertions(+)
This file isn't mentioned in MAINTAINERS. Could someone please propose
a patch?
>From the MM side, probably just place it in every record which mentions
include/linux/mm.h - close enough.
> --- a/include/linux/sched/mm.h
> +++ b/include/linux/sched/mm.h
> @@ -342,6 +342,23 @@ static inline void memalloc_flags_restore(unsigned flags)
> current->flags &= ~flags;
> }
>
> +/**
> + * memalloc_flags_move - transfer a memalloc scope from one tracking
> + * variable to another.
> + * @old_flags: pointer to the source flags (will be zeroed)
> + *
> + * Returns the flags value to store in the destination. The source is
> + * set to zero so that a subsequent memalloc_flags_restore() on it is
> + * a no-op.
> + */
> +static inline unsigned int memalloc_flags_move(unsigned int *old_flags)
> +{
> + unsigned int ret = *old_flags;
> +
> + *old_flags = 0;
> + return ret;
> +}
> +
I've added linux-mm to cc here. Please include it in any future
versions of this patchset.