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 CAE88C2BD09 for ; Tue, 9 Jul 2024 13:26:32 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5B1A86B009B; Tue, 9 Jul 2024 09:26:32 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 560CF6B00BB; Tue, 9 Jul 2024 09:26:32 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 427FB6B00BC; Tue, 9 Jul 2024 09:26:32 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 2400C6B009B for ; Tue, 9 Jul 2024 09:26:32 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id BD8E11418B9 for ; Tue, 9 Jul 2024 13:26:31 +0000 (UTC) X-FDA: 82320288582.01.E79CD9B Received: from out-188.mta0.migadu.com (out-188.mta0.migadu.com [91.218.175.188]) by imf23.hostedemail.com (Postfix) with ESMTP id 4452A14001B for ; Tue, 9 Jul 2024 13:26:28 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=uJu15Kp0; spf=pass (imf23.hostedemail.com: domain of chengming.zhou@linux.dev designates 91.218.175.188 as permitted sender) smtp.mailfrom=chengming.zhou@linux.dev; dmarc=pass (policy=none) header.from=linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1720531565; 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=fXJuI7uI1qCv8xGpT5wNFuY2vtyb8QTYfSJpVlZ43kY=; b=gcdQqjH3c8GIkGz1CWg4DjS51gMYvzWi1MI2Vmr1vCGuKnjhpsFD73ysAwLoGan7MzJY7N Ma64XM3lEkREo71ytWNnRk33J6CBjyIhcxxI2+2KOgT4EbChiQd/fKEWkKwzayYLkedWih tJiMcRKxpmdhdrQYYszwrXfYlfgPDTU= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=uJu15Kp0; spf=pass (imf23.hostedemail.com: domain of chengming.zhou@linux.dev designates 91.218.175.188 as permitted sender) smtp.mailfrom=chengming.zhou@linux.dev; dmarc=pass (policy=none) header.from=linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1720531565; a=rsa-sha256; cv=none; b=20AVY/PzoVHOmMfQWykKLYMgyLd6ZhCe4dyLrUzQWv7qsggHsUXGDLfsFE285MOQPYjxgg uQ7V97bSAiGmfkpqGtb4dwVrJ+hLQSdauUSM3QWW67HkysJnNdOXkJdK8LFuNplUHBTtOx f0qImZyfOHo5SJBXbqrfd4OicMvsajM= X-Envelope-To: flintglass@gmail.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1720531585; 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=fXJuI7uI1qCv8xGpT5wNFuY2vtyb8QTYfSJpVlZ43kY=; b=uJu15Kp0Gc3uZ5gTkAbUQdOALV9UDlVCIFe+aqLZ33fbq+d79F2WBUIylcKdM3M5dIMr9T SUItIfy9gyqmeWg5MmnuJbO3dYb11sw5Nz3ITLBAs5r/PnPH6UgjeXBAJU9ehyCuyGlI3T UbZqN6NB5P4bmntG0BFIzyF/UMuA+WU= X-Envelope-To: hannes@cmpxchg.org X-Envelope-To: yosryahmed@google.com X-Envelope-To: nphamcs@gmail.com X-Envelope-To: corbet@lwn.net X-Envelope-To: akpm@linux-foundation.org X-Envelope-To: cerasuolodomenico@gmail.com X-Envelope-To: linux-mm@kvack.org X-Envelope-To: linux-doc@vger.kernel.org X-Envelope-To: linux-kernel@vger.kernel.org Message-ID: Date: Tue, 9 Jul 2024 21:26:12 +0800 MIME-Version: 1.0 Subject: Re: [PATCH v2 5/6] mm: zswap: store incompressible page as-is To: Takero Funaki Cc: Johannes Weiner , Yosry Ahmed , Nhat Pham , Jonathan Corbet , Andrew Morton , Domenico Cerasuolo , linux-mm@kvack.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org References: <20240706022523.1104080-1-flintglass@gmail.com> <20240706022523.1104080-6-flintglass@gmail.com> <0afc769e-241a-404e-b2c9-a6a27bdd3c72@linux.dev> X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Chengming Zhou In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Migadu-Flow: FLOW_OUT X-Stat-Signature: 56mu8qohpd5fs8mnfn1ubhghbpwzcbdr X-Rspam-User: X-Rspamd-Queue-Id: 4452A14001B X-Rspamd-Server: rspam02 X-HE-Tag: 1720531588-280219 X-HE-Meta: U2FsdGVkX1/rWwXZl8TvASfdaBb0D8wL50of5R0gZGE2dRTzoXQudgLHLvC7d9vwUoO9L8YVuXmZUXg65DE8/tg4ulQ4dXRQDGGHlwKMi9V20RDByaUxNGy+sKbfzGI3e1s4NkxrPoKkBf/kKDM87IJOYuH1762M2mStDWEoWDJnPSAved0xIaJZ/4uLnt7ctURXWAjm4i+EbmXc3kqhefzMslD5Lz73VoO3e5OIWlaPuB8x+SsqYaw45Np9UJRkvl3OHFXY5SHPoZD231LMKOtVI8Ent0xJhtLWECovBowt6ib+IfhTlJOvCDcN/3rSnfAUtYu/516G8IHNXAXglp1GVoRrkmnw3jR0qT0C8kWp4WRKr5iq1KNFCuvq7oM/3QLuiE6d0n0gDxoPovqLmBkrQ64IzxYhjtfC44p/vI0qkeuR7uBLgSXg7m1PfV5FXge2evaH+jdg7DIx8PgSPU9Da1raFcHp8BumiPQzIlvM3gL1zeebm3vCL32FxG/eBKPP5h8lJIFXOYGKudEQygcrEORAWLs/dqptyb5hrtBlIi4rXI+5nBShR4wGD6mvlK3hp7mpGZrZkIv/rGkGyLf6BI47YpyU5qsQWXr53Ioh5hPLjc0wOKxTSv1SSKvhjXbwqCexqkQPASj3L3MXuRw8a1AQtrlCp0ZVe17Sf8cem82o+4dix0/baytpgVqeVpgFyzXtAM7BsQ4YfRgPyh4z7PWbPztAn4cfrB2Kv+GsieBDErgcGsMvuPS3B0jpDkvpCCTrZ+M9mYY1Vi6RwtQ7571DFAo5Y490k12orYoipqTBgUXeHJEuu9Rux7l1/jU9bjI3dyXJsmGhotkekaGgNXi0/ERddpDWV2CBUQUfgR3f/Z06mZ7syembg4MD47Ybjt4gOIM90KtK0cmaB9+SnpHtm+AM0DGo7Dm1sHD57jUB/hF1QmzgB2lEljkynqOw3Q9PcxYQGLhV+0G rBBA7Cr4 GFUJV0N3KrM2kh1fr76rUD8SLjN05zbRmdettvCUW27RBKqBB+YfjQ7HDmBiXvB2Lv0MkuzM4mVn5B/dvpiJf/ZUy+kdvLSo2Du3mrjxfNLzd++SrKr8OFa9AdAZgxb4uJRtCLxqGaV9Jk3w= 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/7/8 21:44, Takero Funaki wrote: > 2024年7月8日(月) 12:56 Chengming Zhou : > >>> comp_ret = crypto_wait_req(crypto_acomp_compress(acomp_ctx->req), &acomp_ctx->wait); >>> dlen = acomp_ctx->req->dlen; >>> - if (comp_ret) >>> + >>> + /* coa_compress returns -EINVAL for errors including insufficient dlen */ >>> + if (comp_ret && comp_ret != -EINVAL) >>> goto unlock; >> >> Seems we don't need to care about? "comp_ret" is useless anymore. >> >> Just: >> >> if (comp_ret || dlen > PAGE_SIZE - 64) >> dlen = PAGE_SIZE; >> >> And remove the checkings of comp_ret at the end. >> > >> >> We actually don't need to hold mutex if we are just copying folio. >> >> Thanks. >> > > Thanks for reviewing. > > For comp_ret, can we consolidate all possible error codes as > incompressible data? Maybe we still want these debug counters? I'm not sure. With your proposal, I think we don't care about compression failures anymore, in all cases it's just ok to fallback to just copy the folio. > if we do not need to distinguish -EINVAL and the others, diff v2..v3 > can be like: > > @@ -62,8 +62,6 @@ static u64 zswap_pool_limit_hit; > static u64 zswap_written_back_pages; > /* Store failed due to a reclaim failure after pool limit was reached */ > static u64 zswap_reject_reclaim_fail; > -/* Store failed due to compression algorithm failure */ > -static u64 zswap_reject_compress_fail; > /* Compressed page was too big for the allocator to (optimally) store */ > static u64 zswap_reject_compress_poor; > /* Store failed because underlying allocator could not get memory */ > @@ -1043,10 +1041,6 @@ static bool zswap_compress(struct folio *folio, > struct zswap_entry *entry) > comp_ret = > crypto_wait_req(crypto_acomp_compress(acomp_ctx->req), > &acomp_ctx->wait); > dlen = acomp_ctx->req->dlen; > > - /* coa_compress returns -EINVAL for errors including > insufficient dlen */ > - if (comp_ret && comp_ret != -EINVAL) > - goto unlock; > - > /* > * If the data cannot be compressed well, store the data as-is. > * Switching by a threshold at > @@ -1056,7 +1050,8 @@ static bool zswap_compress(struct folio *folio, > struct zswap_entry *entry) > */ > if (comp_ret || dlen > PAGE_SIZE - 64) { > /* we do not use compressed result anymore */ > - comp_ret = 0; > + mutex_unlock(&acomp_ctx->mutex); > + acomp_ctx = NULL; > dlen = PAGE_SIZE; > } > zpool = zswap_find_zpool(entry); > @@ -1083,12 +1078,11 @@ static bool zswap_compress(struct folio > *folio, struct zswap_entry *entry) > unlock: > if (alloc_ret == -ENOSPC) > zswap_reject_compress_poor++; > - else if (comp_ret) > - zswap_reject_compress_fail++; If you want to keep these debug counters, you can move these forward. > else if (alloc_ret) > zswap_reject_alloc_fail++; > > - mutex_unlock(&acomp_ctx->mutex); > + if (acomp_ctx) > + mutex_unlock(&acomp_ctx->mutex); > return comp_ret == 0 && alloc_ret == 0; And here we don't care about comp_ret anymore. Thanks. > } > > @@ -1886,8 +1880,6 @@ static int zswap_debugfs_init(void) > zswap_debugfs_root, &zswap_reject_alloc_fail); > debugfs_create_u64("reject_kmemcache_fail", 0444, > zswap_debugfs_root, &zswap_reject_kmemcache_fail); > - debugfs_create_u64("reject_compress_fail", 0444, > - zswap_debugfs_root, &zswap_reject_compress_fail); > debugfs_create_u64("reject_compress_poor", 0444, > zswap_debugfs_root, &zswap_reject_compress_poor); > debugfs_create_u64("written_back_pages", 0444,