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 46604C48BC3 for ; Sat, 17 Feb 2024 13:27:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 95C916B00A1; Sat, 17 Feb 2024 08:27:52 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 90C226B00A2; Sat, 17 Feb 2024 08:27:52 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7AC8D6B00A5; Sat, 17 Feb 2024 08:27:52 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 685B76B00A1 for ; Sat, 17 Feb 2024 08:27:52 -0500 (EST) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 041D88025E for ; Sat, 17 Feb 2024 13:27:51 +0000 (UTC) X-FDA: 81801373584.19.9FC9F87 Received: from mail-pl1-f179.google.com (mail-pl1-f179.google.com [209.85.214.179]) by imf13.hostedemail.com (Postfix) with ESMTP id 0111A2000C for ; Sat, 17 Feb 2024 13:27:48 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=ezcFYISk; dmarc=pass (policy=quarantine) header.from=bytedance.com; spf=pass (imf13.hostedemail.com: domain of zhouchengming@bytedance.com designates 209.85.214.179 as permitted sender) smtp.mailfrom=zhouchengming@bytedance.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1708176469; 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=7YIjUl7w74kX0iqRU9st/bixCfekkV2GsxSz3VGD0t8=; b=lyuIam5M0iEeMXomAAgvM3U257ZNxj91gUxkjbljJj9OwYqTS/TeefliiYbhhNGEgLRCno 4hAOrQoW/vRJYIAGMzDuxf59E+x/BjEiC6sA1hiqPm9paRj8GQgJYNOd9RcFMbLu7wMhGU 2nmQvr/pH+Ju//wR/dPcDH6sBUrOo2M= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=ezcFYISk; dmarc=pass (policy=quarantine) header.from=bytedance.com; spf=pass (imf13.hostedemail.com: domain of zhouchengming@bytedance.com designates 209.85.214.179 as permitted sender) smtp.mailfrom=zhouchengming@bytedance.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1708176469; a=rsa-sha256; cv=none; b=fqJ2z7l9JT/6hyPz+/xC1ufSXMg9Y3GJICvV7vm7F6nJIwUJACH/h6TU4kspg+fsOvKftb J/iZep9aoeLPyOXpZNlsxjwSnRM5d3wm93vRG0k2pfLmdY50fwkRXm3SI8GPghD1TeLGvl BA/zI8s6+P3vUwFe68oG4KOac4zcUzE= Received: by mail-pl1-f179.google.com with SMTP id d9443c01a7336-1d7354ba334so26827295ad.1 for ; Sat, 17 Feb 2024 05:27:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1708176466; x=1708781266; darn=kvack.org; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=7YIjUl7w74kX0iqRU9st/bixCfekkV2GsxSz3VGD0t8=; b=ezcFYISkc1EI7wgO+1LkUcmu9e+N7TmfZ0OwtBdB7hL90IyLuJRqasv9CnYV4yAUag JJr6iAKtLWSJPB2/rFkuSf5W0XNVSIJ6SAiqDhnFtTr9D+ffr1mhzaZuUPA3KdN2u9EN G+mLWErhP9+PlvZsMiX21WHSfocttYWOzHJPjVRM0kNobaYfb39JidOKIq/pV30xVcRg d0xlwjTO67V8e7EPd7fkxnBifbnR/dZ3dG/rnSMZLBbyQDejKX0oVFD2wbiSsuSaMXPA aBsCR+tspY7/Z3f6dI42thyaWbEW6RXSehTPHlzjBR9HeEHrziPH9kvgwlr64eduRhB9 hoEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1708176466; x=1708781266; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=7YIjUl7w74kX0iqRU9st/bixCfekkV2GsxSz3VGD0t8=; b=nTnKOOQp9gc1BW9M9umhzBMA+0jQTiRWE0PVHNAru+LwazjOeWvLdbJTlgUYmTh4ro SUqGzR4AGnND/f1hTiY6FadZxwf7OVyKLDwJP92wlfxUGAGtj2QHxQtclGHjFxni72JD SEJALhOD3Oyq1FBYkG/pamB7hh99kZWJXh6wFhkkWAIwvEn2Osi1Sd0eRswqttoXn50x YJ6bUfP8RB0b/sxlfqy7ZU++LajmaWK9EyHuvZRvDEhkWUAXzVSeHXM25J97a+zAl8Tq 2OiRHVxV1QlCO8izF2J9F4c7fDT3LuMREL6lkFa4/hMWCrBHclSTC477VVfKgXFNQyS6 nuUw== X-Forwarded-Encrypted: i=1; AJvYcCWXVz+ZmAuPbymQ1CoqvoQ7JjYqLzb75MrDy6zQvdGIpAi+QHG8KO4/X/VRjbWCQjqugkGFRbI3QQUs3SLrPIu18Aw= X-Gm-Message-State: AOJu0YxD5gTJlWzVro87F08khsel5lKUwoiyFQUk/e7FBEwYjNQV8vKZ HyZpA4zIWvL1AhnyrcXA7K8DKEJlzxtRIoxadIVa/8R+V/n9UNJNY38GG8y8/kn9x6MAfCh/WDg L X-Google-Smtp-Source: AGHT+IEhs/wcrA0Gp63w4jHt1NcsIgXxn1UGTPz2QTHXlJn7DRWACzJRzx4cLjxQNjSo/+XEep3QyA== X-Received: by 2002:a17:902:e882:b0:1db:465b:b5a3 with SMTP id w2-20020a170902e88200b001db465bb5a3mr9022718plg.11.1708176466112; Sat, 17 Feb 2024 05:27:46 -0800 (PST) Received: from [10.254.113.79] ([139.177.225.251]) by smtp.gmail.com with ESMTPSA id kr7-20020a170903080700b001db8a5ea0a3sm1467529plb.94.2024.02.17.05.27.42 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 17 Feb 2024 05:27:45 -0800 (PST) Message-ID: Date: Sat, 17 Feb 2024 21:27:40 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2] mm: zswap: increase reject_compress_poor but not reject_compress_fail if compression returns ENOSPC Content-Language: en-US To: Barry Song <21cnbao@gmail.com>, akpm@linux-foundation.org, hannes@cmpxchg.org, linux-mm@kvack.org Cc: nphamcs@gmail.com, senozhatsky@chromium.org, linux-kernel@vger.kernel.org, Barry Song References: <20240217053642.79558-1-21cnbao@gmail.com> From: Chengming Zhou In-Reply-To: <20240217053642.79558-1-21cnbao@gmail.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 0111A2000C X-Rspam-User: X-Rspamd-Server: rspam04 X-Stat-Signature: 46hn4qjwqygwyjqo3qwzykit17s9qdea X-HE-Tag: 1708176468-446678 X-HE-Meta: U2FsdGVkX1/jYeoZOTXA6blTtHRkyVXfyu6dUFQpQaLk+IlgUJJDVcoZJU/YuetzuQbfm4I0A/D8QUpIFiID/eBBDbTzNrF9GB8VRnc8wBVtwszyzPRC1OJD1b/QhM//H4/hF2rGMQ6PlZnc+UtAVUu37OJ0e/IV7ZjJDGpie8Nq/glIHJeJfLxoSw5qTL3bzmGzhy4F5BzE8J4Fsu7tItqaaza+hFKUhWh6hfDY5EWd1hYmW3h84pEO6p0HOOeQMsHy1SzXlu5U4xaLM04Z/fe/rrcSti2/X2ZWkFIC+hMDflMTGT45VPwj/dVhXeLcarlvKdu700Me3g4so3Wr5IWdWba7KP8UyAmCyd1lUjj+p51REhoOA3q+AutOZM5mQlrBYiaIkRzkkItRzMNwR9m/V3t4osI2nJla/HbfdStFO1w/E0zJB1gnvS/a19KJvQ28TnaTmQvzu0SwOmGl7jAWi/ETwVNGT9FONmrVMyw3qLjgqUYBreBN7Erc0w8GuJKOiV3382kyduEr85eWzf6doL2CmxePhoQI6BwNzRRfql+y6S4iekEoFLHakq7g6CYMHUuLOmQdfMStMGuGGy5349LuUhQr+rIf23bgym+B4d6kj7bLRW+dCJLw26UmPq3n6MAlFehPoV8SkahvX/QE9PiT5nfJN7l1y1W0TF615gjx0WPfhq3KQ3o9U8EwnJaQ3TPR6g2njRaUtAWh0B2S6gqvybW+lQyyYXVDKFY0LqTeC6s0pY16WRrrwruZlQqHdtsEKpJQ+ePEjgPLwtTw7BDCQgXmznKes5P7+NiHo45GCMpplcRGw64KhhTTEKz+YY+/0fuDVkwrmUTuU/pPLXiLtAl6kRJ6YHrqr0CMDm7gknbvBQIg1t/EJpqmljLYvmrPdOdU9aTtQ1OXfPeyGNwpdY4Fvzsw8oZue1z+sAbpGNmmMBGqHukRHPTMx+yU6js7h61YWL9MoF3 7KcFYe8Q TGTb3GKrzHu4Z5MU+MBXhx5Jh614Q7O5KWcv8imI1/Ju/xPDzdZmIh8igYvkkhYwU5OkU8RXGAZC+wveJCcRotC6ehzfs5JbAZdmCJEwdSBAWk3DixfPPmeWpYvQvtjKgsBD5oNaVOEN0MogzfghQwRwY7ymoM5kLCY3dCNKkkF16IP1l5LjpqFN2xQ== 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/2/17 13:36, Barry Song wrote: > From: Barry Song > > We used to rely on the returned -ENOSPC of zpool_malloc() to increase > reject_compress_poor. But the code wouldn't get to there after commit > 744e1885922a ("crypto: scomp - fix req->dst buffer overflow") as the > new code will goto out immediately after the special compression case > happens. So there might be no longer a chance to execute zpool_malloc > now. We are incorrectly increasing zswap_reject_compress_fail instead. > Thus, we need to fix the counters handling right after compressions > return ENOSPC. This patch also centralizes the counters handling for > all of compress_poor, compress_fail and alloc_fail. > > Fixes: 744e1885922a ("crypto: scomp - fix req->dst buffer overflow") > Cc: Chengming Zhou > Cc: Nhat Pham > Cc: Sergey Senozhatsky > Signed-off-by: Barry Song LGTM, thanks! Reviewed-by: Chengming Zhou > --- > -v2: > * correct the fixes target according to Yosry, Chengming, Nhat's > comments; > * centralize the counters handling according to Yosry's comment > > mm/zswap.c | 25 ++++++++++++------------- > 1 file changed, 12 insertions(+), 13 deletions(-) > > diff --git a/mm/zswap.c b/mm/zswap.c > index 350dd2fc8159..47cf07d56362 100644 > --- a/mm/zswap.c > +++ b/mm/zswap.c > @@ -1498,6 +1498,7 @@ bool zswap_store(struct folio *folio) > struct zswap_tree *tree = zswap_trees[type]; > struct zswap_entry *entry, *dupentry; > struct scatterlist input, output; > + int comp_ret = 0, alloc_ret = 0; > struct crypto_acomp_ctx *acomp_ctx; > struct obj_cgroup *objcg = NULL; > struct mem_cgroup *memcg = NULL; > @@ -1508,7 +1509,6 @@ bool zswap_store(struct folio *folio) > char *buf; > u8 *src, *dst; > gfp_t gfp; > - int ret; > > VM_WARN_ON_ONCE(!folio_test_locked(folio)); > VM_WARN_ON_ONCE(!folio_test_swapcache(folio)); > @@ -1621,28 +1621,20 @@ bool zswap_store(struct folio *folio) > * but in different threads running on different cpu, we have different > * acomp instance, so multiple threads can do (de)compression in parallel. > */ > - ret = crypto_wait_req(crypto_acomp_compress(acomp_ctx->req), &acomp_ctx->wait); > + comp_ret = crypto_wait_req(crypto_acomp_compress(acomp_ctx->req), &acomp_ctx->wait); > dlen = acomp_ctx->req->dlen; > > - if (ret) { > - zswap_reject_compress_fail++; > + if (comp_ret) > goto put_dstmem; > - } > > /* store */ > zpool = zswap_find_zpool(entry); > gfp = __GFP_NORETRY | __GFP_NOWARN | __GFP_KSWAPD_RECLAIM; > if (zpool_malloc_support_movable(zpool)) > gfp |= __GFP_HIGHMEM | __GFP_MOVABLE; > - ret = zpool_malloc(zpool, dlen, gfp, &handle); > - if (ret == -ENOSPC) { > - zswap_reject_compress_poor++; > - goto put_dstmem; > - } > - if (ret) { > - zswap_reject_alloc_fail++; > + alloc_ret = zpool_malloc(zpool, dlen, gfp, &handle); > + if (alloc_ret) > goto put_dstmem; > - } > buf = zpool_map_handle(zpool, handle, ZPOOL_MM_WO); > memcpy(buf, dst, dlen); > zpool_unmap_handle(zpool, handle); > @@ -1689,6 +1681,13 @@ bool zswap_store(struct folio *folio) > return true; > > put_dstmem: > + if (comp_ret == -ENOSPC || alloc_ret == -ENOSPC) > + zswap_reject_compress_poor++; > + else if (comp_ret) > + zswap_reject_compress_fail++; > + else if (alloc_ret) > + zswap_reject_alloc_fail++; > + > mutex_unlock(&acomp_ctx->mutex); > put_pool: > zswap_pool_put(entry->pool);