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 71DC8E77188 for ; Mon, 6 Jan 2025 20:56:33 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D84368D0002; Mon, 6 Jan 2025 15:56:32 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id D0C848D0001; Mon, 6 Jan 2025 15:56:32 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BADF48D0002; Mon, 6 Jan 2025 15:56:32 -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 995488D0001 for ; Mon, 6 Jan 2025 15:56:32 -0500 (EST) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 1F10A1A0353 for ; Mon, 6 Jan 2025 20:56:32 +0000 (UTC) X-FDA: 82978235424.24.713D0DD Received: from mail-ua1-f49.google.com (mail-ua1-f49.google.com [209.85.222.49]) by imf19.hostedemail.com (Postfix) with ESMTP id 5272D1A000E for ; Mon, 6 Jan 2025 20:56:30 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=NvGV6NNz; spf=pass (imf19.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.222.49 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=1736196990; 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=DiqohGVrJhuzrDGTEf8iJUOT0kiba9U3wDyHV7/Xg5E=; b=vr7jkelPpWHi+1LQYxiWMwb78JOhAz7Y2eAV5YJBloEKhJNl9Z9Vae1fEOC6SH1fnyOUvA WMT4RCnqVwazp0qHYd0kT0Z2IwP7w242FypIL0ZytkydjoHiYFP/lfI22w6+R98yE1NfB9 3vlgsaRiKftbsI8KOx5oGsmL0hVa6aw= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=NvGV6NNz; spf=pass (imf19.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.222.49 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=1736196990; a=rsa-sha256; cv=none; b=M0KZ+JOW08y+nCpOvVelWtO+4NYi3rl4CZPLdIEG3xlJSNPLIwc0PLGZCAtImsuau+Wwgy eCwYQMYPSP/cSb+PRERwUjINcxY1DNkZ8KMqRmxSqlA14AVnBLslZOQ5vf5t9of8cklrcj orwdyU4/Iv281aXtPOyKdMLofyHQTQM= Received: by mail-ua1-f49.google.com with SMTP id a1e0cc1a2514c-85c529e72bcso2590275241.0 for ; Mon, 06 Jan 2025 12:56:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1736196989; x=1736801789; 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=DiqohGVrJhuzrDGTEf8iJUOT0kiba9U3wDyHV7/Xg5E=; b=NvGV6NNzZCtzVL+94riIFyhRWF9VXtTwjZ2s3bGep8xv4mSzSWsUY95D+hRo363DSO UoPGbZZTDatBEgZA7CJYBhVM0IY641onCe8wiyUVP1nKkpl3hlmndlbZ32IcTc4d/UJ6 ZcmfixVgm9tjrM598hEOWh/r2Iw/VGq2LkMEurkPFK79QcMTjgZczc7U2k5jyZdTvuMT l4b3twIXTPeeMZ1QrwqAIlvPyEBjejP0sI6x7ko8GxbQXT6LmENCkgFlc2nYmgf34Mea GBPftoh+I4Dj3qhDykPirG59zMlsQPkIMoCCmLZn6Yc3MMwiOYh5DXZQwtoBTgMzUn1f Gujw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736196989; x=1736801789; 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=DiqohGVrJhuzrDGTEf8iJUOT0kiba9U3wDyHV7/Xg5E=; b=movVnGJ6obP4EULhCTlNqrNGQaKLg5FQ8vSJ+LnQi7rmt485sXMaunJFmxDcutgkJv nBWafmCTwlTXRQyEpfTwgj7+02SoyPOVRkg+bIIbYxoc1AkmWyh3ee7+tItAMzRNAcol 8FMaBhRN7DPy4qYN48FrOk+0gyIxgpjau23epWQ3k/yVFZGhFAGzmHPsbuP1hMS5FWvU SF4XYT+YBYZC8xT0YeTIApzPruAXFDz3t6six1oVyyUBGLuA7pKboXUpDYc24mRZTz/Z b21HPlWBuK2WYBNLnz+V0bvbM7x0KZZzwNLqWgbdXPaM52eqoOcDVPM3t3OQw+0ks7cd I66Q== X-Forwarded-Encrypted: i=1; AJvYcCVx1q5qafEFoLb0Sy1tKqXiO5SuExVj6mBwJVJ8E+H8tc2vQ7J7PjngzM3nDQR4MDGE3RHnJrSs6w==@kvack.org X-Gm-Message-State: AOJu0YzlWF7voYQQe7Lwqw4rD7UGkhwt/yvJvELUf9NKMhrmVFHErtw0 gsNHGYK9rFrjMNM2IJ64SST5plJLF/rE2HITZH7Q/kJwh/BWBOiOFaex4yNivXq8sQrj5IUpqIK nLNXA3oSkKV4FmGFUp61oKkCsmxY= X-Gm-Gg: ASbGncv7zIctMnDw9wlmXpp18dSfSHkd2Kt0q63EV9utuckdDKqlPF9wKJYtdV7tkns NyhQ7bKK+Ag4YlKWQILwlB6pfVpm6JTwNbYWmZYO8Ne+wbvfk/6lqeq+KyA3tzMRGpLH9glN2 X-Google-Smtp-Source: AGHT+IGchQ0Bce7X1wuXttAt3aVwQiwbDDT1I62efkCM90IBmP4m5AWOgNoNmGlRI31N78EGqSjoMi4R6FPX4H90+PU= X-Received: by 2002:a05:6102:41a3:b0:4b2:7446:fc18 with SMTP id ada2fe7eead31-4b2cc4597f3mr48692637137.17.1736196989356; Mon, 06 Jan 2025 12:56:29 -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:56:18 +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, kasong@tencent.com, chrisl@kernel.org, Barry Song , Ying Huang Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam05 X-Stat-Signature: hbdk1i73mrfzm7db7yrxoj7pgkzb9y7s X-Rspamd-Queue-Id: 5272D1A000E X-Rspam-User: X-HE-Tag: 1736196990-651077 X-HE-Meta: U2FsdGVkX1//iYYCfe8TveWr1H4qoCVH+5E5Wxcs6uq3DsGnIWfQzRRGrRvnpF/LqP8pEAHW8/I+WxS5dRXWXawY3E/os4AaLjs3YDWONxTOUuQhd9tCaulX6WmMQYNIfy/3wCG7chsNyg+cOqWRa79yrojbQajAAAyMa9ipPwR6ue8raegNW9sSw4aSQEaM3SVVESjj8xoG4DSwe3KJ6kg1RMCYFH32GUOswfx55ZQMiskmWEPdfxNIJEP24GiTgBHKZokOM1Oz/1p+0zlIkyWI+M3bfxuQY05TJse/QGnnz6FGSd0jjIEaYI6lAgPuW7y5dMwSaTx9teT87KjwO/HRsu3+Tl6AVGK/7z11sRaDsO7hSL0+f6za371wMUSePfW8q8fr8fqSJZhtdX0yc4FiVp36RKwfB4uwh3eB4xwyT34YHXEzyMVWcFGIzXn8A6QQNl0dYnxC+pfbbXSUKRhqAVI8/sS5oD5pJzeaT9QDL/zEnlowkNTdMkq7zkwINCGi528+jLUsOc2qqIyn/D+9Cq2JCI19B5APkOaBqQNG9bER2A7ve24gzfJkdRFDTIvTFTG3B7O3A7UDjpCNAAnlqrTDmNQ0SYELDViXt/xepUwzjydeXLfRkFg7wC4YwNOiORi8MkRf6JlT1fuRGERfxvMJhOu9hjTR6cC2edasnyTIajMPJZ9H4i+lRNl3hRjFuDjwHsAtJeoWEIPy6JtOYMfOX/pQmKm6ZjoXvQNKmVQTrKIQk23vQ8XFb5K4V/9o3VEl4WC7q64ekRpL2JsYpL1jXFjVdhOW0CeMCKM/l8PH+UbvQy8y5rtbVzt1silE+QzZriR6w5yok0310o+Oyw1UeG/KzIbCfKTh3q7glpZzOoYv7BEMHKT7nd7kbKP7quVOIJNS/ZXr+SKc89Jx5ENlcjeET3p6m2wt06r+pbPzhIZTpcmyYTzdQCS3y/x0qHuobGWMt+pdHjT idQXoE6j 5xob5+OMKCpWbmFV5ZHjBXfMqpAGvH5F7mZZVd7DaCHJ8jcoY3W9c1d4JNf7VXebvNgU9/0VdWCHzDEJliNXJgeKmVcyjotHLLjMEKEH0sxqeVKrYrgsV6BQgz9XkNwLHE+rkhXw9p5eDskGfdM9xKBfAveX+z7tsIi+l9cKgIdsGTwZsvSeRA8+CCBEfB7uRhu+b5B/aA9koaME8NOd4TxP7ldxHaXX86+DTyL6NsDOMYqqG4w7qQcNHcxo+DH/bGT61conaa1QRQ/ZYyfmiXQSL3zGkLh3stQfja/+LT/qeJ5knRTsmZnJBYyFhTHZHT9tKY7VT0YbcCiBk318fFeHvjLLCm/TLwqJ935qkpo1MjIL4WRbV/ZFnkO17RlRc6cnZHwHmS4KxohXy9p55z3v7AnWsaEGUfnWIxVxuLSg/aiOdf9K33FbBuKQR07TpM2s+lAJ3WoCCVRLx3DImztfKgw== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000453, 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 9:52=E2=80=AFAM Barry Song <21cnbao@gmail.com> wrote= : > > On Tue, Jan 7, 2025 at 3:40=E2=80=AFAM Lance Yang w= rote: > > > > 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 = does > > > >>> not change the fundamental nature of the folio already being lazy= - > > > >>> freed. Therefore, we only reset 'swapbacked' when we are certain = the > > > >>> 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 ch= ange > > > >> the __discard_anon_folio_pmd_locked() to follow the same strategy = for > > > >> 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 sp= lits > the PMD-mapped THP into smaller folios, marks each split PTE as dirty, an= d Apologies for the typo, I meant splitting a PMD-mapped THP into a PTE-mappe= d THP. > then iterates over each PTE. I=E2=80=99m not sure why it=E2=80=99s design= ed this way=E2=80=94could > there be a specific reason behind this approach? > > However, it does appear to handle folio_set_swapbacked() correctly, as on= ly > 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