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 574C5C02192 for ; Tue, 28 Jan 2025 08:54:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DFD9A280211; Tue, 28 Jan 2025 03:54:14 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id D8748280209; Tue, 28 Jan 2025 03:54:14 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C000B280211; Tue, 28 Jan 2025 03:54:14 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 9EA72280209 for ; Tue, 28 Jan 2025 03:54:14 -0500 (EST) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 5ED1F160EB0 for ; Tue, 28 Jan 2025 08:54:14 +0000 (UTC) X-FDA: 83056248828.21.24A9100 Received: from mail-lf1-f44.google.com (mail-lf1-f44.google.com [209.85.167.44]) by imf01.hostedemail.com (Postfix) with ESMTP id 4ACC540006 for ; Tue, 28 Jan 2025 08:54:12 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="bLnVM/LM"; spf=pass (imf01.hostedemail.com: domain of 42.hyeyoo@gmail.com designates 209.85.167.44 as permitted sender) smtp.mailfrom=42.hyeyoo@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=1738054452; 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=UfydJTe7jinuFpK0+2LkOwiEj/DT05PU+SApnm7PN8o=; b=1KKAyoZ8yomN1WBhW6fXvXwQ5BWHR9kPNF4UZf6B6DwgwpXYjmEKHMEuhFfrc9CanQKON0 TBPp2T88XhdOn3munzsh4Q21HEYf8OT6tUJ4JpF/xskyXpSTKexGEJdldv99vRAznA9wbh LGGaaglFNgW5sqktz5oZs9Qzn/4/0uw= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="bLnVM/LM"; spf=pass (imf01.hostedemail.com: domain of 42.hyeyoo@gmail.com designates 209.85.167.44 as permitted sender) smtp.mailfrom=42.hyeyoo@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1738054452; a=rsa-sha256; cv=none; b=TWExB8pF5ik6CpaqScK/kTnZ/EPRUcyajDLfHbDXxosZK8L1e9QWL+dxksADxhjdO2nYel xnoPEJxteVb3VMIL1ufVmutEi69DJ92WEXDVXF3xL9j7e/IZEIWHb1DBCpDSbS5T3VgWyu Danf5lhoV/MaUGs18aru+1rc9qGiXpE= Received: by mail-lf1-f44.google.com with SMTP id 2adb3069b0e04-5401ab97206so5547588e87.3 for ; Tue, 28 Jan 2025 00:54:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738054450; x=1738659250; 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=UfydJTe7jinuFpK0+2LkOwiEj/DT05PU+SApnm7PN8o=; b=bLnVM/LMIb/ru/wrKa2mo7STyyS2OG3XowbWSpJPvzX+45NdR9DHLS6zfb92RzzyQR eBZcfkNvtfSEkO1enFayrTLIzPaM2oaEv3hd9Wn5C/qMxF7jOZoYbQM0B7d3vyLPDEZw igPtkEc59QU/oKywZjocQQ/JnX3JTWrqzDMmyip3cs0+d0N2VAlHxaCwxxXg1G33djlN 8VneVpQ9VY053wsUg/j9UOgaBNNZyphINSyv0WUjWhuoBBop367E7sPAQeLTczW+JIvh jDq1NlTG1/9cDYHN160lYrkQMjn4Owcj4meJNyGkXdelbFaFgZh+B5wInYNDjc6I7rjs V2BA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738054450; x=1738659250; 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=UfydJTe7jinuFpK0+2LkOwiEj/DT05PU+SApnm7PN8o=; b=EbM8wi/24QDQUcVuaTKUl95Wv+7s3FMJ6YI5O/lwwcJmar+QcmhQ/T0SeB1onytuTK LVsuuU5bZ3netrbZYE4euPl28quT3n2Jmo+YAa4g/uhZiWbMU8ggA7fLtag9cYinNCAv +jVEcJIK6qGt2bY2LpthsM3aJ/TBhwitAbokwLP7mkqz+B1WcpGmzHVto5P3G2QG6w10 FhF8v/D9fksjTSVG86Mk+Va5igB1utlflBHJ9dcpAYRDFFovkmvg91dfvYRz1VtKWcUP ELYp2Vu+DVNl0E+ttfqE8/eU685NJIW7tcHd3TvzAKrM0OuXEC0imSMtiW/GQJGtw1cy 9dYg== X-Gm-Message-State: AOJu0YzM7tFLwHgKlpJmH53nBbe/ya3kqj8X/zgatEhThdMO4lsM4ol7 sc3h2xzXO6rVS+xb/RHkRRH2Io0CczFcoHeigyaq5zlyJbd1SGsYIWjRqh0LT/GsFB8hLrfeCNb NR0YDKiIJHqwDq56+L2hWcNOF3bQ= X-Gm-Gg: ASbGncv/mBq1C4HkGWKmKGcVfivj5vXogASzlgYW93fNAlBub5KuaPBGgoCCPRnbZK3 Dh/M+cb+0W122eYJ+41diVHtD8cLDWe+2W+6F99rYLfG0MOYFEMuqfH2NAVVTAu+OVlYJc5HTdZ E= X-Google-Smtp-Source: AGHT+IEup4m/ZXOG4blLG4hyCgbU5fgaoubFQuSyD7c2Ae7eYlkfcy8WV669nJzd0BINwe5GoMWr+VGDAIsyWxaEoB0= X-Received: by 2002:ac2:4896:0:b0:542:1bdd:511a with SMTP id 2adb3069b0e04-5439c246115mr12508128e87.13.1738054450005; Tue, 28 Jan 2025 00:54:10 -0800 (PST) MIME-Version: 1.0 References: <20250128174938.2638-1-42.hyeyoo@gmail.com> In-Reply-To: <20250128174938.2638-1-42.hyeyoo@gmail.com> From: Hyeonggon Yoo <42.hyeyoo@gmail.com> Date: Wed, 29 Jan 2025 02:53:29 +0900 X-Gm-Features: AWEUYZnrMGYgKdaFD0tRWEz6HmCDR6VMBu5ND8dS-UzfS8ETACvAnLM0Io2KNaM Message-ID: Subject: Re: [PATCH v6.12 hotfix] mm/zswap: fix inconsistent charging when zswap_store_page() fails To: Kanchana P Sridhar , Johannes Weiner , Yosry Ahmed , Nhat Pham , Chengming Zhou , Andrew Morton Cc: linux-mm@kvack.org, stable@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: 4ACC540006 X-Stat-Signature: budbk5t5zuugh79tnia8pi9fwuy4j8mm X-Rspam-User: X-HE-Tag: 1738054452-172686 X-HE-Meta: U2FsdGVkX1+W1ZNSwLX5lh8Jb1FVh0zjJ++Dxx1D+KlniyVdjv7WqCrDJbOmpqSuH1rpF3JrgZNQ7Apb3ivaADLTxHD45yw6k4ubazjADDEQDq3wfYlbmVpABjUWUZkHEl1A8gTpqyrEzcufmCdYMYpsLIi9L/iSq2P2cPcSzXBnb67H6CawdWCH+7DWHeaNL85jKfVIgAHYztQx1XvuPSINH0lCYbVatKLj/xelEX8pzMsUp6q+DJNMom5mYdn4HAqSkQ527U/fZZEA2Mo6NknJwE+HRIFIWkFj86AKrcISV779wXBBTqv+X1ejybYBZvvGimmXroIEZiJ2c/VFhf/WJrn3P01bEM8ccUcc1oWUxWjlIX8m9L8Luw4VdOMwSch5QdVITo/N9QpzFf5QZ0IDB+ugMApZNKQmT5XsMaKHomOB8ov3tMLle8C5BQWPgzQcLiZBe06J2Sii8aIFO0llwB1Bclgx5zI7DeFNZPCAhV2dCMfMpy4oe9kqCnkdGy7hlbN0B4laCxyyHPLBgDgCOx36JbZZ+sq0a1um4GLifgXRTWA6LOAmzQt8i/obZ1t2qpa9J8Pzc2ogzSHexJf9uZvqht6bCpJk9Um2mBiSb1dkBQwAJzDw1ALS7q+6zmBh7wDbmaXbOjHuvuCuogdId4VlAvOtrNFac5B91uR+H6IlCTuoffZ1akIoMAe5B45Zx6kOVj2aqpbg577Xz5CwbwmQaJwutyNjSZ21KFTeDCSCEDsiPU7ev36ilEyccA+mBi88TRxRc0A05szoz7PQ3daWR3v1eW9j/3pyC6QBsBBQm2cPqTLmOMYLa4L312/R3a97LMKTRklQePCNj9A8bAM3Yq08Qhr9LJI6/zKz2xep9p7LpAEZL3DPryd0wb5PypOK5YrlYDCvbbJc3Ubkgeh9Seztl/GbblkeIPKQqJb2XBrAlJOAChT09IoUXkMcaLlG+MeAfASCEME T6QHsimu RPNwqdW8Inx8TevXd6skZrCXoLlQfBeYoyJtuBvEs7raKPrLwbt4qp5mq+UAlZhYNgO6z72SRGnhIDeemOxDzE6YvuKJpDJybIv4I8LFbSFMm0PGnVwjVeiG1ieFoO8RJFHVJdql5U9/0GDagqmT+UBK0yrI4J5mx1mhN74/DpPSHj03yoL+HwV2Db3BGI4NAcIgRp0rUYMv5CmvvpiwwtTe5oCjXYdGhFwJSRGx7MMSvv3IQoaqRVyUAeuNZ2a/AKrN1Q0qk07mCixB5ROUGbIYz5w8Zwo/57Enui0O9uXv7h5Dg6AsxOQI4W0tD9AhDmwIyzvwxEZIkaEtEBhILRYVIF6fH0tsX3u71Kq0h9dV39iLiPVOQ68Bw4Y0yKqXretf40yDmtucC6OF2xEbnKsNJwzAHRcjmi5doDxTxM6atoBOpiK7a1iqe1gWTKjW/VdNvpWeefYujIukW9cJQ30DEpZdeo1EHITDP X-Bogosity: Ham, tests=bogofilter, spamicity=0.000001, 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 28, 2025 at 5:50=E2=80=AFPM Hyeonggon Yoo <42.hyeyoo@gmail.com>= wrote: > > Commit b7c0ccdfbafd ("mm: zswap: support large folios in zswap_store()") > mistakenly skipped charging any zswapped pages when a single call to > zswap_store_page() failed, even if some pages in the folio are > successfully stored in zswap. > > Making things worse, these not-charged pages are uncharged in > zswap_entry_free(), making zswap charging inconsistent. > > This inconsistency triggers two warnings when following these steps: > # On a machine with 64GiB of RAM and 36GiB of zswap > $ stress-ng --bigheap 2 # wait until the OOM-killer kills stress-ng > $ sudo reboot > > Two warnings are: > in mm/memcontrol.c:163, function obj_cgroup_release(): > WARN_ON_ONCE(nr_bytes & (PAGE_SIZE - 1)); > > in mm/page_counter.c:60, function page_counter_cancel(): > if (WARN_ONCE(new < 0, "page_counter underflow: %ld nr_pages=3D%lu\= n", > new, nr_pages)) > > Charge zswapped pages even if some pages of the folio are not zswapped. > After resolving the inconsistency, these warnings disappear. > > Fixes: b7c0ccdfbafd ("mm: zswap: support large folios in zswap_store()") > Cc: stable@vger.kernel.org > Signed-off-by: Hyeonggon Yoo <42.hyeyoo@gmail.com> > --- > mm/zswap.c | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) > > diff --git a/mm/zswap.c b/mm/zswap.c > index 6504174fbc6a..92752cd05c75 100644 > --- a/mm/zswap.c > +++ b/mm/zswap.c > @@ -1568,20 +1568,20 @@ bool zswap_store(struct folio *folio) > > bytes =3D zswap_store_page(page, objcg, pool); > if (bytes < 0) > - goto put_pool; > + goto charge_zswap; > compressed_bytes +=3D bytes; > } > > - if (objcg) { > - obj_cgroup_charge_zswap(objcg, compressed_bytes); > - count_objcg_events(objcg, ZSWPOUT, nr_pages); > - } > - > atomic_long_add(nr_pages, &zswap_stored_pages); > count_vm_events(ZSWPOUT, nr_pages); Wait, it also does not account for these events/counters. Will send v2. Sorry for the noise. If I missed anything else, please let me know. > ret =3D true; > > +charge_zswap: > + if (objcg) { > + obj_cgroup_charge_zswap(objcg, compressed_bytes); > + count_objcg_events(objcg, ZSWPOUT, nr_pages); > + } > put_pool: > zswap_pool_put(pool); > put_objcg: > -- > 2.47.1 >