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 5A40EC27C4F for ; Mon, 10 Jun 2024 23:41:57 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B18D46B008A; Mon, 10 Jun 2024 19:41:56 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id AC7376B0092; Mon, 10 Jun 2024 19:41:56 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 968606B0093; Mon, 10 Jun 2024 19:41:56 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 780286B008A for ; Mon, 10 Jun 2024 19:41:56 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 1345A806D6 for ; Mon, 10 Jun 2024 23:41:56 +0000 (UTC) X-FDA: 82216604232.01.B5EE166 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) by imf18.hostedemail.com (Postfix) with ESMTP id 527E51C0014 for ; Mon, 10 Jun 2024 23:41:54 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=NUUrey0H; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf18.hostedemail.com: domain of yosryahmed@google.com designates 209.85.128.41 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=1718062914; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=N+xf+4Khhvj0iiqw7ZQoHFoAsSE9YYEcKJ2hjHteuYs=; b=E/s87meQe6V49t966bkkIuN6XcYNNE+0IaFqH1yb45lpa2FTyF/8sbl5tWZX5pKPQENfia vS05Cv5h0oIDAjeNkC5i2ZuFQ1WHA4sf/j0Ng/MMdIsVA2SYlxaSfEMOwGmF53FCxa/AV+ 3BvG5gt1ev8BKv62iA1HIU/8ZzEIsqo= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=NUUrey0H; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf18.hostedemail.com: domain of yosryahmed@google.com designates 209.85.128.41 as permitted sender) smtp.mailfrom=yosryahmed@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1718062914; a=rsa-sha256; cv=none; b=Q08FqwMWXGy+zNpCLAqBioZ0vlo52FxRwscjFNuEwMe9oAe3Z1WadGWCVwzp+7DIuYJr9l Ld40IrechigrJu7rNGm5x4FCx1pX64tY5iOVUvh2G5HD33eSXZeDjHKqV2s7OrMcFQ7Heu UD9wJ9WPJQvUaMsE02yjL2nuj7MfgrE= Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-421d32fda86so15103375e9.0 for ; Mon, 10 Jun 2024 16:41:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1718062912; x=1718667712; darn=kvack.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=N+xf+4Khhvj0iiqw7ZQoHFoAsSE9YYEcKJ2hjHteuYs=; b=NUUrey0HNsA+71aFgEs9MR13Cs9Aw3Qz2FYXyAfXbZ2qpOq+PJAyOv3v/Oj0HRsEPe Ayf22FASu78X3mBuCixdms6XhVJ9oxwkc8Pa3+MDmcSQVHzlI3rvQeRTVh66K3ipPO4d EdpxWwbuvZKumvPxGFHDYG4S9Y8gMkesCexB62COdhmOt5GDGljwgobE01QXFSYriwcq 5OwrB8mCKMVXqbwyrOzaevfl0Q8FQcOLsZ78wEl+d3EK7VbXXRucGBL+QEeziXLfu2Z2 LPa8ON/q9/HOqPt8LFudk5xp+cTtGZph7ZAioKXeNtXkwQg6Khf6CRxFQhIXHz7FGcs3 48wA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718062912; x=1718667712; h=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=N+xf+4Khhvj0iiqw7ZQoHFoAsSE9YYEcKJ2hjHteuYs=; b=XjowYRMVTz4AZiP/K/hpNsbiZfMYeaZBXRsNE20mDRrnweOmWxGumLDgfZx+S/+ars HteJSYB3mv32XgsIkNtkPFHj0lS364c83rkSqaDq8gKGrZxou9JVR9aov2Ox7w3Axqz1 INbf/KDjWTM+xrVZbVEmYSsfb17D7kLUKYBXVPLKL3YAJJq+tibIuxrc8RD6d1R3M3bE jgXT9i3cwJ+xAkZ2WssmuLcacko/vN+VKl1eqtV5zOreVcliTLwTGotJQRtywyw/5A3w mlDrT1LVy/HMePhM6jtR/mNFPVB2CQoCtELt+w9Vum4PdVkLDAV27pT+WkMrQoRINBtP cGJw== X-Forwarded-Encrypted: i=1; AJvYcCVjSguR5Wf4d2IjskKXfOe8UZClONXhusq8PGO6c7VWAUc3ZNm9wDqMnhe7zQWnGlXy4MrxesC9hcFWrX/lpfy3oNc= X-Gm-Message-State: AOJu0YxrN6u/zM2CuvgGZNNCVlPUCv47O3p79ZVz5dmP9AyccRuG824M VvwpHdcNgmDZOOsfFKtLFi2Z4zo3niVXwB2aGJptDn6kKPIx4D1iwjL6VLVS3oOW0s0epgID/II 5DJnG+oQM/MWoLjCc2ZQm9T73oPG7WdU3DoeP X-Google-Smtp-Source: AGHT+IGuQ2C1AkI2NSp2wA2voG3exUpdcpEnl+lgNqHk58wly44D2kvuQj0BFwg41Kqp5d9FWtxk7pJMCVXCilt7PvE= X-Received: by 2002:a05:600c:154d:b0:421:54d0:5123 with SMTP id 5b1f17b1804b1-42164a44574mr118161115e9.34.1718062912299; Mon, 10 Jun 2024 16:41:52 -0700 (PDT) MIME-Version: 1.0 References: <20240608023654.3513385-1-yosryahmed@google.com> In-Reply-To: From: Yosry Ahmed Date: Mon, 10 Jun 2024 16:41:14 -0700 Message-ID: Subject: Re: [PATCH v2] mm: zswap: handle incorrect attempts to load of large folios To: Barry Song <21cnbao@gmail.com> Cc: Andrew Morton , Johannes Weiner , Nhat Pham , Chengming Zhou , Baolin Wang , Chris Li , Ryan Roberts , David Hildenbrand , Matthew Wilcox , linux-mm@kvack.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 527E51C0014 X-Rspamd-Server: rspam10 X-Rspam-User: X-Stat-Signature: pssuq8dugbbeofbmnjp3q1mhzzet6yay X-HE-Tag: 1718062914-99669 X-HE-Meta: U2FsdGVkX1/4FwbvxXahMJnCX6XKd6p6WfONjEPu6U4FSmoZQLgOEF/W1S2JOxc9bVBrqS+RIPOFn6Ju4P2SXp8LFPmusDqf7a8QhDJ2ddf86uNnPbLElOChh8wv6u1IW8uRLxLBP/7+jeXAfRGDWUELMDUuiATzWeAkSRCznAjMFutilOjKmtHC+bLpazKtcmba2dDRPiz3/QGnQc6jR42e2JTVmP2SxOp2VMyJGSY3+g+n+dWMRA39NIqwkHHtyOal7ezmglADQ2zGSEjoGgzNWn4/U33i9oQxfWKWlIEPsLf8itRH/WhNEZez7NpPkaEfP71805ZTeWjQ/UC+iDgdRO+yZocCWNMeYzc7WdYaSwpNb89kh5sFbhpvHvrMnR5ghLBb6YEnA7hZp7wbg6MxUhe2GWm+PeX4e7/2ZcHd+GS3meLKonVJt5lEtUGOjeZsIuuSAIYGnVYVAHAzrEdn+onErrrOp7V6IKSz8m7P+lHfFFTEBCUvyROX6wUYx96mvCXZf+WGH1BTAukdK9MuOy73IHowMhGRFOG4t4DcyN/9BCNk8h7pu8Y/pOLA3j+GFNqreHDpP7XVvmpcWF4+gSQKTkc3WuyIbz4vD05UDdLL5LNnlIAlcBoy8qOUaxxV8WvBbPCahi14hjGUa+2VhPSqSKRwFdX3RCEdg776r3vmJcv/2iaZU+SdM/V98HOnsNOc6KaGUMm+Ys2ax9EcD91sVoRkf8RC+CMuNsayj7zEafg5ZxfZ2piRifZ33qYSvWUg36w9KwgKyFmI8R/fYqS/39BhRC3PKs+ZmUfXO4MpB8nqMAnlBPsW9Fx4iiWNzkRBc2Y8GX0U+Ur6EXDcbiNzj19blQD+/PpUqRcHM0/4+ialy0/kys0LZkqrBVWfAHQ5/6AJC1/NiMD/U0kAfnbvyd+vU87aMdVJ14bdRNHBfWZMKo/Lh8niogUFbjRsl3NvaBXLCipS0ZY 1qH1yGIv AKAzEjTBFVFKFOll5fdkpgUBIE/cdJ2ZQlB+OfUnAdw7amb2uxh6DNc/hUBm6z3mCZ7bWERVydcyu/hrEsrM+cOFaDsXCazpuD5JlE/3ai/N3yK2GCN2F7UB0MHMCu56oQurDTY20lcKQDLw= 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: [..] > > > > We can't always WARN_ON for large folios, as this will fire even if > > > > zswap was never enabled. The alternative is tracking whether zswap was > > > > ever enabled, and checking that instead of checking if any part of the > > > > folio is in zswap. > > > > > > > > Basically replacing xa_find(..) with zswap_was_enabled(..) or something. > > > > > > My point is that mm core should always fallback > > > > > > if (zswap_was_or_is_enabled()) > > > goto fallback; > > > > > > till zswap fixes the issue. This is the only way to enable large folios swap-in > > > development before we fix zswap. > > > > I agree with this, I just want an extra fallback in zswap itself in > > case something was missed during large folio swapin development (which > > can evidently happen). > > yes. then i feel we only need to warn_on the case mm-core fails to fallback. > > I mean, only WARN_ON is_zswap_ever_enabled&&large folio. there is no > need to do more. Before zswap brings up the large folio support, mm-core > will need is_zswap_ever_enabled() to do fallback. I don't have a problem with doing it this way instead of checking if any part of the folio is in zswap. Such a check may be needed for core MM to fallback to order-0 anyway, as we discussed. But I'd rather have this as a static key since it will never be changed. Also, I still prefer we do not mark the folio as uptodate in this case. It is one extra line of code to propagate the kernel warning to userspace as well and make it much more noticeable. > > diff --git a/include/linux/zswap.h b/include/linux/zswap.h > index 2a85b941db97..035e51ed89c4 100644 > --- a/include/linux/zswap.h > +++ b/include/linux/zswap.h > @@ -36,6 +36,7 @@ void zswap_memcg_offline_cleanup(struct mem_cgroup *memcg); > void zswap_lruvec_state_init(struct lruvec *lruvec); > void zswap_folio_swapin(struct folio *folio); > bool is_zswap_enabled(void); > +bool is_zswap_ever_enabled(void); > #else > > struct zswap_lruvec_state {}; > @@ -65,6 +66,10 @@ static inline bool is_zswap_enabled(void) > return false; > } > > +static inline bool is_zswap_ever_enabled(void) > +{ > + return false; > +} > #endif > > #endif /* _LINUX_ZSWAP_H */ > diff --git a/mm/zswap.c b/mm/zswap.c > index b9b35ef86d9b..bf2da5d37e47 100644 > --- a/mm/zswap.c > +++ b/mm/zswap.c > @@ -86,6 +86,9 @@ static int zswap_setup(void); > static bool zswap_enabled = IS_ENABLED(CONFIG_ZSWAP_DEFAULT_ON); > static int zswap_enabled_param_set(const char *, > const struct kernel_param *); > + > +static bool zswap_ever_enable; > + > static const struct kernel_param_ops zswap_enabled_param_ops = { > .set = zswap_enabled_param_set, > .get = param_get_bool, > @@ -136,6 +139,11 @@ bool is_zswap_enabled(void) > return zswap_enabled; > } > > +bool is_zswap_ever_enabled(void) > +{ > + return zswap_enabled || zswap_ever_enabled; > +} > + > /********************************* > * data structures > **********************************/ > @@ -1734,6 +1742,7 @@ static int zswap_setup(void) > pr_info("loaded using pool %s/%s\n", pool->tfm_name, > zpool_get_type(pool->zpools[0])); > list_add(&pool->list, &zswap_pools); > + zswap_ever_enabled = true; > zswap_has_pool = true; > } else { > pr_err("pool creation failed\n"); > > Thanks > Barry