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 60FB7C433FE for ; Wed, 16 Nov 2022 03:07:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 90CA28E0001; Tue, 15 Nov 2022 22:07:52 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 895E86B0072; Tue, 15 Nov 2022 22:07:52 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6C0EE8E0001; Tue, 15 Nov 2022 22:07:52 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 556BF6B0071 for ; Tue, 15 Nov 2022 22:07:52 -0500 (EST) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 25F0916100B for ; Wed, 16 Nov 2022 03:07:52 +0000 (UTC) X-FDA: 80137820784.28.531B2BF Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by imf01.hostedemail.com (Postfix) with ESMTP id 2F7AA40006 for ; Wed, 16 Nov 2022 03:07:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1668568067; x=1700104067; h=message-id:date:subject:to:cc:references:from: in-reply-to:content-transfer-encoding:mime-version; bh=evBV33cBSOgls6w9x7OaSaIr11jG15cYD90GycbmlhA=; b=gSXp7b+npmrgiKTw344el1RccUuVSG3gUQFrZZ9QHR8yO3wo8BgJhs8H XbSCteM7LfPYRpP/F5mnfbRxR/HHlMii/g7xNWuX1l+ksAE6pm2PCBQ8X vGUOMW2Ghe9J6nowovTiSYy+cAN0gPJibkgNR4o+55KS9vqAJxVx7iayr bgi7gdCQELuaLw1+T9vk85T+qgv3BC175uTtsMrRolRZfNZ9qVS3HISJb 5M+7xFer+GoUTBwyBoFAy0YmJoRFO95jUwwTv0KcXa1PQaiPQbPoEt2wb qZiBW+WissdyzJrjU1BPqAnevlFmMi5x+kpqbFENtTjLG7sqVcnihX9hE Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10532"; a="398720145" X-IronPort-AV: E=Sophos;i="5.96,167,1665471600"; d="scan'208";a="398720145" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Nov 2022 19:07:45 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10532"; a="744864762" X-IronPort-AV: E=Sophos;i="5.96,167,1665471600"; d="scan'208";a="744864762" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by fmsmga002.fm.intel.com with ESMTP; 15 Nov 2022 19:07:45 -0800 Received: from orsmsx601.amr.corp.intel.com (10.22.229.14) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Tue, 15 Nov 2022 19:07:45 -0800 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31 via Frontend Transport; Tue, 15 Nov 2022 19:07:45 -0800 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.172) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.31; Tue, 15 Nov 2022 19:07:45 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WEixHL2eWJGEZPR4AnZUof//KTbUNl8ApPZ/Pi8RH1zpYkK2jbCRxxPMoYIXitbSyhwSPFnPHLuLQGvO36lzjaUdpWb+VDUlUrP2LYH/wl9PrqXjRQIlFlLYuIWobigOQlqn1Irtmm17YiHTGc8LzTaeGl7NT+Xsc1EfMQtEM68DOL8r2ow2pZ/2XUf1S7tDjsnxsPA+/kEMEAKJHguvaO6nE+/kXIp+XHaIVGsx9xDFnaY+ADc2mF0CIy4bnr1oaXnzOHtiqhTPoRhrF95iCEXHqj8uqhU0giv2/MSWCcTOWizW74S1Rtvj+Z1PlVhmLCBIs/8X0L4VFfNjpJibcw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=5AImMxz62ipSbfLmEWzSCkvR5iPBzAIHT08ihrOfn+s=; b=hKToSyFEyYT3Rsr1XrC+ZtMCin5dC6tHJN9HhR6yokh77J09eVN45h3agNM1ImyU2yr2bMDqoh1hK/TCdVB4OllRG/jgTfNEprTPiUvgrskPh5ZxwDHZVYpJLVdW8bh4QWkwbapxAIFWaD9AyE2rNnfhTuiLA5JtTBDt8J9tmB8ZpwCK4Oj27mm+mOUGqVLcbs+/df/oETt8nXzkJBqD7CuC11gp8ZOJ0XCda7Vnb65OAXD7hWimzYIFu871/4sV9WkWwZrStizBSqFtjKmhi/B4HN1rQZJQ3hgBvDUV5+nmkiOr/Xjd7b5yTemZ7oYa8VQApex8qd50arO7jd2jfA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from CO1PR11MB4820.namprd11.prod.outlook.com (2603:10b6:303:6f::8) by DS0PR11MB7262.namprd11.prod.outlook.com (2603:10b6:8:13c::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5813.18; Wed, 16 Nov 2022 03:07:43 +0000 Received: from CO1PR11MB4820.namprd11.prod.outlook.com ([fe80::560c:a32b:4c4b:8bba]) by CO1PR11MB4820.namprd11.prod.outlook.com ([fe80::560c:a32b:4c4b:8bba%5]) with mapi id 15.20.5813.017; Wed, 16 Nov 2022 03:07:42 +0000 Message-ID: Date: Wed, 16 Nov 2022 11:07:35 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0 Thunderbird/102.4.2 Subject: Re: [PATCH 1/2] mm: multi-gen LRU: retry folios written back while isolated To: Yu Zhao , Andrew Morton CC: References: <20221116013808.3995280-1-yuzhao@google.com> Content-Language: en-US From: "Yin, Fengwei" In-Reply-To: <20221116013808.3995280-1-yuzhao@google.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-ClientProxiedBy: SG2PR02CA0085.apcprd02.prod.outlook.com (2603:1096:4:90::25) To CO1PR11MB4820.namprd11.prod.outlook.com (2603:10b6:303:6f::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1PR11MB4820:EE_|DS0PR11MB7262:EE_ X-MS-Office365-Filtering-Correlation-Id: 76011a0f-94df-4176-132d-08dac77fba1a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: tKVZQnxJHZAqlCwBP5yJjO3FMtp0ezKZrPJueNcqS4Ssk22/pwFAHelti9NMyZB6PXAN6k6besXJc0vM1yh0LJCqFfvcY6yLQqxQqAZUN9OzZGzSah08HDoBbJiLErZBCMqRbN/fBTd+4Pt8tMIU1d+fmynlts9wc8/jVk0WwSH0rBWsKLwcUiGK3PUgLJ9G3uvRw/cQE8uWQl77TC5vpAW7NYfM+64ViCb+3Ys8Nuf3U8MmmHGaiaW4dvHsiGPRcaBW4bF9IojSAH9djPx98+3Hl7Rppg//2HFOqUmapVLM8gi1krEvjmeYvLX+wktefcphlhGbQpL9AMjwNwLv1DQ0I5f/mkfdHtN5Cr4hf+rx5hL5dbcsewtdxpdyoj8+Qgdpun8YbX74Yx4JgD8pFXowPQ/1UQz8GJojz0XLNsGwEh4qkJtvIn7rcxgvavT3IWZfPe9yjPRyuS2z5gCmY6qOhUo5WOS00pJTAPKWNv6HaC2XRnj81Kzz6Xqh0NQEDqSgj/Lmrf9lmY9pWWM3C+ebU3WLI7JhyOQdejO+vEI1Xw+ausV9mBMJCmTUfe1hudUGcyqHZJ4Oe639xpFN1k9dW/L/H4BRz+rMEyCaAT9UVCwBeDe8uA3tGhZfT8vh7CSGOrJNlDe/eQ0Oi0DzOlDCvz4YtJ3QyLwKBHoNzTZJTwiOzix7cREBn2+3ums+D2+pmiOARHMQHOaXFAZ0tPK4TT59NQA+hBcdyrMYo5G2JIFBUvhDSg6UxsDZdfp3E+tSX93d26W3+np1873RkdVJLyXHIkagnupGWUTgE0w= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR11MB4820.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(396003)(366004)(376002)(39860400002)(136003)(346002)(451199015)(6486002)(6666004)(478600001)(31686004)(26005)(110136005)(66946007)(316002)(66556008)(66476007)(36756003)(6506007)(4326008)(8676002)(2906002)(8936002)(5660300002)(41300700001)(6512007)(2616005)(186003)(38100700002)(82960400001)(86362001)(31696002)(83380400001)(53546011)(45980500001)(43740500002);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?UTlhNCtnaE1oZ0tPSGdOakVBRGl5RVFLRjlUeTVFWTVTNVJRV3EvSk5XMEtR?= =?utf-8?B?TVFkYWxyeW1uTE9BeWl6cExLMzBibG5BNnloaGh2UUtUYVZaQU10dS9ZaEg2?= =?utf-8?B?SzNXbUh3MHIyWUYzaTcxSFlpTEZMajg2UW1ZbVN4QWhVbk4xNVVScGMvdllz?= =?utf-8?B?VE1xeCtEYzZ3NUo4YnpKY2lwTmY3aHlYQ1ltMEgyenRpT0JBbUJnMEJ5TDVU?= =?utf-8?B?NzJ2QUZxT3lLOVFKU0FRUHY0WG5HYzFMeklBNnlrZ3g2VDlhSG1RVVkySW8x?= =?utf-8?B?Tm9aNXFlbG41RDhvQ09zWHBMeTBpRGt2S2o1enJnVnJONUR2dXlnSU5hNk9Z?= =?utf-8?B?bVIvRGwwTEtBWkNhYTA4OXRoYTlFSjM4bzVjZjlGbUR1ZytyQ3dWdkhhTUNk?= =?utf-8?B?WkZMb3lEK3VTcC9VOVJscUFUeWJBM1ZuRWFHSEZHOGRnaG1VZHdWY0pFYkRG?= =?utf-8?B?b0JTWDJwS3N3VWQ3UE5DRHpENmJQOWwzNEVkcDFNWnZOVUJqR3A1QWd2SWU1?= =?utf-8?B?L1ArR29jZk1zWS9aM1NLRkR3VW96Y0lkYTA1dkt1ZzBmL2pDdXhYT2FFejgz?= =?utf-8?B?OGM0YVpLNjJGRVpISE5uc095K08yclp2U3FRSE0wdHJNSlhHVUdLSE9yc2lR?= =?utf-8?B?WEpLRHc3N1VpU2hhN0lYMkpIZnJ4TktDNFpKWW9JS0c1bjRLYjZhWnlBd3Ez?= =?utf-8?B?cXZsVThNRDFiOENQRVpHRjVjbG5PaEZIQTRSRFV6UWtBMFlMNDFQbS9BMDNF?= =?utf-8?B?Sm1tcEJ3YkhCY1JsNjYya3BmZmhzWXNIc1ZwMXlCVnBRbkt1ODhJRGZCd2Ni?= =?utf-8?B?d0poMlo3NGwxUHY2WjFjUCtORS9nN1p1VFo4dmJVMER1MzN4b1dzSk9tSHRr?= =?utf-8?B?ZmhEcktQUEQ5cnh1bWlPL2ZydzVFaE9GOC82Y1p6ZWR0UTZTSHRMTWpUV3J0?= =?utf-8?B?OE9aKzhKNHNncW5KRTl1bHZXTnZWa0hzaVllVHp1VHRzbVJlcERoZTlRTitF?= =?utf-8?B?dmpvUEZaSHBTVmJCZG91QnhFalpHQ0JOZkpXRTU5bnNnREs3YWE5UFc5ajRX?= =?utf-8?B?eENocU92WXRqeTg3Vk5jNGFvRmhJcnpFeGRNUWM4T01TTkYzQ2Rlci9nZlZO?= =?utf-8?B?RVdSWlRiOVZUWmFDSVV5em1IQkp1Z1pXK2VBYVVXbWJ5L3QwOXhjSGcwNmFp?= =?utf-8?B?N3h1TFIrSk9TY3VaTFZtc3hOTVpNM0JjWXdWV1dHM2RzalVXVm9RU1lSMmlF?= =?utf-8?B?UnByWUF3SWR2MXNZY0lWQkRDRUFhZkJOdmNxMGFFSXdkOCtMTWpxaFB6Vkho?= =?utf-8?B?ZHJHdEo3S1c1RUVLck04Y2lQTmlDbHE5Qm1BeVRPN0tGYlhBVFNOWjZ4VVI5?= =?utf-8?B?QklEaTM1MTRZWURRQU9teGNvMExsUTF0R09vdlFSYWVNbzlxVG1xYjZuWjZi?= =?utf-8?B?UFpiQ2NXSW5XNGRmdlAwem9GaVp3cVZaOEF2djU4ZFAraVdkUVk3VEZveVdx?= =?utf-8?B?NlJuQzRQNTk4bzBpRVM2WkZYRkdoUmRGbDBVaDhEOTZYZlM2TTJPQUg1TEZZ?= =?utf-8?B?S1RNNkxQMmxYSjYzUGRMVEhpVnJZLzEvRTRERHdlSTQ4cWpmTkhKOHd5dlhH?= =?utf-8?B?aWV3SlBzRlBTKzdVbmk1MG9nUUJZMzhaOXd5REpkTHNXbjBJOE11d0k5dW5T?= =?utf-8?B?NGs2NW1CNGtkQTV0VzRlMmhNejhnaUhMZXlWZDFnbGt4WUNjWEhHcmhQSzJz?= =?utf-8?B?VjdqNXR0TGUyQ0YvOW5DR1RZaFNqMWo2RHFIVzdkMENNdlJnQk1nVys2c1lz?= =?utf-8?B?eGV6TC9LT3lLSVVMQ2VUQjJDY1VPTDdFN3pra3ZYbGJjdkt4eS9ydDVVdC9x?= =?utf-8?B?K25WMUVwdHVacmxpSlo4QzdZRDRKMy80dnBYcUQ4ejY0Z2xEclZDTWhsZ3By?= =?utf-8?B?ODhsNXg4b2YwajI3WGhyQzB4MGFKLzg1V2hlakNrckgydWpwemtiVWpFOWM3?= =?utf-8?B?QkdrdjAvcEkvVG5JeXBDRUlxUEpQNzlDUzN0cCtZMUlpUGo0SU13djgvclRm?= =?utf-8?B?NzNkTmttVk5hZFU4TllWemRnQmN1TFQ5SXF6YnRiVGwvNTJuSWZRK2t4WUJP?= =?utf-8?Q?DvkRNzSGpBtD9Ha8vP6i0HjKO?= X-MS-Exchange-CrossTenant-Network-Message-Id: 76011a0f-94df-4176-132d-08dac77fba1a X-MS-Exchange-CrossTenant-AuthSource: CO1PR11MB4820.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Nov 2022 03:07:42.4953 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: n9PyrqazM22L4Eqi4ITDq79zNBLQZj+ELBYO2vMkInBSwzoC0fnxyoXjxuchk2W6KDZMh5HDHu0/39nRw/sSxg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR11MB7262 X-OriginatorOrg: intel.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1668568068; a=rsa-sha256; cv=fail; b=bMaYGaG0nyJxbNUoVVvZ8f5XM9WMCp/MgZ6VBPH7fiXVEQI6xwU1E9X71DKOa7AO5WGfSm cFTahY6djM/OIC4L7cJSswtQ6iPqMdP3rCS3/3xFSBEWzn23lRwAcmxq7JOZm3YOllB9GM nC5Ih/bnyRVRTI5jHyj5ZvCn6hvq5mg= ARC-Authentication-Results: i=2; imf01.hostedemail.com; dkim=none ("invalid DKIM record") header.d=intel.com header.s=Intel header.b=gSXp7b+n; dmarc=pass (policy=none) header.from=intel.com; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}"); spf=pass (imf01.hostedemail.com: domain of fengwei.yin@intel.com designates 192.55.52.43 as permitted sender) smtp.mailfrom=fengwei.yin@intel.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1668568068; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=5AImMxz62ipSbfLmEWzSCkvR5iPBzAIHT08ihrOfn+s=; b=JLkiXgmIt+TqyKJnmv7QBGUgGlxGd7W9+TYNiTpRha0z0WDlvp+53JQhnCaRH9kq+YgalE BopgswwCDTHtSOebGvy3bAPiQlVqFVJOe20YaVSPI89W4b/Gc1qp78z8bLlHyVBpflrg8b neuh0SuNJyVpnqIKtOIR73nLiQHD8rU= Authentication-Results: imf01.hostedemail.com; dkim=none ("invalid DKIM record") header.d=intel.com header.s=Intel header.b=gSXp7b+n; dmarc=pass (policy=none) header.from=intel.com; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}"); spf=pass (imf01.hostedemail.com: domain of fengwei.yin@intel.com designates 192.55.52.43 as permitted sender) smtp.mailfrom=fengwei.yin@intel.com X-Rspam-User: X-Stat-Signature: qzn9koniign4bg16eda8ureacbbkrsm9 X-Rspamd-Queue-Id: 2F7AA40006 X-Rspamd-Server: rspam11 X-HE-Tag: 1668568066-492487 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: On 11/16/2022 9:38 AM, Yu Zhao wrote: > The page reclaim isolates a batch of folios from the tail of one of > the LRU lists and works on those folios one by one. For a suitable > swap-backed folio, if the swap device is async, it queues that folio > for writeback. After the page reclaim finishes an entire batch, it > puts back the folios it queued for writeback to the head of the > original LRU list. > > In the meantime, the page writeback flushes the queued folios also by > batches. Its batching logic is independent from that of the page > reclaim. For each of the folios it writes back, the page writeback > calls folio_rotate_reclaimable() which tries to rotate a folio to the > tail. > > folio_rotate_reclaimable() only works for a folio after the page > reclaim has put it back. If an async swap device is fast enough, the > page writeback can finish with that folio while the page reclaim is > still working on the rest of the batch containing it. In this case, > that folio will remain at the head and the page reclaim will not retry > it before reaching there. > > This patch adds a retry to evict_folios(). After evict_folios() has > finished an entire batch and before it puts back folios it cannot free > immediately, it retries those that may have missed the rotation. > > Before this patch, ~60% of folios swapped to an Intel Optane missed > folio_rotate_reclaimable(). After this patch, ~99% of missed folios > were reclaimed upon retry. > > This problem affects relatively slow async swap devices like Samsung > 980 Pro much less and does not affect sync swap devices like zram or > zswap at all. > > Fixes: ac35a4902374 ("mm: multi-gen LRU: minimal implementation") > Signed-off-by: Yu Zhao > --- > mm/vmscan.c | 48 +++++++++++++++++++++++++++++++++++++----------- > 1 file changed, 37 insertions(+), 11 deletions(-) > > diff --git a/mm/vmscan.c b/mm/vmscan.c > index 04d8b88e5216..dc6ebafa0a37 100644 > --- a/mm/vmscan.c > +++ b/mm/vmscan.c > @@ -4971,10 +4971,13 @@ static int evict_folios(struct lruvec *lruvec, struct scan_control *sc, int swap > int scanned; > int reclaimed; > LIST_HEAD(list); > + LIST_HEAD(clean); > struct folio *folio; > + struct folio *next; > enum vm_event_item item; > struct reclaim_stat stat; > struct lru_gen_mm_walk *walk; > + bool skip_retry = false; > struct mem_cgroup *memcg = lruvec_memcg(lruvec); > struct pglist_data *pgdat = lruvec_pgdat(lruvec); > > @@ -4991,20 +4994,37 @@ static int evict_folios(struct lruvec *lruvec, struct scan_control *sc, int swap > > if (list_empty(&list)) > return scanned; > - > +retry: > reclaimed = shrink_folio_list(&list, pgdat, sc, &stat, false); > + sc->nr_reclaimed += reclaimed; > > - list_for_each_entry(folio, &list, lru) { > - /* restore LRU_REFS_FLAGS cleared by isolate_folio() */ > - if (folio_test_workingset(folio)) > - folio_set_referenced(folio); > + list_for_each_entry_safe_reverse(folio, next, &list, lru) { > + if (!folio_evictable(folio)) { > + list_del(&folio->lru); > + folio_putback_lru(folio); > + continue; > + } dump question: My understanding: unevictable folios were filtered out in sort_folios. So this is because folio could become unevictable during retry? Thanks. Regards Yin, Fengwei > > - /* don't add rejected pages to the oldest generation */ > if (folio_test_reclaim(folio) && > - (folio_test_dirty(folio) || folio_test_writeback(folio))) > - folio_clear_active(folio); > - else > - folio_set_active(folio); > + (folio_test_dirty(folio) || folio_test_writeback(folio))) { > + /* restore LRU_REFS_FLAGS cleared by isolate_folio() */ > + if (folio_test_workingset(folio)) > + folio_set_referenced(folio); > + continue; > + } > + > + if (skip_retry || folio_test_active(folio) || folio_test_referenced(folio) || > + folio_mapped(folio) || folio_test_locked(folio) || > + folio_test_dirty(folio) || folio_test_writeback(folio)) { > + /* don't add rejected folios to the oldest generation */ > + set_mask_bits(&folio->flags, LRU_REFS_MASK | LRU_REFS_FLAGS, > + BIT(PG_active)); > + continue; > + } > + > + /* retry folios that may have missed folio_rotate_reclaimable() */ > + list_move(&folio->lru, &clean); > + sc->nr_scanned -= folio_nr_pages(folio); > } > > spin_lock_irq(&lruvec->lru_lock); > @@ -5026,7 +5046,13 @@ static int evict_folios(struct lruvec *lruvec, struct scan_control *sc, int swap > mem_cgroup_uncharge_list(&list); > free_unref_page_list(&list); > > - sc->nr_reclaimed += reclaimed; > + INIT_LIST_HEAD(&list); > + list_splice_init(&clean, &list); > + > + if (!list_empty(&list)) { > + skip_retry = true; > + goto retry; > + } > > if (need_swapping && type == LRU_GEN_ANON) > *need_swapping = true;