From patchwork Tue Apr 9 08:26:28 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Barry Song <21cnbao@gmail.com> X-Patchwork-Id: 13621994 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 7908BC67861 for ; Tue, 9 Apr 2024 08:27:07 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 086826B0098; Tue, 9 Apr 2024 04:27:07 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 036886B0099; Tue, 9 Apr 2024 04:27:06 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E194A6B009A; Tue, 9 Apr 2024 04:27:06 -0400 (EDT) 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 C0E856B0098 for ; Tue, 9 Apr 2024 04:27:06 -0400 (EDT) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 895FBA030E for ; Tue, 9 Apr 2024 08:27:06 +0000 (UTC) X-FDA: 81989313252.07.A3AC693 Received: from mail-pf1-f177.google.com (mail-pf1-f177.google.com [209.85.210.177]) by imf01.hostedemail.com (Postfix) with ESMTP id A98E540010 for ; Tue, 9 Apr 2024 08:27:04 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=fgmqMxBP; spf=pass (imf01.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.210.177 as permitted sender) smtp.mailfrom=21cnbao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1712651224; a=rsa-sha256; cv=none; b=vC/oOBUZf6VBUn0auly21xq0/P05KEsG5Ym2v0kg7EYlTZiyTuX6kAFQn44XRk0oCyMEHU pOebRFV3LvFV5/cIsDM3E0GGRNiSozmdSPQt7nhhnOBHjdm3KlUVmOk4dJxEMMKC9fXBJd AYu4C9u+gp/NIQu9/cdh0Kx2bXD4WcU= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=fgmqMxBP; spf=pass (imf01.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.210.177 as permitted sender) smtp.mailfrom=21cnbao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1712651224; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=GpjEhAQtgqO+DLm71KCeo2y5Y8KyQFcwcH3a5IWajwE=; b=p9sUQBOWV5YeW0WoxZ2gGRZig+rg1+r/TQbce7Jgk2hqadVM69Xyn/freF50bm3hfUaeRA RRurlhWhiPz/PpnUVx/pONYYkUwYO9XEbz+x4GAelVFFXuwdBsTdnpEN75TW+TlTlC7cEa A+86HnoyOs4REp6p5Be/zpw+Socvp/0= Received: by mail-pf1-f177.google.com with SMTP id d2e1a72fcca58-6ed267f2936so1561891b3a.3 for ; Tue, 09 Apr 2024 01:27:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1712651223; x=1713256023; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=GpjEhAQtgqO+DLm71KCeo2y5Y8KyQFcwcH3a5IWajwE=; b=fgmqMxBP9VH58E7K/aX7jpuylVfP/I7ioy0txZPMp0VuAnce5A00usFa4Voq4EGntl a+XoXnipzhvp13K1Zp7cCo5CpwBULF8LQvqnpuHWyDonPR0Ig1w8Z3kVpE/+/aei/aO8 yI0u4WD32ZXKIs1egM4oaAnnP/jYyWArMNunCpzmjUgnNYBl+Tnye+DekP1C95XNc3iq GtlrxVrmV8BeAL8amit80Ot05qp8EMx3MQPkg2LmjjwqHVGibM5YkPgYv/2/Wl2WXprC I3V5Ja7yrQzWsB0g3dVWQviunS9b4BW9w5LZKqn6zIkMfv6Hmp3Js5woBbOB28H04Crv eWtQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712651223; x=1713256023; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GpjEhAQtgqO+DLm71KCeo2y5Y8KyQFcwcH3a5IWajwE=; b=DaaXHmK+iHSs7En5RoRPHtA0O1XmW75nXkhqYZdvupXUczDp9wMmdBl+SQIOXTFco9 gE+Xq/ISX2DIrX1emeVWfA7FS09Ol+z191Rc8gRxETZcrnbQMnQAchLJulsHM3wBHnRL ziTR5zMsbQLrBApBX5Ct3MNfVxBpKmAChyINa9WwCSkCFb+PIQMNtTRfAyaOO8S7bAvA gyKJ1gX0NEVyCCxfPY1hCGBQZSIYsYvSdnhoOVCrmcnkAFE1QibauKRK8TmmhLAtGOpG nKDa2fEwy5m/qC5MxqkhhuvASKjGYQxlCXwKsyLH0Z4DBiS0UJCvHv2VZlWBu//qTGa8 O6JA== X-Forwarded-Encrypted: i=1; AJvYcCXB43pS7tFb5GYg5r/7glKRRSpbDou3UZ6G9a5BtFPWbjGSIf6TSw+uK5U7DPQ0FJ/HdyMxdi2vDFrToGnQq5scjgw= X-Gm-Message-State: AOJu0YwCDXIKUhXOAQRfuuWlEtJryB8+GKK9VAhOlp1DwtqlF0gyKYPi MhTVFw6y97H8HIY1m4pHIvtRp0F8RKLUO5R2V+4ab8d8vze2MAUj X-Google-Smtp-Source: AGHT+IGLXAZ+gunF7hyCXzEaTPUaO18uUbecCeYC/lMFr9OrqEyLkgxoorBwDY+pMLEp+CyQ1vQJpw== X-Received: by 2002:a05:6a00:4f84:b0:6ea:afd1:90e6 with SMTP id ld4-20020a056a004f8400b006eaafd190e6mr11705280pfb.6.1712651223528; Tue, 09 Apr 2024 01:27:03 -0700 (PDT) Received: from localhost.localdomain ([2407:7000:8942:5500:aaa1:59ff:fe57:eb97]) by smtp.gmail.com with ESMTPSA id r16-20020a632050000000b005f05c88c149sm7594238pgm.71.2024.04.09.01.26.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Apr 2024 01:27:02 -0700 (PDT) From: Barry Song <21cnbao@gmail.com> To: akpm@linux-foundation.org, linux-mm@kvack.org Cc: baolin.wang@linux.alibaba.com, chrisl@kernel.org, david@redhat.com, hanchuanhua@oppo.com, hannes@cmpxchg.org, hughd@google.com, kasong@tencent.com, ryan.roberts@arm.com, surenb@google.com, v-songbaohua@oppo.com, willy@infradead.org, xiang@kernel.org, ying.huang@intel.com, yosryahmed@google.com, yuzhao@google.com, ziy@nvidia.com, linux-kernel@vger.kernel.org Subject: [PATCH v2 2/5] mm: swap: make should_try_to_free_swap() support large-folio Date: Tue, 9 Apr 2024 20:26:28 +1200 Message-Id: <20240409082631.187483-3-21cnbao@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240409082631.187483-1-21cnbao@gmail.com> References: <20240409082631.187483-1-21cnbao@gmail.com> MIME-Version: 1.0 X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: A98E540010 X-Stat-Signature: 4nb1rnuw4kjfcy5hkzg9ihzeexib9jrh X-Rspam-User: X-HE-Tag: 1712651224-563437 X-HE-Meta: U2FsdGVkX19unyeTArdUvEl8BJFHL8XqcCJjYnRp7ICHpREsmUaqWkybIb0Va9FqrzRj0/ThYtF6IOCTuxs0CrpuugoYA8bjS3yfIx+3Ap9sa6iImkdBYs2ZX+SesJhL/euAj9VoW8++9OkgObEaGwfUfQfcO6FfKRm26TgZbs5MUBdXrnvMGLMrZNaG1U5YL8KGQpO10n1NlwcwKQ/aqNt7Jx2O5H+FJ3bPQSbFOUQGXd+WohvYULyuryX45iR9Z68ZMaqCndMrLXE9dQNGsqv3mcGKE/cMzV8mkVOixfbTBPV8rChO6kRvWUes6u6acVzOZzRkx4M83g66pNICdnqJ9SDJI4bkHXY4KshyFmJN04h+x6ul9DlGCBJggpdDJGbM1U41Ycwws0Kcwq8SsqkFTdPwhtXaFXGAHXpATrmoXGwUbFchOSfJOMXL0x6W2WrFz86fXEeCnmuLEsmzTcoDfkgY96DZtPtQYQOepr9tcTaGNokOJLF60Ov7QOdxIF8aJNaLrxGtrykzX6AA3Z1EA8P5zroxp5fwHIXNHD6nCPgrOebYlUYZvSKWga+Q65KZU1iBrObfg7OWS6Vgm7vJ+n2COysjH7uTCOY1rP5gID5T1a0SEitZteHjZyLRm0Xp3AhTqXWhJ8JiGGyye6hoN4fhKiNHKCN+8RGIlLzrEpkZ4TEKAxf4FVCAx6Ler0xBxlrHP87HALA+ecEbJ5mC3vO6cMqulEjgUgoZ1WrRupFj6n/lejl/UOAdEZoypYrCoSWmNdyafZvUN9y/oAwEaSa7mUZiSIDGfeBQvzs1aknmII6AfG4lflfKT4fT0qcdqgbo29Zxy4AIR/rbjZNe42ZdnQ029kLrB2vgV4HIn2FZ1L7aqFHdujnUxCQBJnHG1U8y+xbgBibh06Ts4PzCEF9zEQoDG8BVTnJtGb7huSK0cszyl2EwKBXbUuoj/TaCUZ+uyMdDprp65F1 nPIfS69h 6Q7ROp0XIoTx9xuOR7Q980XXdKG7EjGnixAeAmxlOzR2RPQQUGLrg1s31xsHK2PyDh3k7ymopEqVe8g7TdpNPonWOIXCJBni5D3hdfq6Ct0X4mklSuSiFO8bfF3wg18ShQB58LhyKsVQvBe702pVdtV2E2htx2Xw1OJcEDfZ0A5jwT9PTTkmcBYvuIHbVijbLfoqSMKqNeyKdtwPnepyQXdzJOy7dKYPXfm+60DRCO5Nq4rrhcX726FnCTUSDrPA7/N3I/Zf0gkojh6cYEYtAeZlEceGlMih0VzoPuT7NoBHU5mkRSi1w90dljWwabP/SzAu73t0Go6sRV1NuNh+D9GHQhWpYR0oabTgD99F7tpIEFOcUhSnE/jc/Sp1lbQaoAKlTqj4ljaVBHbc9vcAcA6RWNj+nuPUz9DWa/LAt5R5OAtyYa4uRHqpe9aDg3dAETWWqf+gmsBOa5QaRDclQeogBuIvlFFVrjyFnZ6zCQpkZ2QfVrRugGfyJNye9Ld/29WQADMM4HFb7P42tU9i2ERgKppupgIiLH8Ory6BTn+LBbLlNYqQvuv4+KtX+ida6QHXvvsDBf+mkw3YlnCzcT8/Tv8OJ8uMHu8VLpC30dM4NRKjI9T3uZu3U7lBD2t9/DRQC/nBdUdW7tBVegRjUIvdX1EAXnXYCeCB/tpsE2ExSmB/v4JXtSgjL9weiZZfFpE6I 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: From: Chuanhua Han The function should_try_to_free_swap() operates under the assumption that swap-in always occurs at the normal page granularity, i.e., folio_nr_pages = 1. However, in reality, for large folios, add_to_swap_cache() will invoke folio_ref_add(folio, nr). To accommodate large folio swap-in, this patch eliminates this assumption. Signed-off-by: Chuanhua Han Co-developed-by: Barry Song Signed-off-by: Barry Song Acked-by: Chris Li Reviewed-by: Ryan Roberts Reviewed-by: "Huang, Ying" --- mm/memory.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/memory.c b/mm/memory.c index 78422d1c7381..2702d449880e 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -3856,7 +3856,7 @@ static inline bool should_try_to_free_swap(struct folio *folio, * reference only in case it's likely that we'll be the exlusive user. */ return (fault_flags & FAULT_FLAG_WRITE) && !folio_test_ksm(folio) && - folio_ref_count(folio) == 2; + folio_ref_count(folio) == (1 + folio_nr_pages(folio)); } static vm_fault_t pte_marker_clear(struct vm_fault *vmf)