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 D8802C0218F for ; Fri, 31 Jan 2025 23:44:22 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 376336B007B; Fri, 31 Jan 2025 18:44:22 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 2FD0C6B0082; Fri, 31 Jan 2025 18:44:22 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1769E6B0083; Fri, 31 Jan 2025 18:44:22 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id EBBB06B007B for ; Fri, 31 Jan 2025 18:44:21 -0500 (EST) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 95F7DA0F06 for ; Fri, 31 Jan 2025 23:44:21 +0000 (UTC) X-FDA: 83069378322.18.47E78B1 Received: from mail-qv1-f50.google.com (mail-qv1-f50.google.com [209.85.219.50]) by imf15.hostedemail.com (Postfix) with ESMTP id C5D4CA0009 for ; Fri, 31 Jan 2025 23:44:19 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="Oezrf/k5"; spf=pass (imf15.hostedemail.com: domain of nphamcs@gmail.com designates 209.85.219.50 as permitted sender) smtp.mailfrom=nphamcs@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=1738367059; 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=hruV8r4KqKqlbIpKYAqOXKO+RL4w+uvzGoOm6KbgBNA=; b=5BTj9ZWOEsmn/pABswpbfuwDWwS5JipjuPYyvEpIi7CEsTo8oZytzeS+gESmNUKg5Xp2Hf dW4Oo/80cRRlWOXosY9siCqu9ugdIaNXpQe5P6gtrTxqClxYsK2HEojmC02Vjp0l/r2J7H EP4IUepouk2wM6gam2I/cA+VdgBuhD8= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1738367059; a=rsa-sha256; cv=none; b=RWISkNMfuks/TAiFy4dFJy+7Fa4jH/sa8sgF6hjoQ9L7vXtZ0TFZTfDhnZ4wyBxe57nvhk rhtHHaYLnZ/FMZ9+ny2h+hTyZUjx8rD3JK2WsxqZ6ceQcpNkTDFM2JSLN2klyA5LHRKUTP 1MIcTRLx2eySxNyMrIKvmChsMm2WPT0= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="Oezrf/k5"; spf=pass (imf15.hostedemail.com: domain of nphamcs@gmail.com designates 209.85.219.50 as permitted sender) smtp.mailfrom=nphamcs@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-qv1-f50.google.com with SMTP id 6a1803df08f44-6ddcff5a823so18397176d6.0 for ; Fri, 31 Jan 2025 15:44:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738367059; x=1738971859; 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=hruV8r4KqKqlbIpKYAqOXKO+RL4w+uvzGoOm6KbgBNA=; b=Oezrf/k5kvDvvz1Q/UM90krKeLVGugfcj36jhlR+VaWofDFL8oJPO6mcbg0sBEyro0 gwz/gZ3YAG/WqRiQ78WAUaYGo03qkn1tq4gnP07Aj7d+mAA+LC4DxigoiiwQ+CJa8S3V Jx4Q5TZIR1TMZ3qW7JzT6I2cwk6HalOhe8KL0oeYW4ikef7dK6zjXMeeS3bb9lLRh5QB 550dLXTZlVQKQbUT15t7ZLuTXvKdkNApJnCDB+gxEfdvplRRLdp7BjbbbCzdF6YcG3h4 MapRio0r0/JVLLY+CDN/Q3OGJPgFm+a3u9WTfSAqXJER8JUVpxjM3Mgeug26DtwYJoLx fCTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738367059; x=1738971859; 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=hruV8r4KqKqlbIpKYAqOXKO+RL4w+uvzGoOm6KbgBNA=; b=fdPM3SIan+rx5H/WR+8EknWwhbR4cuO5xT+yZB+0Tw6B3OwFvcAYDUP1pmfEf45l68 xS1YXwFzoEil97dGZp44VXXVAhp5YXfwEvkiT3SXLa8Vd0G1MvedGHd9bI5tJMKP37rZ P6bhR7m1fndOWn5AV+eXLm+U4QqnZXfiISQWs0M+IDclr3KjZ5TQnXO3nElULJEb0uGJ CVJhZFMnujfLkiqR2OakPqhVaIlZAorvfQBM/598L0euoufA3II/RBzikieLAgz6b6Ns sS0mv3xNiLce/v0kYVw4j1u0P4mmFgAAGl8naTNXmm6a0xgkSodegd+r/1Eg0tEBrADE M+TA== X-Forwarded-Encrypted: i=1; AJvYcCVVp2ee58xLLqjcUANZfgEhCQL8S7Tzt5NEj15Gi2U6OUD1NrGD2j4f5Uh+SsB101IEmzXTQzQ8hA==@kvack.org X-Gm-Message-State: AOJu0YwxsD3D7pGBzT6CpkAy1mv243j556JDpRd+9qQgxOW8CjQ5jNSI 1HQ5dEMIrM1A1joXXFwTvSnDX8Z/G0Rx/1bmZ09qrQdMA1QxgTk/mmkjbuglXWL1x1p+TEt3yGk nRNCvYu+TGm5UAFdcKes4ScMLRwU= X-Gm-Gg: ASbGnct3ia+tTLUtZD45KkS69KRU61uZ7rFxwbKiqOKHyvTfaIYcDaS2K4fOEfyK/D1 ykHG5sfcb7tl9vbkrCvqftasWfOLFetfeZ+s+zXYptrXrZAsqyD0JOJ0H0b/KGOxDlMFACPdQ2v wJBNxLW5HYq+HKtOdjCuZnIu7YjKj4 X-Google-Smtp-Source: AGHT+IGAsc0JN4VwF0r+ktDNCByNAHmG2hd8g7DaGhmeM6hxVH9AP7B8UW4A/jIbOLMp/ZclcnVBITkJWEVnMSDqd3c= X-Received: by 2002:ad4:4ee4:0:b0:6d8:a258:68bb with SMTP id 6a1803df08f44-6e243bef460mr164175976d6.6.1738367058780; Fri, 31 Jan 2025 15:44:18 -0800 (PST) MIME-Version: 1.0 References: <20250129100844.2935-1-42.hyeyoo@gmail.com> In-Reply-To: <20250129100844.2935-1-42.hyeyoo@gmail.com> From: Nhat Pham Date: Fri, 31 Jan 2025 15:44:07 -0800 X-Gm-Features: AWEUYZlV2xA5T9P0sj9Qh_YGdaZpOrvnu3pLSl5adtsX0Te_61WaLLXLDqogQwU Message-ID: Subject: Re: [PATCH v3 mm-hotfixes] mm/zswap: fix inconsistency when zswap_store_page() fails To: Hyeonggon Yoo <42.hyeyoo@gmail.com> Cc: Kanchana P Sridhar , Johannes Weiner , Yosry Ahmed , Chengming Zhou , Andrew Morton , linux-mm@kvack.org, stable@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Stat-Signature: xoxrfyu1epdj5etubesxxi9d3qzpajg8 X-Rspamd-Queue-Id: C5D4CA0009 X-Rspam-User: X-Rspamd-Server: rspam06 X-HE-Tag: 1738367059-556227 X-HE-Meta: U2FsdGVkX1+QB1ENonmp/hkRSUoyo2ek6JiaT9FjSaTAmGhTPZyGfvGmSNCRuR7O9TXa13cAe05DW6qfsQ36FWrWDi7+p0ejDN5WOt4fMySTuW8q4wD7+ej7S6JeOEnmhMtPxl2cpUQg9IUrM/BnxJxIoqeNxzZKEC3OhHqABoqgEgZbkgOqm9/FxukZtv8fOU1OAMrF3TY9OTtFSCmr+QODWjKro3h905OTFujGCw73FETDTh0XqrrpXQsm4ZWtJmLOOCFq0WFZjQSUxF3Lj++L3e1+2MccV2+Z1kIhxzcQR1v/GpUKdaW0Fpo71R6rZpHq9FDwIpBfSrvpuLwvxDbcyEpBIuwVS5cstzwtBDRPymo8Ntf+1llgG9pkDAJWS7Z4iPeOTTMs2brup2+XiDYg6ipab+wzbQWuPjdMLQll2gkKjLik9xKMzxckMvJKAzBxjWzCPJXB+5gselVFMy2kdp8sLeqHOttY+9v2gwJavqNnqeRsmMtuhrSmLGIwmWLbm7bc8eqTbL9+4Pn1GQ3f1NyvuWKM4GumL/JuJqpSQLVawQu/r4vConsYlIl+9skB/nOyFe45RWKJB2U14ZRFEdwnypd87lLlTKJaSRNe0jF/2YCPSoPY2nS5RtA5RVQ201tokOtNi6UFsgCI7Y7yrBk8/nHfiPTkpWWG4hdsl2kYCZuLI8ol4trb1mLZgSbkrJza2tfSivfTL44v0HX6q1VHT0uoBWyhuYokjkf50WSmSkX+UYQr61x+hYIW/cYa+cG/j629oL5PX5JSdTzTu6qPDIdw/VH6MaylYP1J7pxCm4BFi1DDXeM4uHqBILPtpKWNXy7Y6K2Xv3O/iSmbB0BlAfpExBxeZxxxmg65jL9sYi5P6iYjbC3TJMYFkQxitqbY2MKIsSApzoKKPVUu5kIStXmQ10QH3hw8uEWmt9sctNYz/wlz9UGtl4EdDR68BLYL+9a1CQWKVrB G8L0qXrU uI/ebj7dF2S8OlHK4Vve/LVWrOeOLAwcI7X0epLaip2F0Y+qR4sG3JKKYln/YoO12DMv6cWDTh2vZ4uH2i3V4sDmagfQe/uvzBeAuEJcEngoEfG8n5GroTYBCM224qIM3+Z1BHTC57sRrCGy1sm01cLBAyf3MdcVOax8yttKd4pX5Wid0Gr+S+1CNDt/Qrx+Bi7ON4f4Fbi7CfimeRQDJgPi34kYKmzA3OqV+KOkldncmO6ZqX/VQKfYwI8i0U7e25PxWxzZZ9H8XcfYT9hzYnLfds9n0umTWMTP6YOKPaS1QNstn1XTszrBfrOk0LBdOQol6GoZBxMX05PR/rl9+KHL/F9VBblP/qCh7JxcF1vPrMYv+8SFV8JnUw2cTTiT2BMMjcqKg3lbFqD05la03BiBokCWkb6ZZPygqrPX0tHTmJnNILhr3cFjIDNSG+tEoE4QbMrleLh8dRydSPfRi0XCPyohYSdOZ5XDfqNaxLM72nvWsdCWj9MCHUo84HDPK3cMN X-Bogosity: Ham, tests=bogofilter, spamicity=0.000627, 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, Jan 29, 2025 at 2:08=E2=80=AFAM Hyeonggon Yoo <42.hyeyoo@gmail.com>= wrote: > > Commit b7c0ccdfbafd ("mm: zswap: support large folios in zswap_store()") > skips charging any zswap entries when it failed to zswap the entire > folio. > > However, when some base pages are zswapped but it failed to zswap > the entire folio, the zswap operation is rolled back. > When freeing zswap entries for those pages, zswap_entry_free() uncharges > the zswap entries that were not previously charged, causing zswap chargin= g > to become inconsistent. > > This inconsistency triggers two warnings with following 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 > > The 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)) > > zswap_stored_pages also becomes inconsistent in the same way. Nice catch haha. > > As suggested by Kanchana, increment zswap_stored_pages and charge zswap > entries within zswap_store_page() when it succeeds. This way, > zswap_entry_free() will decrement the counter and uncharge the entries > when it failed to zswap the entire folio. > > While this could potentially be optimized by batching objcg charging > and incrementing the counter, let's focus on fixing the bug this time > and leave the optimization for later after some evaluation. > > After resolving the inconsistency, the warnings disappear. > > Fixes: b7c0ccdfbafd ("mm: zswap: support large folios in zswap_store()") > Cc: stable@vger.kernel.org > Co-developed-by: Kanchana P Sridhar > Signed-off-by: Kanchana P Sridhar > Signed-off-by: Hyeonggon Yoo <42.hyeyoo@gmail.com> With your fixlet applied: Acked-by: Nhat Pham