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 4A57DC282EC for ; Tue, 18 Mar 2025 18:08:56 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 08B46280002; Tue, 18 Mar 2025 14:08:54 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0133F280001; Tue, 18 Mar 2025 14:08:53 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DF680280002; Tue, 18 Mar 2025 14:08:53 -0400 (EDT) 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 BCFC6280001 for ; Tue, 18 Mar 2025 14:08:53 -0400 (EDT) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 09C7F1615C6 for ; Tue, 18 Mar 2025 18:08:55 +0000 (UTC) X-FDA: 83235457830.27.2E2DD7F Received: from mail-lj1-f169.google.com (mail-lj1-f169.google.com [209.85.208.169]) by imf24.hostedemail.com (Postfix) with ESMTP id 0CC85180013 for ; Tue, 18 Mar 2025 18:08:52 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=XVkzy09q; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf24.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.208.169 as permitted sender) smtp.mailfrom=ryncsn@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1742321333; a=rsa-sha256; cv=none; b=vTUmAlpCrRwPj8y30eQ3e9FhwUO7L+gSk8Yl+hAa3PY72evYSk0oSMa67arwabap7RMP3L IVebrNcOEdEj2MFDCZYSZz3RSVUuAAyQSyVFYV8X8Igc9Q4MY0rDdPK/dDbLHwPbpuu8TW DQOG8EkxLBapXDaNGK6r7UUo8ldYfME= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=XVkzy09q; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf24.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.208.169 as permitted sender) smtp.mailfrom=ryncsn@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1742321333; 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=G7OCX1yKlYZNI20PjphESfy0gUOoHLlXTkA6fT3Kxfk=; b=7lTHtazKKP6STVPu0lgaFMyb2C16a0C2hiConM9peFn7pw+mGTfIxRzNC83RcKrnHdjk5r dT0DP1xFB4JtxrX5C4mUPZOtUn65HFoSbrf/i/mZEMJaZIykwx+eBWS+i68eoIGnuZbiJ+ FY1suF88M3RJ7Xgy1qrhazTUzx6H2vk= Received: by mail-lj1-f169.google.com with SMTP id 38308e7fff4ca-30bf7d0c15eso64253621fa.0 for ; Tue, 18 Mar 2025 11:08:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1742321331; x=1742926131; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=G7OCX1yKlYZNI20PjphESfy0gUOoHLlXTkA6fT3Kxfk=; b=XVkzy09qYmLMdT342BIrnUqASyehOgzR5pKiMIQR3mW1OSXUz8hMXmRiPgnh1gZBBL PO8MeI6+ClN+QWj59kN0AlhuIZ1NUHPUaY0MUWVQWjpBMIXI8ImwdU8h9Fx1INeMlepH eu9v2Roa6bbDyAL00DWlhLYjZ/Lb5bG1nAI0Oa9ntwhlNj01mz4aClDk2BPM7PwiJTeZ wsNCmEgdDPeQTNAqWp/0VJQWaCM8ZnPxMQHaeDrF8QiehMTrVSL7JTIUufhp2pR+Arp0 12GlThUYiAZQzspLsWYKWxeeynYfoADhCn1a3klvHHDtItjotjNikP+pAQmYdOisDfLm UHkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742321331; x=1742926131; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=G7OCX1yKlYZNI20PjphESfy0gUOoHLlXTkA6fT3Kxfk=; b=loQZStUfEM7+qSZORMUUdwoNaELv/H3PFUKYFFMoAfRukVkkvKNr8EOn1TfsDGfwpQ P6UxZavOFu93YvMKsmKhfRd3L6FzqR5jW9dBHutT617FjwXIJVJImmawUnqAvo1rgMMb gKt8U9gnCi894fEhr0OJPa84wiQFbxMqaSUlSJVBADZ9oRpkZ0aeab8Xsdnpk8amI4Jk XHGezekc9DFQDR4ENrZV4Vuz2JpDFuniX8q1poUodi2JSH6xU5BNniJxNN15lEWDtRZ9 T2NnPhyUvbvc7oUvPM9ZzWDPjIuWdyM+Z9rjmulys1Lbkbyc6QI9cze7maDrVVBh1JF0 3eLA== X-Forwarded-Encrypted: i=1; AJvYcCWGmYFCwmB0q8zNRKowUeKli7Y6TMVWaepxRX+l0T8aXM64xcRpCQiF9zLVxDUtW6nS8Rv1ZccJ+Q==@kvack.org X-Gm-Message-State: AOJu0YzB2+uXAb4YbCMp9PRoM+DMtY921Jp8ZsxNGjaVm7Pc0SZAftWJ vNcu+w9rcpCHI3Rs8BbD6FfPF0gVZiaZCUdS4WC1YSMYAgwZlyjtvsmQqEp8wSqCwzVXUEDxZmx 8WyoB65Wd4vzZfS0WqhfSWqWPRDevFtpsMUo= X-Gm-Gg: ASbGncuWjNqkV3oaRRPIN1uooB8lKJkZX/e70nUx+QzlkWTxCv4KWhDYTDfkoZaetAG Y9NYqWStC5tWj4jQQ64Ma9sGzBLaq+X7C/GhwV0UC6eODizWtdux7ahi/KPBd6YH1nVGr3MjImO XKGoRJljxxLUSRXv+xT8FYyGud3g== X-Google-Smtp-Source: AGHT+IH0vggHppScZCf262EwL97fBvAT7RGb2ynWAXkwsyz/OXUomdAPvswEAEnPF4jr0T5cieKvoXHAg6sDQK0Oeik= X-Received: by 2002:a05:651c:505:b0:30b:c479:4017 with SMTP id 38308e7fff4ca-30d69742254mr173921fa.8.1742321330848; Tue, 18 Mar 2025 11:08:50 -0700 (PDT) MIME-Version: 1.0 References: <20250318150614.6415-1-shikemeng@huaweicloud.com> <20250318150614.6415-4-shikemeng@huaweicloud.com> In-Reply-To: <20250318150614.6415-4-shikemeng@huaweicloud.com> From: Kairui Song Date: Wed, 19 Mar 2025 02:08:33 +0800 X-Gm-Features: AQ5f1JqnyABzhttE19pInfVd8iC_7wULguYma4htQSYtZmXUmqCnfkSDP3pDTeA Message-ID: Subject: Re: [PATCH v2 3/8] mm: swap: use swap_entries_free() to free swap entry in swap_entry_put_locked() To: Kemeng Shi Cc: akpm@linux-foundation.org, tim.c.chen@linux.intel.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam07 X-Rspam-User: X-Stat-Signature: uruxxj8i6nkd6tu3qyciwuwptgdq6p1i X-Rspamd-Queue-Id: 0CC85180013 X-HE-Tag: 1742321332-758143 X-HE-Meta: U2FsdGVkX1/jgbsVR7KNInPVcNQweMnDt+BSTyr7feXFytaJl2Vj5dSAhIwvAjPftRWb1GDum/F/qzKwV8kxGC9ovmTptyi7CqFlU8q1/eeY64RlkaI+QDpR5sR81m0mT1su7SgE/V/FDi1hQ0P7O6ZlrbHDgl/5XFlYD0jD+G8j9vUQnhwdqB8WY2OyEVpD92mVp/uqA8ASQyGAMvHpJe2n9Abd3w2JBmtFWPzgNJPASgusPfgDiFbcSG7y3V67t+na5s7SIplhIsSUmCjQjP/acBZLsZhrvkpORT9TAXzcfBuIITel6z+Qx2lw6+Z/vko3LHaizap+MKi/OSnDJaeazNPtHVlzdkiiQS/zhpFBlmIchMtDsNtzEAV8jlAYf0LPjDs82CGKEFhcoHSSvU1MU4DnljZ3tgjOYNolsFo/EnkYP1TIjLRbM2AOYnGCvfpOTShWjAD75AVjKev/6CDk2OMT0mOWAPVKzkBLXlCstJU8VxmxiON9E0fZTAIFe25OJdvg1PhuL19Hs5gIt36/c1PSCFgA+1fE5reI4+h9w+wYC6zg3MFkqeTUHWYgSVy2WomEZxASKOHCwMPe9mUTNvOIYZOJx0Kq2eTeOtz8NhOD/sdQyw+oDAOkqHTSZPSBcn2Y5srtLFCDKNq1Whk/PO0UHMlezhpa6755EZjV0D1PB5DXZLjGtWuWRWmKnkytv8eA5/fZL0WgKJP0XEg6ttIhNr2E2fn2kNYrhFAne8xIH33ATDCBTfNY+gxWl1PP6OSx0hOSNQqUO0ZzoEgPYQF1OAvH0KON3h8FwEb0fbVHd2cXH0mwSvmCp0ICoZTaSYxGTW64i+atQZa+Yn0G8Bds19yktulmxeeXD4btEHx6eviDX6IzP6lCZAM68noU5lU6qy18h6uEEAciYqRZG5SiSqFwHtcFO0OR7d/U6BWcgy2qEPhoo9kcMAJAlGTP5Em+2kzQZVy1hsI X72YVFIz WO5dlJA2HH7S5g6lO0Ab/EZ+VML4wSiXZleJMvacwYHdcKLeYxnj24G4gdo00D6u/xu0jWGDya7cJuQ7bjWzmCNl2vO/tH3nzZNB2EdYKZfGF3OgViklgtIxG1sAHAZLuiz72ik69x/BvheoWhWEwHz7EkJ+DvFUK/t5rnfwTsSL0hgp6ux9AuIYd1PYmPvSltTgwkuuoMMnoBHdo0GDo0I2o2eolyg8m2RCW/NqNMx27zR4GWwaGL1eSWt1SysQXaZS+LNEO7hQ7HF3Xaj8zY/N4/SFdDJ9XJ1MlhWnDNoaKwXfHnSXd8cKSLkorqNW+tZe6xC6b90tglpl9SjefGCsnYUUW3r38OW0eAWcRxh5Oeyn5R5wIUXn4i1jwQuloNRx+SLNgpJpjkMQShYVttaJ1ta3rkdxKwYglUHpuC0ywcbiRDyDy29Lerg== 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: On Tue, Mar 18, 2025 at 2:10=E2=80=AFPM Kemeng Shi wrote: > > In swap_entry_put_locked(), we will set slot to SWAP_HAS_CACHE before > using swap_entries_free() to do actual swap entry freeing. This > introduce an unnecessary intermediate state. > By using swap_entries_free() in swap_entry_put_locked(), we can > eliminate the need to set slot to SWAP_HAS_CACHE. > This change would make the behavior of swap_entry_put_locked() more > consistent with other put() operations which will do actual free work > after put last reference. > > Signed-off-by: Kemeng Shi > Reviewed-by: Tim Chen > --- > mm/swapfile.c | 23 ++++++++++------------- > 1 file changed, 10 insertions(+), 13 deletions(-) > > diff --git a/mm/swapfile.c b/mm/swapfile.c > index 0aa7ce82c013..40e41e514813 100644 > --- a/mm/swapfile.c > +++ b/mm/swapfile.c > @@ -1348,9 +1348,11 @@ static struct swap_info_struct *_swap_info_get(swp= _entry_t entry) > } > > static unsigned char swap_entry_put_locked(struct swap_info_struct *si, > - unsigned long offset, > + struct swap_cluster_info *ci, > + swp_entry_t entry, > unsigned char usage) > { > + unsigned long offset =3D swp_offset(entry); > unsigned char count; > unsigned char has_cache; > > @@ -1382,7 +1384,7 @@ static unsigned char swap_entry_put_locked(struct s= wap_info_struct *si, > if (usage) > WRITE_ONCE(si->swap_map[offset], usage); > else > - WRITE_ONCE(si->swap_map[offset], SWAP_HAS_CACHE); > + swap_entries_free(si, ci, entry, 1); > > return usage; > } > @@ -1461,9 +1463,7 @@ static unsigned char swap_entry_put(struct swap_inf= o_struct *si, > unsigned char usage; > > ci =3D lock_cluster(si, offset); > - usage =3D swap_entry_put_locked(si, offset, 1); > - if (!usage) > - swap_entries_free(si, ci, swp_entry(si->type, offset), 1)= ; > + usage =3D swap_entry_put_locked(si, ci, entry, 1); > unlock_cluster(ci); > > return usage; > @@ -1551,8 +1551,8 @@ static void cluster_swap_free_nr(struct swap_info_s= truct *si, > > ci =3D lock_cluster(si, offset); > do { > - if (!swap_entry_put_locked(si, offset, usage)) > - swap_entries_free(si, ci, swp_entry(si->type, off= set), 1); > + swap_entry_put_locked(si, ci, swp_entry(si->type, offset)= , > + usage); > } while (++offset < end); > unlock_cluster(ci); > } > @@ -1596,12 +1596,9 @@ void put_swap_folio(struct folio *folio, swp_entry= _t entry) > ci =3D lock_cluster(si, offset); > if (swap_only_has_cache(si, offset, size)) > swap_entries_free(si, ci, entry, size); > - else { > - for (int i =3D 0; i < size; i++, entry.val++) { > - if (!swap_entry_put_locked(si, offset + i, SWAP_H= AS_CACHE)) > - swap_entries_free(si, ci, entry, 1); > - } > - } > + else > + for (int i =3D 0; i < size; i++, entry.val++) > + swap_entry_put_locked(si, ci, entry, SWAP_HAS_CAC= HE); I'd prefer you keep the bracket here for more readability, and maybe add bracket for the whole if statement, just a tiny nitpick so still: Reviewed-by: Kairui Song > unlock_cluster(ci); > } > > -- > 2.30.0 >