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 73682E7716E for ; Thu, 5 Dec 2024 20:49:09 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8708F6B010E; Thu, 5 Dec 2024 15:49:08 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 8224D6B0119; Thu, 5 Dec 2024 15:49:08 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6E81B6B011A; Thu, 5 Dec 2024 15:49:08 -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 509BE6B010E for ; Thu, 5 Dec 2024 15:49:08 -0500 (EST) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id CBD721C8484 for ; Thu, 5 Dec 2024 20:49:07 +0000 (UTC) X-FDA: 82862094672.24.81E130D Received: from mail-qv1-f48.google.com (mail-qv1-f48.google.com [209.85.219.48]) by imf02.hostedemail.com (Postfix) with ESMTP id 70D758000F for ; Thu, 5 Dec 2024 20:48:35 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=cC4oGQTC; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf02.hostedemail.com: domain of yosryahmed@google.com designates 209.85.219.48 as permitted sender) smtp.mailfrom=yosryahmed@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1733431738; a=rsa-sha256; cv=none; b=b3XXaBodzcT0zG0OL2D/2V6TjbMGRfVoo6VaVP8iaGUIokLUcKclE+UGTf/92aiOmcj0cb 77bUvs6JFzBwDxpeloK4ZWJ6lYhgePjXILz5MOOs8tPbI3V1K0HgFxO4jquJGzFyYust83 I4Xj+ev+SqToOPtmKtHBk3DLxnmkbeg= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=cC4oGQTC; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf02.hostedemail.com: domain of yosryahmed@google.com designates 209.85.219.48 as permitted sender) smtp.mailfrom=yosryahmed@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1733431738; 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=xJ0AOBeo7g3/i5v/kE4t8H/hzPtN20X0kgA3rN1iWCY=; b=henORv2bpQsRKk0izjpU8R05dEnZlWyPVHCxXtW1XnFKopW/y7SG2ECZaIruxeU2m0EFm7 eqrHbIpmQJyU2ScszcRJrm30LiPD2+lHUq2GHxBTStXgXvvpZ8jbf9IQ3J3IWLLlqTVxdq ZbuKFKm8iwBYNkJgsoZMPiBUEfsZ31w= Received: by mail-qv1-f48.google.com with SMTP id 6a1803df08f44-6d882699271so8379676d6.1 for ; Thu, 05 Dec 2024 12:49:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1733431745; x=1734036545; 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=xJ0AOBeo7g3/i5v/kE4t8H/hzPtN20X0kgA3rN1iWCY=; b=cC4oGQTCdAo3yIB7Szg3C95UiyBnvBNlLM2cRE+WouC3OKwPNJo6HV5fRwfbU9GeQi rqAgkDexZbPS9o3WnKTUKW/IhEodR4SdDKgVYGh1GhXayJzN4+I37TuCJnDvz7hAjXuU rIuBzYUrYnO4u/dvB5q/+LE7/G7yvMvTi2S3D8U83s+nXkbfjbXklwLz+vHKGaucy/IS +oWH6Qh9PHpxwX8dej5JwJkbTloSnJTMQDCUEnaFrLLXIF8McOEOsSsrYPwONXbcUQhb EeFOaFnCr6kzuF9wTfmO1ysV9jwdX8HABOxnKnF5zN1WiCn7Tc2VCQOojop2d0v/9ywL 8ixw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733431745; x=1734036545; 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=xJ0AOBeo7g3/i5v/kE4t8H/hzPtN20X0kgA3rN1iWCY=; b=RRhXYUoov9ageAs7wUQ3CS8XkINvG/rrpfiOmaL/Y7tF/LWvInGlNOdBsBEM5fjvXA 9x4U1tNwPQFcaQ9tinXYxq8qhfpokBhrVi9yQyyfxHFBd9R9PR+lXOGQ390bUSxfsq63 fuCxv3xQpC0f9MK21B1SZHmZAF45e+fjt7WQByirWq1fG/53GJqG9M/JZuBniKbHr0KQ HmiXiAyLHtC6zk2iWPKSDwCXPYCBLFWYLdBP6nRp9iEHB9BHMRbOMLcNQWNkkv1q3X4t XO4p+6NW7RefarzXfe1pIPsOhjM+9dyFDfHdSUbekga1pwwXL4+e2OfEoc3ttPP9Z/+f lDFQ== X-Forwarded-Encrypted: i=1; AJvYcCUP3xBI+VXoo0RAYjS3H1SRtCUdUfhVGuDns71eQ0rZ6QXU0q62kuKa6NKVRR+iU9JUkIM7486c+w==@kvack.org X-Gm-Message-State: AOJu0YxJnMUsy1HR5gej8K7tkSCxqa6+tLaooAxA/sIxfWs6Ii9VJfiD LoixEOKJlYlvDojy0OpdmYOHz8eyNAgi52AXyXrd0YnkiufUKR4mnrQ2Bcbc5v2QVH7oy7Tmpi3 RhdwS7kxbhxrzU0D1CDsHv0f+kLlvCoboOVFK X-Gm-Gg: ASbGnctJyiAdz4vb7eUFrX1RJ5vECG/SIlZD33+wCPO0qhMXYT9jvG2UzHvQdicdK1C b5GNuaV+cqQ3Gf9AgarJtlhvC4xAP X-Google-Smtp-Source: AGHT+IEp/bZDVUnX9PK/SrZE5TsB07x9bDs8w0nJ0uG7klfMZYUChdd3+Ii9Ezzm7kRYRRN8AHrIP5XBr04cKuzyhgU= X-Received: by 2002:a05:6214:1bc6:b0:6d4:3b7a:313a with SMTP id 6a1803df08f44-6d8e71a7e00mr3612176d6.32.1733431744877; Thu, 05 Dec 2024 12:49:04 -0800 (PST) MIME-Version: 1.0 References: <5ba477c8-a569-70b5-923e-09ab221af45b@google.com> In-Reply-To: <5ba477c8-a569-70b5-923e-09ab221af45b@google.com> From: Yosry Ahmed Date: Thu, 5 Dec 2024 12:48:28 -0800 Message-ID: Subject: Re: [PATCH hotfix] mm: shmem: fix ShmemHugePages at swapout To: Hugh Dickins Cc: Andrew Morton , Baolin Wang , linux-kernel@vger.kernel.org, linux-mm@kvack.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 70D758000F X-Stat-Signature: nbnqms1ccqqycrdjjt8j7b9yczx17njt X-HE-Tag: 1733431715-627081 X-HE-Meta: U2FsdGVkX1+TDBuY2AL3nORPBCtvm7Y16KviQmDixjgYRaIUnuTS0IANjNgpvMwTj+GJpkbiWUhSqJi35UsJFNPidsbYoxXtWX72TX4BTO8+bE/m//TUtKZk2+PW12KTXkLpUdSLnXuHeEBdGcbYnb9XIGBZ6dnEwbIjYiPCYcIxefAipc9aGL60M7JpaLscFzjTaWcLtxPWpDaGwgcR9IflkIuD0d/QfmVMNkDcexa1LX2N/2IWa2jAh8hR8XIr6NAGn3oBEMfRDb9t4n8Gy5lvfTTJZMlBhpxheHgyyIoLAYb3F6JLwSqAuDJs2+BPSnFcUNmevF8ai6t5Ln24KFxIovjw0dz8PdZgCZ6i0ts3poYQUHmE80rbAJx23+0Qaf5L8WPjKp3neq4GLldkyRSzQGS5f3KEOlmJ5YUjor4Ioexyj2xdEc5nPhWSiNCjbkhvZkxtcSiKVgskPvKS6DbmRu3TyMe8xN9bsXH40WlgVrIOZZfVn8jVeokH8HPLzdC4lFZTgMdyU7xVl+S3j+RdNPC9ofsQ7RTqoo4Xmkug6KJ3BvfCvrj9Ba2M9cKhgCkoLk9ZNrvty1wNiP9JZdP6lwhzXI1IuggRBVbtoB/d0iaauK0VVmVEkcie8au7IAXaije9gCF5OUxGthPbPRfIkB9rjCuvtW3smzkugqDP8aw7AvJP3r+n2VxhGR0Bwk4aWo55hBnG2zlpUZQBs6dThaXirkNVe828Gdc7oaMWY3B/f9/HMXanq5yTY3NA/qNeY67QtsPtQt1itg+xWzqKrsIob4z3eTrxIfQT0MA9r+CGQpJ9Q1K4gKM2Erq1TTgARMTW8uYOa1rJ6/GvcDUNdeqX6C7QwE5rQH+BLj7Tl60le+0zGk3V2++wVDbhZuVgHc0byiEyyuOH0U6qqEF7mnmazSoccLYkXeFNy/erPSktWJDazYsFV3VKhwpLYzd1jWOvBDZ9UhTuA+g k6Ftwbt+ JVvhSZhfKuqZA18kNb26uiEjUjBve4Up6K6Z3zNENbPDEvhxwqJ8RZytM/PCf95YVIjHzFbS1SrbHk3KegmxKHdmjHS1HhyZHY4QBc3FJlOye+8EqZbzmRCDafw/bR5vONaHuuHiR5ARXoct3heafVWdxFegbpATPa5IE80DRjQ6mrtEamQYFrbzoFCd7ccblAclH5WOfOflNbf+VsfbLeBukQy96c9XXQ3RD+OGeRQH97h0= 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 Wed, Dec 4, 2024 at 10:50=E2=80=AFPM Hugh Dickins wro= te: > > /proc/meminfo ShmemHugePages has been showing overlarge amounts (more > than Shmem) after swapping out THPs: we forgot to update NR_SHMEM_THPS. > > Add shmem_update_stats(), to avoid repetition, and risk of making that > mistake again: the call from shmem_delete_from_page_cache() is the bugfix= ; > the call from shmem_replace_folio() is reassuring, but not really a bugfi= x > (replace corrects misplaced swapin readahead, but huge swapin readahead > would be a mistake). > > Fixes: 809bc86517cc ("mm: shmem: support large folio swap out") > Signed-off-by: Hugh Dickins Reviewed-by: Yosry Ahmed > Cc: stable@vger.kernel.org > --- > mm/shmem.c | 22 ++++++++++++---------- > 1 file changed, 12 insertions(+), 10 deletions(-) > > diff --git a/mm/shmem.c b/mm/shmem.c > index ccb9629a0f70..f6fb053ac50d 100644 > --- a/mm/shmem.c > +++ b/mm/shmem.c > @@ -787,6 +787,14 @@ static bool shmem_huge_global_enabled(struct inode *= inode, pgoff_t index, > } > #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ > > +static void shmem_update_stats(struct folio *folio, int nr_pages) > +{ > + if (folio_test_pmd_mappable(folio)) > + __lruvec_stat_mod_folio(folio, NR_SHMEM_THPS, nr_pages); > + __lruvec_stat_mod_folio(folio, NR_FILE_PAGES, nr_pages); > + __lruvec_stat_mod_folio(folio, NR_SHMEM, nr_pages); > +} > + > /* > * Somewhat like filemap_add_folio, but error if expected item has gone. > */ > @@ -821,10 +829,7 @@ static int shmem_add_to_page_cache(struct folio *fol= io, > xas_store(&xas, folio); > if (xas_error(&xas)) > goto unlock; > - if (folio_test_pmd_mappable(folio)) > - __lruvec_stat_mod_folio(folio, NR_SHMEM_THPS, nr)= ; > - __lruvec_stat_mod_folio(folio, NR_FILE_PAGES, nr); > - __lruvec_stat_mod_folio(folio, NR_SHMEM, nr); > + shmem_update_stats(folio, nr); > mapping->nrpages +=3D nr; > unlock: > xas_unlock_irq(&xas); > @@ -852,8 +857,7 @@ static void shmem_delete_from_page_cache(struct folio= *folio, void *radswap) > error =3D shmem_replace_entry(mapping, folio->index, folio, radsw= ap); > folio->mapping =3D NULL; > mapping->nrpages -=3D nr; > - __lruvec_stat_mod_folio(folio, NR_FILE_PAGES, -nr); > - __lruvec_stat_mod_folio(folio, NR_SHMEM, -nr); > + shmem_update_stats(folio, -nr); > xa_unlock_irq(&mapping->i_pages); > folio_put_refs(folio, nr); > BUG_ON(error); > @@ -1969,10 +1973,8 @@ static int shmem_replace_folio(struct folio **foli= op, gfp_t gfp, > } > if (!error) { > mem_cgroup_replace_folio(old, new); > - __lruvec_stat_mod_folio(new, NR_FILE_PAGES, nr_pages); > - __lruvec_stat_mod_folio(new, NR_SHMEM, nr_pages); > - __lruvec_stat_mod_folio(old, NR_FILE_PAGES, -nr_pages); > - __lruvec_stat_mod_folio(old, NR_SHMEM, -nr_pages); > + shmem_update_stats(new, nr_pages); > + shmem_update_stats(old, -nr_pages); > } > xa_unlock_irq(&swap_mapping->i_pages); > > -- > 2.43.0 >