Re: [PATCH v2 1/2] mm: introduce memalloc_flags_move() for transferring allocation scopes
From: Zhou, Yun
Date: Mon Jul 20 2026 - 00:43:51 EST
On 7/20/26 04:57, Andrew Morton wrote:
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
Good catch. This is indeed a pre-existing issue, and needs a separate fix.
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.
Well, got it.
Thanks,
Yun