* [merged mm-stable] xfs-remove-dead-kswapd-flag-inheritance-from-btree-split-worker.patch removed from -mm tree
@ 2026-10-07 0:53 Andrew Morton
0 siblings, 0 replies; only message in thread
From: Andrew Morton @ 2026-10-07 0:53 UTC (permalink / raw)
To: mm-commits, ziy, vbabka, surenb, shakeel.butt, mhocko, ljs, hch,
hannes, djwong, david, cem, brendan.jackman, brauner,
wangkefeng.wang, akpm
The quilt patch titled
Subject: xfs: remove dead kswapd flag inheritance from btree split worker
has been removed from the -mm tree. Its filename was
xfs-remove-dead-kswapd-flag-inheritance-from-btree-split-worker.patch
This patch was dropped because it was merged into the mm-stable branch
of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
------------------------------------------------------
From: Kefeng Wang <wangkefeng.wang@huawei.com>
Subject: xfs: remove dead kswapd flag inheritance from btree split worker
Date: Wed, 2 Sep 2026 21:16:50 +0800
Patch series "mm: replace PF_KCOMPACTD/PF_KSWAPD with kthread_func()".
The task_struct->flags field is a limited 32-bit resource. Two flag bits,
PF_KCOMPACTD and PF_KSWAPD, are used to identify whether a kernel thread
is kcompactd or kswapd. Converting these to use kthread_func() frees up
two valuable flag bits for future use.
This patch (of 4):
Commit 1f6d64829db7 ("xfs: block allocation work needs to be kswapd
aware") added PF_MEMALLOC | PF_KSWAPD inheritance to
xfs_btree_split_worker() so that block allocation offloaded from kswapd to
a workqueue thread could access emergency memory reserves and avoid
reclaim throttling.
pageout() no longer calls ->writepage() for filesystem folios -- it
returns PAGE_ACTIVATE for non-shmem, non-anon pages. kswapd therefore
never enters XFS writeback and cannot reach btree split. The only path
that offloads btree splits is unwritten extent conversion at IO completion
(xfs_end_io -> xfs_iomap_write_unwritten), which runs in a workqueue
context where current_is_kswapd() is always false.
Let's remove the dead kswapd flag and related codes.
Link: https://lore.kernel.org/20260902131653.1338227-1-wangkefeng.wang@huawei.com
Link: https://lore.kernel.org/20260902131653.1338227-2-wangkefeng.wang@huawei.com
Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Shakeel Butt <shakeel.butt@linux.dev>
Cc: Brendan Jackman <brendan.jackman@linux.dev>
Cc: Carlos Maiolino <cem@kernel.org>
Cc: Christian Brauner <brauner@kernel.org>
Cc: "Darrick J. Wong" <djwong@kernel.org>
Cc: David Hildenbrand <david@kernel.org>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Lorenzo Stoakes <ljs@kernel.org>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Vlastimil Babka <vbabka@kernel.org>
Cc: Zi Yan <ziy@nvidia.com>
---
fs/xfs/libxfs/xfs_btree.c | 18 +-----------------
fs/xfs/xfs_platform.h | 4 ----
2 files changed, 1 insertion(+), 21 deletions(-)
--- a/fs/xfs/libxfs/xfs_btree.c~xfs-remove-dead-kswapd-flag-inheritance-from-btree-split-worker
+++ a/fs/xfs/libxfs/xfs_btree.c
@@ -2994,7 +2994,6 @@ struct xfs_btree_split_args {
struct xfs_btree_cur **curp;
int *stat; /* success/failure */
int result;
- bool kswapd; /* allocation in kswapd context */
struct completion *done;
struct work_struct work;
};
@@ -3008,33 +3007,18 @@ xfs_btree_split_worker(
{
struct xfs_btree_split_args *args = container_of(work,
struct xfs_btree_split_args, work);
- unsigned long pflags;
- unsigned long new_pflags = 0;
-
- /*
- * we are in a transaction context here, but may also be doing work
- * in kswapd context, and hence we may need to inherit that state
- * temporarily to ensure that we don't block waiting for memory reclaim
- * in any way.
- */
- if (args->kswapd)
- new_pflags |= PF_MEMALLOC | PF_KSWAPD;
-
- current_set_flags_nested(&pflags, new_pflags);
xfs_trans_set_context(args->cur->bc_tp);
args->result = __xfs_btree_split(args->cur, args->level, args->ptrp,
args->key, args->curp, args->stat);
xfs_trans_clear_context(args->cur->bc_tp);
- current_restore_flags_nested(&pflags, new_pflags);
/*
* Do not access args after complete() has run here. We don't own args
* and the owner may run and free args before we return here.
*/
complete(args->done);
-
}
/*
@@ -3078,7 +3062,7 @@ xfs_btree_split(
args.curp = curp;
args.stat = stat;
args.done = &done;
- args.kswapd = current_is_kswapd();
+
INIT_WORK_ONSTACK(&args.work, xfs_btree_split_worker);
queue_work(xfs_alloc_wq, &args.work);
wait_for_completion(&done);
--- a/fs/xfs/xfs_platform.h~xfs-remove-dead-kswapd-flag-inheritance-from-btree-split-worker
+++ a/fs/xfs/xfs_platform.h
@@ -115,10 +115,6 @@ typedef __u32 xfs_nlink_t;
#define xfs_blockgc_secs xfs_params.blockgc_timer.val
#define current_cpu() (raw_smp_processor_id())
-#define current_set_flags_nested(sp, f) \
- (*(sp) = current->flags, current->flags |= (f))
-#define current_restore_flags_nested(sp, f) \
- (current->flags = ((current->flags & ~(f)) | (*(sp) & (f))))
#define NBBY 8 /* number of bits per byte */
_
Patches currently in -mm which might be from wangkefeng.wang@huawei.com are
mm-zswap-convert-zswap_invalidate-to-take-a-range.patch
mm-zswap-skip-xarray-walk-in-zswap_invalidate-when-zswap-is-unused.patch
mm-zswap-reuse-zswap_invalidate-in-zswap_store.patch
mm-mincore-use-per-vma-lock-during-page-table-walk.patch
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-10-07 0:53 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-07 0:53 [merged mm-stable] xfs-remove-dead-kswapd-flag-inheritance-from-btree-split-worker.patch removed from -mm tree Andrew Morton
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.