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 9EFE5E77188 for ; Mon, 6 Jan 2025 20:52:44 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D0CFD6B0092; Mon, 6 Jan 2025 15:52:43 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id CBDC56B009E; Mon, 6 Jan 2025 15:52:43 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B377A6B009F; Mon, 6 Jan 2025 15:52:43 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 8D01F6B0092 for ; Mon, 6 Jan 2025 15:52:43 -0500 (EST) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id EF219AD9BE for ; Mon, 6 Jan 2025 20:52:42 +0000 (UTC) X-FDA: 82978225764.01.0C17E25 Received: from mail-vk1-f177.google.com (mail-vk1-f177.google.com [209.85.221.177]) by imf08.hostedemail.com (Postfix) with ESMTP id 2917C160016 for ; Mon, 6 Jan 2025 20:52:40 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=QvwfqiGB; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf08.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.221.177 as permitted sender) smtp.mailfrom=21cnbao@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1736196761; a=rsa-sha256; cv=none; b=VkfGU8DKbjp2ao8j5ImjEQtiIuP2De66ogIf4d2aSoXeW5kO7m32U7o+sDCtop+3pKp2Et 6qUigOeKI6cME9mRKKPwfh0fb92N/25QkbW8BXELn8+vqaLMnI/+Yh3VNlhmygjAFonXWR jBOlNkRfrgejlJqIpeSpg9h5jfPgfvw= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=QvwfqiGB; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf08.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.221.177 as permitted sender) smtp.mailfrom=21cnbao@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1736196761; 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=b2Rfd2Cv9eccj61P+e/MPmJwn2zXrpKlX2wizShaDUM=; b=2vAo0JqExZT+FUH+8jhXUpBV39Y33X63mHNUnP2cAdJMTAbNFq7dkxPBRC6XC32KnHvxbD o4VATS+oSTsC25l0kcWpPcfnf0Cr96rThpAPMwCl194XAd8osCcpk9eoYKZjZWY4VxFaEo vbDVXiVO1tyJGQCTYTTEOkb2wXyxgow= Received: by mail-vk1-f177.google.com with SMTP id 71dfb90a1353d-51878d9511bso4329661e0c.0 for ; Mon, 06 Jan 2025 12:52:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1736196760; x=1736801560; 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=b2Rfd2Cv9eccj61P+e/MPmJwn2zXrpKlX2wizShaDUM=; b=QvwfqiGBmCnpMPE1ovi4F/vUUzc0HIPUVX9saZt+I9ssgLkgl4gVy3iAKuFZx/skp6 RRMawYHwEHDsw5GN+LsrJPvwiuICW7uqHbwsfg5EtORKBZFhtxXwJBUW/TcXk6IAC2hV XRdwyLPHq/VwS25DrE5E2oWW1ajDDxSzm4mcUqkRTF140fr+5pNba8iMbth/sU94vYjD z7B3cR2B2yT/VGrbi339jR7eIZgl6rfZszzQQnyoLUDSiOZYb1vwbdnV1RyBDQc7dVtQ OricJQ84Ya9/IZO9DYV49PIzYjOHTZWFk3Kl84kf/4DVLInDRQGrkBs/MReHhZSS1Rjj 3+TA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736196760; x=1736801560; 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=b2Rfd2Cv9eccj61P+e/MPmJwn2zXrpKlX2wizShaDUM=; b=tcgsaHHj45QvK76GfkFU/11Ka96lryvAfN0zDxZT+lu0o8aX1eSvEmdHj3cVp6k9Fe ABJb9aTtvQwZu/7IxSPohelsBcMd/PSq6RkkXLD/ZUQEY0Z+YIgyn7UzbedoACdxVEgo MyYTmZdeB8LoOGCq7Hkw7FDUHcL5Ffi7ZZuitfopuxG+IgZsB8DCQqTDXUSyMrHuqZa9 I8husiotlTcL2ekyfp4tsHW4eX/b/h+wKrr0RDywJH++VRHHToEQQWQijqLCJBxIG+aQ oWQ/ZznH39xfL85KtRd6eF1N7JyYAI47hpsOmYejey0YZAwMvwqh0Acrff5eGoVjhYhv FLKg== X-Forwarded-Encrypted: i=1; AJvYcCUmP7YnTh8VDicTIVgf8wR0xoZW64A/ZmNJijlLaAnC6b6/8UYSFb+j0gpsPfwtTpslDwxXJlBySw==@kvack.org X-Gm-Message-State: AOJu0YxslLfwNIM/IzNnYJmLHAXz4DiFKlp2b4mPcZZTh6ixdlYwaaTC 0o9lE7Z2FQYwzT+qQH3Tai5Wtl72bCGATEAnMUa42Uy11z8mlF0gOIYksAfhNhWZUA8lad2ilMc X+l608YnU31nAu74gmxEhB09EOmQ= X-Gm-Gg: ASbGnctdrPqr/BRkELDsRzMbZ8A4zIsa9DgU98WjdI05C15JNZ/pvXih4Ym0OeWc3Iq 63pMKXSC856XCQcSr1pDjzmftXg83jcsiNs6acrHi5h4zuG+Qs2VSaZd4hBex33jOyLoF3RO0 X-Google-Smtp-Source: AGHT+IFLiLwyTBvPtX7l0P7EQ8rMXvaqE9UNBWkLkHbTzS/r3LHIOdCrvyM+xTKCfcE6uvzj056mhsUlEnnOYlPNiIk= X-Received: by 2002:a05:6122:8c07:b0:516:157c:a72e with SMTP id 71dfb90a1353d-51b75c308b3mr40676401e0c.3.1736196760165; Mon, 06 Jan 2025 12:52:40 -0800 (PST) MIME-Version: 1.0 References: <20250106031711.82855-1-21cnbao@gmail.com> <20250106031711.82855-2-21cnbao@gmail.com> In-Reply-To: From: Barry Song <21cnbao@gmail.com> Date: Tue, 7 Jan 2025 09:52:29 +1300 Message-ID: Subject: Re: [PATCH 1/3] mm: set folio swapbacked iff folios are dirty in try_to_unmap_one To: Lance Yang Cc: Baolin Wang , akpm@linux-foundation.org, linux-mm@kvack.org, linux-arm-kernel@lists.infradead.org, x86@kernel.org, linux-kernel@vger.kernel.org, david@redhat.com, ryan.roberts@arm.com, zhengtangquan@oppo.com, ying.huang@intel.com, kasong@tencent.com, chrisl@kernel.org, Barry Song Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Stat-Signature: jyxg1yj56pujfyojussccg5q536u794x X-Rspam-User: X-Rspamd-Queue-Id: 2917C160016 X-Rspamd-Server: rspam08 X-HE-Tag: 1736196760-984071 X-HE-Meta: U2FsdGVkX1/qAJs336D4HxOIIisjHjcXdmbJGZX/AE4i5nwSSwKwibrErOr1dhvcRlQ4fcOhjxq/nysTnWIU8QQapODhAIPMAPMyETh474/SdALce6OsdgFkE/DoOOi+G0J6+WogJ0dcQycuqMySU5Wf/F3milVUntA9ijiD/fNGXDplB8J6wG/A9BkBYSwFInIhn072e6bOSdELeZ9KYLmSeNRodDxoUq9tUotdGllXHXkXWx+IcBWENLQ241oJXo2+lgkH0COR59MCQnjcha3hDqbFbkWE0Q/iwJpLB/aGJxnPsDIazF7MaMTLprKZ/yx5uBASHEjzbObDIiiYYVle/baDDp8ETkeOeZBfFd5dE6M5e4BW916Fa+eu5Sgwv7SDjkGDWWGJTBT08YcDrMHoIw5jOTKAPB8cFmlfYQ3tqRoQ77OCGRVUEnMF8kBOkkqBNPzXH/lOb17Pg5umzeP3pX47WNEq9Eo9baaTw7w9OK5Oz7irF7WEXiz72Pp+zhLnOMn2VvsyUPrsa67ikFPGfZfM+wPBr8GzijUM3JY9GC52r34iZFBatojHkSF/liVDHOysbf2OFzYikZb7U1iXeq5dSzYnEOKWXyVkpOnWZkc54FhB2fHjagy1yezGMls3D3LjpiUI7YzJ1UJc2GnarZqhrDWIN1wTLxh+2T+WYk4/+DoESHG3tGQy/8lqP0A/cYJ0qIrEidL2DUpS5Oi2KMf5JrWnJWaPrU5E+Ph+4ITCAiKuYDp0sj95/MrxiInzZMl76WmrAMLwEXx7P1qpSoF5CrDhaj2TgdD0UHFbN8O7S9VjM+cFKO3TkUgNmaL1jLhuazCRljxhWwnK+gmhZGWeS5fyIa6drt7yb98idKwSu84SvOrUCB7zIm88D8e2NeiYSeEdzcIAsfUI0IbvCVtfnKRdRYa57ey7DdXzzZK6s7kmHuQHCjCJZ38V+OEKMyQvNar9l7z32uY fJZPw2NF TPg6MX+X5JNSBgn67wj1p+Sa3c1LnIO+3UPRljz8ZrASjxm0GSC3nSTp2W4Kz6zlUMtX1EygCxGALbtEJ2woDuoDCD0SrzSFsatzwIZeh3VNzS8EKkVt094/llEkipAIARVqPhA+Zsrh+0ZtPSvkfjrvqRJk9nXFncG52RdugOjZo56WlEyqRO0yZu2uRL4TjzUwXPWEFa7geALE1hpPI5QozXeLT6i+ipJuo6pVR1q7JDQkkN48TtckCKdPTymb4dQ3/FkqegqojnflNM/FvdVtQgVFscI2zlzoEit7sX1yBFoQGsaJXcYPBPf/PGRgSn1qZaHTK8JNfSrBNB+nCsQ5q25UQQPRCgNfMa25kekyiLBjH6k7JF1lAWaFRZ9pi9Ocn1YrOl5a78+Lh7Q5Xzr2Qg0hp+cx0bNpdKJxA1y7WT21aSh9OUaTVkYWRab2Pna+gPVy4/PXEtk3F8atmDuxxrg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.034928, 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, Jan 7, 2025 at 3:40=E2=80=AFAM Lance Yang wro= te: > > On Mon, Jan 6, 2025 at 5:34=E2=80=AFPM Baolin Wang > wrote: > > > > > > > > On 2025/1/6 17:03, Barry Song wrote: > > > On Mon, Jan 6, 2025 at 7:40=E2=80=AFPM Baolin Wang > > > wrote: > > >> > > >> > > >> > > >> On 2025/1/6 11:17, Barry Song wrote: > > >>> From: Barry Song > > >>> > > >>> The refcount may be temporarily or long-term increased, but this do= es > > >>> not change the fundamental nature of the folio already being lazy- > > >>> freed. Therefore, we only reset 'swapbacked' when we are certain th= e > > >>> folio is dirty and not droppable. > > >>> > > >>> Suggested-by: David Hildenbrand > > >>> Signed-off-by: Barry Song > > >> > > >> The changes look good to me. While we are at it, could you also chan= ge > > >> the __discard_anon_folio_pmd_locked() to follow the same strategy fo= r > > >> lazy-freed PMD-sized folio? > > > > > > it seems you mean __discard_anon_folio_pmd_locked() is lacking > > > folio_set_swapbacked(folio) for dirty pmd-mapped folios? > > Good catch! > > Hmm... I don't recall why we don't call folio_set_swapbacked for dirty > THPs in __discard_anon_folio_pmd_locked() - possibly to align with > previous behavior ;) > > If a dirty PMD-mapped THP cannot be discarded, we just split it and > restart the page walk to process the PTE-mapped THP. After that, we > will only mark each folio within the THP as swap-backed individually. > > It seems like we could cut the work by calling folio_set_swapbacked() > for dirty THPs directly in __discard_anon_folio_pmd_locked(), skipping > the restart of the page walk after splitting the THP, IMHO ;) Yes, the existing code for PMD-mapped THPs seems quite inefficient. It spli= ts the PMD-mapped THP into smaller folios, marks each split PTE as dirty, and then iterates over each PTE. I=E2=80=99m not sure why it=E2=80=99s designed= this way=E2=80=94could there be a specific reason behind this approach? However, it does appear to handle folio_set_swapbacked() correctly, as only a dirty PMD will result in dirty PTEs being generated in __split_huge_pmd_locked(): } else { pte_t entry; entry =3D mk_pte(page, READ_ONCE(vma->vm_page_prot)); if (write) entry =3D pte_mkwrite(entry, vma); if (!young) entry =3D pte_mkold(entry); /* NOTE: this may set soft-dirty too on some archs */ if (dirty) entry =3D pte_mkdirty(entry); if (soft_dirty) entry =3D pte_mksoft_dirty(entry); if (uffd_wp) entry =3D pte_mkuffd_wp(entry); for (i =3D 0; i < HPAGE_PMD_NR; i++) VM_WARN_ON(!pte_none(ptep_get(pte + i))); set_ptes(mm, haddr, pte, entry, HPAGE_PMD_NR); } > > Thanks, > Lance > > > > > and it seems !(vma->vm_flags & VM_DROPPABLE) is also not > > > handled properly? > > > > > > Right. Thanks Barry