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 33FC2CD11DD for ; Wed, 27 Mar 2024 02:39:18 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A1C086B008A; Tue, 26 Mar 2024 22:39:17 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 9CC3A6B0093; Tue, 26 Mar 2024 22:39:17 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8E2876B0095; Tue, 26 Mar 2024 22:39:17 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 7F14D6B008A for ; Tue, 26 Mar 2024 22:39:17 -0400 (EDT) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 23E7BC047A for ; Wed, 27 Mar 2024 02:39:17 +0000 (UTC) X-FDA: 81941262354.17.DD2BF51 Received: from out-176.mta0.migadu.com (out-176.mta0.migadu.com [91.218.175.176]) by imf05.hostedemail.com (Postfix) with ESMTP id 63D6D10000C for ; Wed, 27 Mar 2024 02:39:15 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=aJC0diZB; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf05.hostedemail.com: domain of chengming.zhou@linux.dev designates 91.218.175.176 as permitted sender) smtp.mailfrom=chengming.zhou@linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1711507155; 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=RtdGJbvgCvyX9L150u2NBhNCNfz4EeUXpgYSQTOqlaQ=; b=mTKKFpgB8ZNyIB9AbDyARXhmQlZKhxacujdy/F32l1KK315bWX5v9k1m1t4Zwfhk1O+OHg Ro/vF2Shhxp8wsfUXQ45jw8WwJn6dhLRZNNgzD6YdY+GMMZt9g331MCmNF+MnpR+6D+BdV C72aDu5nA199DqXSfMZaaJuiKWt+pgE= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=aJC0diZB; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf05.hostedemail.com: domain of chengming.zhou@linux.dev designates 91.218.175.176 as permitted sender) smtp.mailfrom=chengming.zhou@linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1711507155; a=rsa-sha256; cv=none; b=7sdrKLsAwI8EYcd+M31TAoFUtj0KUrfBKxUC8zSSlBo/GTrMGkdLG/gCOoyb1RFZPRbCbQ x77tEmbTvx7SVFZX3tlVxsrpFvDkAERUqsJ2NzxADbw7ls/pTo9MmK+XYQjNSAcRChU+GG ClleyLp3NcjHhNxubQCjBhVUTpuBUIY= Message-ID: DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1711507152; h=from:from: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; bh=RtdGJbvgCvyX9L150u2NBhNCNfz4EeUXpgYSQTOqlaQ=; b=aJC0diZBUSd4toccTsUitzENznMKTDh1pGnhGg9403Av5Bg/9H4lMSVS2ttJw/r+aRd+W7 RLLYc3K/AGwUcC3sMKEKdKf574k6d/AFVKTRcCK+d4jLs3O52b8TYbgE5DaZHh4YSpebPP m1RM3+DI7R+M+tN5Y2QoeDr0g+xGtPM= Date: Wed, 27 Mar 2024 10:39:06 +0800 MIME-Version: 1.0 Subject: Re: [RFC PATCH 4/9] mm: zswap: move more same-filled pages checks outside of zswap_store() Content-Language: en-US To: Yosry Ahmed , Andrew Morton Cc: Johannes Weiner , Nhat Pham , linux-mm@kvack.org, linux-kernel@vger.kernel.org References: <20240325235018.2028408-1-yosryahmed@google.com> <20240325235018.2028408-5-yosryahmed@google.com> X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Chengming Zhou In-Reply-To: <20240325235018.2028408-5-yosryahmed@google.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Migadu-Flow: FLOW_OUT X-Rspam-User: X-Stat-Signature: 1nkkj9mbbwfqada5fstydrqmp589ftik X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 63D6D10000C X-HE-Tag: 1711507155-169396 X-HE-Meta: U2FsdGVkX19xjzziidcD83Aj5AyN6lWyLuQraChqp0YEQAs1a1Bx108hE14pRnCwT6Tw8cEz0pRw1zKgF8ZxFVzoZfEr50BXRUmnhQsy063y+Q2+Fe1MEwMXX0OHEfX2SPwisg2pjsxQ6ZU08XL1RSlAEL7TxUdVxmeH0aQdacvklacSxgB2jRNTfXRDblq20uayA+ChIxmF7OLZ4Xz5JITSLDUXm8O8CFiCnkMrjXVjBWx5vKnn3DR7MB+iZI/DraqnofLJIdPMY5qMdW+y6tcbeQAFJk++Og6PEqbZGT3Wz+7tIKffbBj5rYkmn/4vuFf6AldUQynOxopOSMi8nuQVSG+UVRCQHF2qZnjv4q63mJ/WFO4VsRnBvJA9VyUapDIAOsg9gwQjXmGHyiFr/rKbKMdZlrarU3J3xDwQR/JL3kiWKUG5XZOcigec3divMv5wP0/VrVo2kdz7TNTCdrF4NtfoKQEdwGPoCDesLp6UAdpJTEsxto2oaVnjUzq5MPZN+Nw+WZNv8djQahgL9WBl9B15sY7z2Hg6zDBaCrtMJvPbh0WyuhjHDW6gpN69Gx8Lm3LVb4alNCbBlvuE4lAbMECHzgSfBvAJMo/dhhuZbWtEjKEjHG/xJFa6VczbferOeTaUoeD2RRY5bJcVyM6LHF5cq2XFBYfijusq4nDjVVlyIEFWuurLR9cHuz0DvGSEm0iLFFF2S8g8RV4GLGZnH6nq2DISmU3cdcR0252z0WDo1tHd9gD1zxPrEBBcjLo0j6e53Da6LJBSjH20wfLSVMrWoMjSpB/WekDXyeJwFTWs5nEYRkOTvbKac+XTLMjoo3IeMCfeeOjArGxkKSKqXcFMX9kB 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 2024/3/26 07:50, Yosry Ahmed wrote: > Currently, zswap_store() check zswap_same_filled_pages_enabled, kmaps > the folio, then calls zswap_is_page_same_filled() to check the folio > contents. Move this logic into zswap_is_page_same_filled() as well (and > rename it to use 'folio' while we are at it). > > This makes zswap_store() cleaner, and makes following changes to that > logic contained within the helper. > > Signed-off-by: Yosry Ahmed LGTM with one comment below: Reviewed-by: Chengming Zhou > --- > mm/zswap.c | 45 ++++++++++++++++++++++++--------------------- > 1 file changed, 24 insertions(+), 21 deletions(-) > > diff --git a/mm/zswap.c b/mm/zswap.c > index 6b890c8590ef7..498a6c5839bef 100644 > --- a/mm/zswap.c > +++ b/mm/zswap.c > @@ -1385,26 +1385,36 @@ static void shrink_worker(struct work_struct *w) > } while (zswap_total_pages() > thr); > } > > -static int zswap_is_page_same_filled(void *ptr, unsigned long *value) > +static bool zswap_is_folio_same_filled(struct folio *folio, unsigned long *value) > { > unsigned long *page; > unsigned long val; > unsigned int pos, last_pos = PAGE_SIZE / sizeof(*page) - 1; > + bool ret; > > - page = (unsigned long *)ptr; > + if (!zswap_same_filled_pages_enabled) > + return false; > + > + page = kmap_local_folio(folio, 0); > val = page[0]; > > - if (val != page[last_pos]) > - return 0; > + if (val != page[last_pos]) { > + ret = false; > + goto out; > + } > > for (pos = 1; pos < last_pos; pos++) { > - if (val != page[pos]) > - return 0; > + if (val != page[pos]) { > + ret = false; nit: ret can be initialized to false, so > + goto out; > + } > } > > *value = val; > - > - return 1; > + ret = true; only need to set to true here. Thanks. > +out: > + kunmap_local(page); > + return ret; > } > > static void zswap_fill_page(void *ptr, unsigned long value) > @@ -1438,6 +1448,7 @@ bool zswap_store(struct folio *folio) > struct obj_cgroup *objcg = NULL; > struct mem_cgroup *memcg = NULL; > struct zswap_entry *entry; > + unsigned long value; > > VM_WARN_ON_ONCE(!folio_test_locked(folio)); > VM_WARN_ON_ONCE(!folio_test_swapcache(folio)); > @@ -1470,19 +1481,11 @@ bool zswap_store(struct folio *folio) > goto reject; > } > > - if (zswap_same_filled_pages_enabled) { > - unsigned long value; > - u8 *src; > - > - src = kmap_local_folio(folio, 0); > - if (zswap_is_page_same_filled(src, &value)) { > - kunmap_local(src); > - entry->length = 0; > - entry->value = value; > - atomic_inc(&zswap_same_filled_pages); > - goto insert_entry; > - } > - kunmap_local(src); > + if (zswap_is_folio_same_filled(folio, &value)) { > + entry->length = 0; > + entry->value = value; > + atomic_inc(&zswap_same_filled_pages); > + goto insert_entry; > } > > if (!zswap_non_same_filled_pages_enabled)