From patchwork Sun Jan 28 13:28:49 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chengming Zhou X-Patchwork-Id: 13534468 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 C1653C47DA9 for ; Sun, 28 Jan 2024 13:29:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 56E4D6B007B; Sun, 28 Jan 2024 08:29:04 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 51CDD6B007D; Sun, 28 Jan 2024 08:29:04 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3BDC06B007E; Sun, 28 Jan 2024 08:29:04 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 2E5566B007B for ; Sun, 28 Jan 2024 08:29:04 -0500 (EST) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 01E2E1607B8 for ; Sun, 28 Jan 2024 13:29:03 +0000 (UTC) X-FDA: 81728800608.18.3B582EA Received: from out-177.mta0.migadu.com (out-177.mta0.migadu.com [91.218.175.177]) by imf02.hostedemail.com (Postfix) with ESMTP id 3FE2E8000E for ; Sun, 28 Jan 2024 13:29:02 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=none; spf=pass (imf02.hostedemail.com: domain of chengming.zhou@linux.dev designates 91.218.175.177 as permitted sender) smtp.mailfrom=chengming.zhou@linux.dev; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=bytedance.com (policy=quarantine) ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1706448542; 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; bh=lh9QOA1AtFblJ81VoirAW8qU36F2Ok/LfE+PZUCh84Y=; b=IIbDXLAxGRKkY3hFdKFKMyYuFXbcqFZR0IASJ8syOVLxSuIG1QL3t/v5xCnHkmyLnKfviO BQ4vIoXpUdcjIEZHSZCtSTDnrhdw2+t3DcXgTlfQzoAoh4pRn3TR3Mro2usScyDh4J1PDr 78oLvMRpX8wZqtPK6O2Fj/bpZosvYJo= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1706448542; a=rsa-sha256; cv=none; b=6Ca97I3GrU94AhlIo1VurJ89pwpQq8YkBJ+vCd8ve94OpCHc09cRHC6/dtOqwTp17H2B/g sRo7NBnZmlqU4c4OlQYLndWWXKnyN8X32Ox7txl72dvkuio1gMU8Qover5bUxMavglr55s oLNLpDAwWWLbRIj6NQdXFgCA4Jyo+VE= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=none; spf=pass (imf02.hostedemail.com: domain of chengming.zhou@linux.dev designates 91.218.175.177 as permitted sender) smtp.mailfrom=chengming.zhou@linux.dev; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=bytedance.com (policy=quarantine) X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Chengming Zhou Date: Sun, 28 Jan 2024 13:28:49 +0000 Subject: [PATCH v2 1/3] mm/zswap: don't return LRU_SKIP if we have dropped lru lock MIME-Version: 1.0 Message-Id: <20240126-zswap-writeback-race-v2-1-b10479847099@bytedance.com> References: <20240126-zswap-writeback-race-v2-0-b10479847099@bytedance.com> In-Reply-To: <20240126-zswap-writeback-race-v2-0-b10479847099@bytedance.com> To: Johannes Weiner , Yosry Ahmed , Nhat Pham , Andrew Morton , Chris Li Cc: Chengming Zhou , Johannes Weiner , Nhat Pham , linux-kernel@vger.kernel.org, linux-mm@kvack.org X-Migadu-Flow: FLOW_OUT X-Stat-Signature: hwtq5y4o4keddwoha1h1ocmwgq7j6odf X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 3FE2E8000E X-Rspam-User: X-Rspamd-Pre-Result: action=add header; module=dmarc; Action set by DMARC X-Rspam: Yes X-HE-Tag: 1706448542-470454 X-HE-Meta: U2FsdGVkX19e9AnByoiLQAY7NsO0t76f8YZAQqC+CBUeggUDHBhuDDduKY+IsDpw+mDCPM54C/cIbabGSm1UFmkm6z84ymTO/Bmv+l4jNa2fcsc6JjL3nuqf0LnEUV9jrOQxIEgplW86u4whFxBSqp+1bq0wXNVTF2VPpPm8sAydHIRu3yDDrxMcAs9Gfkm63nxFjbW+7VjLj/2ZJo//kjSYXhNw65ek3GqhSSSm9dyX/XaqPhkuYM762kFJX0DPkUxj/qX47jyYI7rBlaqz2z46OUNc6Oe1yhez84gOWn7/YkFSi2WcRGBGe5MtvKxOmMyZBCcTuWuFivGfXuGcVNqFmUd+726liQaC/Mf6Ex2cAuEjjpsIRQaUoFH3iIz2vwczceP34ZkEFEgqlUzbw/HPnaJarxZwJV5wn0z2qhoP5xGWh/V7ZRrgg7KcS11Z4P4hTAvQw8N0yV0T03Q6AbKI2t3snJlSVY5xq14iZAYyGckb9xJCUuNmgOjiO4qNJA9mkXAVA/OZsx4M/YCVQGGe2PAwcuIFdlk+WrKUxMLJ36ebHavJzxPqGT09e24wcZh0Mt8K1I+9P0KeStE15ga9S/yxXZX4HR958KPpXpMziLK8sNVAkIIw5AM53DPLzaNrDFdAV5oax4d8DCu7j+vKDnf+WjzbKDxltc3nnvNBZmrcZpyLVg9codrwOLGeDsI6Rrs27EuJyLbpAUZU1JM5VAIsR3TvfQ1pOls9ixOQRuAi6Dtt3fLx8NrKTn/ZC3aNf2F5M0320SbTwa1A4hLRI73jwgb4TtnNWKnq4nlK3zgWBLwJklpQCvEzLc0IJDa8oiPIJwu0+5ogyzMnelmEkFDjSV9dNguiNrMP1izQYqVTwsTF6FOqhr/k23czU3myvH4C7fy6NHCbnb1hXC0sLbqFOLccGJlW9Sd3AUFznWAFqISiIRq6JCxzS8WGS5ixeuNSIka5lcwte43 UjIv/Bxx uU7A65j49PFd36vp5n4nXAxUjzZOhP/A0pcPmPef18tfanV0IJqDwS1oV6xIlBEhSsA/3knIEY2MyH3DUZD6NyLl63cpxPwurEbidD54MDVUoiSQPL+DzRasWtFRhauw75X/pAwlgGTpWD60HaLr/tFfpApe5v7ORIgaGWQcNybrPqIbOIupMKmd/4D+90+uCn+jlV65686dVeRFk/mi+au1mWo3iU+/cg9tU4IHflamiYqgZPPezPzPFAfN2n1CBu9pf1NuvSjFNwVwLm3e4QVOUfKsdpjochpJN8N7wCi1aqafRm/GU7PD7w7WPsbPPoAmg4j0KiFWXmDlEKbuocZ6IaWnpZ7bOgGJVTDnAOqH5n5YimRkdxqfW2ALCUfzim5RccW4BQHBwoD1TBuYGDQHj2Bcy6/LM+5BScLbUZfWeAqkcRiRuvtn13evMOCO1430gGo9as0U548TB26VV0g2nBfo8vgzdG1q5+XaLnGF7c+t7bzHwCf1UJg== 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: List-Subscribe: List-Unsubscribe: LRU_SKIP can only be returned if we don't ever dropped lru lock, or we need to return LRU_RETRY to restart from the head of lru list. Otherwise, the iteration might continue from a cursor position that was freed while the locks were dropped. Actually we may need to introduce another LRU_STOP to really terminate the ongoing shrinking scan process, when we encounter a warm page already in the swap cache. The current list_lru implementation doesn't have this function to early break from __list_lru_walk_one. Fixes: b5ba474f3f51 ("zswap: shrink zswap pool based on memory pressure") Acked-by: Johannes Weiner Reviewed-by: Nhat Pham Signed-off-by: Chengming Zhou Acked-by: Yosry Ahmed --- mm/zswap.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/mm/zswap.c b/mm/zswap.c index 00e90b9b5417..81cb3790e0dd 100644 --- a/mm/zswap.c +++ b/mm/zswap.c @@ -901,10 +901,8 @@ static enum lru_status shrink_memcg_cb(struct list_head *item, struct list_lru_o * into the warmer region. We should terminate shrinking (if we're in the dynamic * shrinker context). */ - if (writeback_result == -EEXIST && encountered_page_in_swapcache) { - ret = LRU_SKIP; + if (writeback_result == -EEXIST && encountered_page_in_swapcache) *encountered_page_in_swapcache = true; - } goto put_unlock; }