summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRidong Chen <chenridong@xiaomi.com>2026-07-24 11:34:33 +0800
committerAndrew Morton <akpm@linux-foundation.org>2026-08-06 18:57:13 -0700
commitb27caeb46c9a8a0a023f90abe38fa2738856dc88 (patch)
tree219fc9f77762124b55145d5b228d1e7cc6f7463e
parente26f7a91de5ca806a3413ef7dbdd3343a6aca8b7 (diff)
downloadlinux-b27caeb46c9a8a0a023f90abe38fa2738856dc88.tar.gz
linux-b27caeb46c9a8a0a023f90abe38fa2738856dc88.zip
mm: vmscan: propagate real error code from per-node proactive reclaim
It has been observed that per-node proactive reclaim always returns -EAGAIN when any error occurs. As discussed in the mailing list [1], the interface should distinguish between cases where no reclaimable memory is left and where another entity is concurrently using the same interface. Propagate the real error code, consistent with how memcg proactive reclaim handles errors. Link: https://lore.kernel.org/20260724033435.2573323-3-ridong.chen@linux.dev Link: https://lore.kernel.org/all/20250717235604.2atyx2aobwowpge3@offworld/T/#m3514718be82a31b05726a49da9b61fbfc69a589e [1] Fixes: b980077899ea ("mm: introduce per-node proactive reclaim interface") Signed-off-by: Ridong Chen <chenridong@xiaomi.com> Reviewed-by: Muchun Song <muchun.song@linux.dev> Acked-by: Johannes Weiner <hannes@cmpxchg.org> Acked-by: Shakeel Butt <shakeel.butt@linux.dev> Reviewed-by: Qi Zheng <qi.zheng@linux.dev> Reviewed-by: Barry Song <baohua@kernel.org> Cc: Axel Rasmussen <axelrasmussen@google.com> Cc: David Hildenbrand <david@kernel.org> Cc: Davidlohr Bueso <dave@stgolabs.net> Cc: Kairui Song <kasong@tencent.com> Cc: Lorenzo Stoakes <ljs@kernel.org> Cc: Michal Hocko <mhocko@kernel.org> Cc: Roman Gushchin <roman.gushchin@linux.dev> Cc: Wei Xu <weixugc@google.com> Cc: Yuanchu Xie <yuanchu@google.com> Cc: Zhongkun He <hezhongkun.hzk@bytedance.com> Cc: Baolin Wang <baolin.wang@linux.alibaba.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
-rw-r--r--mm/vmscan.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/mm/vmscan.c b/mm/vmscan.c
index af0c42daa77d..b93bca48359a 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -8026,7 +8026,7 @@ static ssize_t reclaim_store(struct device *dev,
int ret, nid = dev->id;
ret = user_proactive_reclaim((char *)buf, NULL, NODE_DATA(nid));
- return ret ? -EAGAIN : count;
+ return ret ? ret : count;
}
static DEVICE_ATTR_WO(reclaim);