From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id CE52DC3DA79 for ; Thu, 29 Dec 2022 13:30:18 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3DE5C8E0002; Thu, 29 Dec 2022 08:30:18 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 38FB68E0001; Thu, 29 Dec 2022 08:30:18 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 256198E0002; Thu, 29 Dec 2022 08:30:18 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 11E6A8E0001 for ; Thu, 29 Dec 2022 08:30:18 -0500 (EST) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id D37A81C606D for ; Thu, 29 Dec 2022 13:30:17 +0000 (UTC) X-FDA: 80295427674.10.B6507E4 Received: from mxhk.zte.com.cn (mxhk.zte.com.cn [63.216.63.40]) by imf05.hostedemail.com (Postfix) with ESMTP id B2929100011 for ; Thu, 29 Dec 2022 13:30:14 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=zte.com.cn; spf=pass (imf05.hostedemail.com: domain of yang.yang29@zte.com.cn designates 63.216.63.40 as permitted sender) smtp.mailfrom=yang.yang29@zte.com.cn ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1672320615; a=rsa-sha256; cv=none; b=53eEW9pFNs25mFoGUy3uCrR2czg/LaZXizMQ7vdU0VFFSPnBkqI/s+6hMTmLdnvpWb4DNs fCyO9VD2dhMGbbjslWc+O4TboRBmxiLbpX88mhom/+iwbsHN/sc/QtFsxZoOpIKuRayYx4 HLTt6aKj5uKFUvnTgvD9j/sH6O1NuP8= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=zte.com.cn; spf=pass (imf05.hostedemail.com: domain of yang.yang29@zte.com.cn designates 63.216.63.40 as permitted sender) smtp.mailfrom=yang.yang29@zte.com.cn ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1672320615; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding:in-reply-to: references; bh=nhtfReyy3cvlBdPkEiUQcXfVc/YDn2DXVVEJGWtmltU=; b=Oo4usrk1evqxGe0tcZ7Rfwqwe6Vro3WCALRP75fgaBgParpgjEvNQEWva7gmz5IlQaYRC9 u6E4pe1ucdeMieUJ/WIx9d/ik+7RVKRIzBLXe58ynCVsN7bJQgUvmAjVUnrtYMS96ZTbzA 0eZ7dtS1MMvx+dPisTZFMfJO7AIcUfA= Received: from mse-fl1.zte.com.cn (unknown [10.5.228.132]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mxhk.zte.com.cn (FangMail) with ESMTPS id 4NjTlj0fLRz8R040; Thu, 29 Dec 2022 21:30:09 +0800 (CST) Received: from szxlzmapp04.zte.com.cn ([10.5.231.166]) by mse-fl1.zte.com.cn with SMTP id 2BTDTxbk062621; Thu, 29 Dec 2022 21:29:59 +0800 (+08) (envelope-from yang.yang29@zte.com.cn) Received: from mapi (szxlzmapp01[null]) by mapi (Zmail) with MAPI id mid14; Thu, 29 Dec 2022 21:30:03 +0800 (CST) Date: Thu, 29 Dec 2022 21:30:03 +0800 (CST) X-Zmail-TransId: 2b0363ad965bffffffff8efe8e3d X-Mailer: Zmail v1.0 Message-ID: <202212292130035747813@zte.com.cn> Mime-Version: 1.0 From: To: , Cc: , , , , , Subject: =?UTF-8?B?W1BBVENIIGxpbnV4LW5leHRdIHN3YXBfc3RhdGU6IHVwZGF0ZSBzaGFkb3dfbm9kZXMgZm9yIGFub255bW91cyBwYWdl?= Content-Type: text/plain; charset="UTF-8" X-MAIL:mse-fl1.zte.com.cn 2BTDTxbk062621 X-Fangmail-Gw-Spam-Type: 0 X-FangMail-Miltered: at cgslv5.04-192.168.250.137.novalocal with ID 63AD9661.000 by FangMail milter! X-FangMail-Envelope: 1672320609/4NjTlj0fLRz8R040/63AD9661.000/10.5.228.132/[10.5.228.132]/mse-fl1.zte.com.cn/ X-Fangmail-Anti-Spam-Filtered: true X-Fangmail-MID-QID: 63AD9661.000/4NjTlj0fLRz8R040 X-Rspam-User: X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: B2929100011 X-Stat-Signature: sb1x8g4xzghtp58cpetbu8gdtjwm7i5e X-HE-Tag: 1672320614-787319 X-HE-Meta: U2FsdGVkX1+N35uoEUQa/OkQhjRQCubWYhZYK0M5qqcmCr0UnQmEaRpH0cXyNhXTVjFhmGHCiv5BkY0rlkvByOpALDcGbfRBzab/F8cLNuMjgQSUQN6LFV9dJ+OKYpeJF6balgl3A1z76bI3Y8UrQnRoBcSUieO2U+/yRtyxNXJ3LzVGgbHqf7wAXklG6Q9LaYDXxTMGtiTlcYiXlE0qjDp4D9IFEKpwjeZP6aM5qVGzXfmJwo9T/LAXEHPg+kWgal/9fywHrnhoSFG+Ia+a3Qg6oyM1PVku3X5yuxkMjB233Grrx0O3KHX5jNg34fEWlGA/beCDJ4BJOksDuYGNiKDw1GRU1KgXI+wGejIeTaMox29mwV9c++kg3YW042wF9b/7zsTFDFeioTDk6oMRtYagrUl5W+d4nZibf3XgG2Z80bdYgC9HC3NIdwkYRxZ9w44A6G9QAT7+jQYAvY5EqaQZCoKK16NSdn/VHG+Ko5yKvArzjCt7wfflb/8MYNewvNvfIUCBiKZRJkZN07dKVt5lhJHI74mB0cNplNAOCKjnf4SBtCBjJza4P9dgZW9+QpIl5+q27dlqmgZNimHfdx6jjrN5d3DBKyL3jl0UisBoKH9CzE75+ebss1JvM2qDInZsFp9j21vZSnwZOy1Qp5NtuIHsBrbj3fUoKP1nMTyjX7/L8hwo20Kyzc3Ae0B2+kw4fhGl3LoFsCt4AnqDYBalQhFSsreKmuxd/QRVJR8sarJrFqFlY3SlhlZUNKGlX3ngeSDz+HSFWofcUJ8GSA1m+IWo8H1qlIp46r5CvB4bkRPo1+zabiqJ9RQYjHXQHrfJvMZ4LDO3m+A072t1ECr+kldLqlDGWhQSpjtKBiF7Q1ss2p9WX9//X1j1kFjad1RTn/pwxvU= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: From: Yang Yang Shadow_nodes is for shadow nodes reclaiming of workingset handling, it is updated when page cache add or delete since long time ago workingset only supported page cache. But when workingset supports anonymous page detection[1], we missied updating shadow nodes for it. [1] commit aae466b0052e ("mm/swap: implement workingset detection for anonymous LRU") Signed-off-by: Yang Yang --- include/linux/xarray.h | 3 ++- mm/swap_state.c | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/include/linux/xarray.h b/include/linux/xarray.h index 44dd6d6e01bc..cd2ccb09c596 100644 --- a/include/linux/xarray.h +++ b/include/linux/xarray.h @@ -1643,7 +1643,8 @@ static inline void xas_set_order(struct xa_state *xas, unsigned long index, * @update: Function to call when updating a node. * * The XArray can notify a caller after it has updated an xa_node. - * This is advanced functionality and is only needed by the page cache. + * This is advanced functionality and is only needed by the page cache + * and anonymous page. */ static inline void xas_set_update(struct xa_state *xas, xa_update_node_t update) { diff --git a/mm/swap_state.c b/mm/swap_state.c index cb9aaa00951d..ed7c652d06db 100644 --- a/mm/swap_state.c +++ b/mm/swap_state.c @@ -94,6 +94,8 @@ int add_to_swap_cache(struct folio *folio, swp_entry_t entry, unsigned long i, nr = folio_nr_pages(folio); void *old; + xas_set_update(&xas, workingset_update_node); + VM_BUG_ON_FOLIO(!folio_test_locked(folio), folio); VM_BUG_ON_FOLIO(folio_test_swapcache(folio), folio); VM_BUG_ON_FOLIO(!folio_test_swapbacked(folio), folio); @@ -145,6 +147,8 @@ void __delete_from_swap_cache(struct folio *folio, pgoff_t idx = swp_offset(entry); XA_STATE(xas, &address_space->i_pages, idx); + xas_set_update(&xas, workingset_update_node); + VM_BUG_ON_FOLIO(!folio_test_locked(folio), folio); VM_BUG_ON_FOLIO(!folio_test_swapcache(folio), folio); VM_BUG_ON_FOLIO(folio_test_writeback(folio), folio); -- 2.15.2