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 92824C48BEB for ; Fri, 16 Feb 2024 08:23:48 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CB9586B0083; Fri, 16 Feb 2024 03:23:47 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id C687D6B0087; Fri, 16 Feb 2024 03:23:47 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B09966B0085; Fri, 16 Feb 2024 03:23:47 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 9E5316B0082 for ; Fri, 16 Feb 2024 03:23:47 -0500 (EST) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 5AF9AC02CE for ; Fri, 16 Feb 2024 08:23:47 +0000 (UTC) X-FDA: 81796978494.11.C62C5A3 Received: from mail-yb1-f202.google.com (mail-yb1-f202.google.com [209.85.219.202]) by imf28.hostedemail.com (Postfix) with ESMTP id A5BA1C001C for ; Fri, 16 Feb 2024 08:23:44 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=qX6LuX79; spf=pass (imf28.hostedemail.com: domain of 3jxvPZQoKCDgsimlsUbgYXaiiafY.Wigfchor-ggepUWe.ila@flex--yosryahmed.bounces.google.com designates 209.85.219.202 as permitted sender) smtp.mailfrom=3jxvPZQoKCDgsimlsUbgYXaiiafY.Wigfchor-ggepUWe.ila@flex--yosryahmed.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1708071824; 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=cpboLvwYV1ox8Ee0Bm43oOxioTzCNQFdquzOlljEVBo=; b=nI6RoF/t1c6JG4sIR+BKXktJKzAv7XO+guVut8LUVKY/8gkwi0/WIrT9icc+VJlQm2h5d2 SBtV/65AWE/Y+HIjkwNoZa7FwYqU7yRNG7GaVlMwk479URLMEv/oO7IAW2jR4/6+Bz5NMs lRXPELLazSF5Gxe/jckC3qRHgZu7B9I= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1708071824; a=rsa-sha256; cv=none; b=peN9ejimSUBc6G01p1D4/ZCuPWCkoVmcobhpGcQvpPo8nJMvE+qdHSJBBn3cwoxqzuagoe OWmH+/vi9ZFQw382a8IytS8ZjOAu+NhgWTt1o8ji1EwQDe1DquhcU6LMXi1LEp37iaMCfN g8hZI68X6seg+C0ovdy3bL9XpyLuqO4= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=qX6LuX79; spf=pass (imf28.hostedemail.com: domain of 3jxvPZQoKCDgsimlsUbgYXaiiafY.Wigfchor-ggepUWe.ila@flex--yosryahmed.bounces.google.com designates 209.85.219.202 as permitted sender) smtp.mailfrom=3jxvPZQoKCDgsimlsUbgYXaiiafY.Wigfchor-ggepUWe.ila@flex--yosryahmed.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-yb1-f202.google.com with SMTP id 3f1490d57ef6-dcdc3db67f0so2556846276.1 for ; Fri, 16 Feb 2024 00:23:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1708071823; x=1708676623; darn=kvack.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=cpboLvwYV1ox8Ee0Bm43oOxioTzCNQFdquzOlljEVBo=; b=qX6LuX79RwkmdxJQh37fMzerP3MvKjmioJtmegOg/u2ONZ/klhQkgnQuNokdmqE9/o 4CHBfHM1KFdDQLphZ/qNOKMZr0u9qJtXFC2MuOqibQqVeMRkm3pH+Aqso0USUZqjdMTD r4NkACLgk5v4yhn4VBdR8jbA6niLyIpmCGFFUvh5wyBy2UQDFll4GlfTt+s1j5/vSNAK o1/3Y8gUBfo3wXs63QuSRpmL7Qrbuk5C/LYGhR7qd32Tbhdtq1ErwhKYvLC45tmLYEsC rsVVkFCeC1KF3cMWF2jySJs7jq2Nnm3o21vokMWX8GVdj9iPaijR8griIEbhMGdjD097 9PCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1708071823; x=1708676623; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=cpboLvwYV1ox8Ee0Bm43oOxioTzCNQFdquzOlljEVBo=; b=dxOi/UX/cONPs0dgmQZBGx5XUtIj/GfFChRXz7F2THK9MlkL/qJpt+P/AR5BnwyJTV VZVeuvDGg4H2luRAGOeqV0ynOWVeRaVnBbR81PaZ9ZhE4SBMsZ9Qb3FZt0xsp0PcNRsY zLgAWRNx2HKZATjMhp7iB+pQtwjeK1mULOKqIN+Li3tggPopQALmi3r7tDO0uIkhJ/dZ KQJ4xyqp6WOb9Q6UJsYLmyXxH0n8SZGHxbqqFdHrfqVYYGva8itI3kLoeDna9c/Yp/r+ NFvfkX0kFVT51YDPQan4mhkz9hKBlOjT9+tKr2/Yzg9xgJ+c12g/YSv/g96WO2T8aHQV RD2Q== X-Forwarded-Encrypted: i=1; AJvYcCUbpomMJoJpTKRJZuy20SyBQsXaPdK5vJYAbn7g2wgJSSCg3by477YCC37EtAM4YNlh/JC7iMfiPMuS3xBzXMWGjgw= X-Gm-Message-State: AOJu0YylnSkxqJ99OTwRDI2haWbfVv2ur1iFPo4Nceic7emWHgSVzzC5 jJ5b8N80pGjtAOxyBLK7KA6Wkrs4zbiugDcvqdMFy0biojqOfXgnojary2QLWseE8Ib4vFOazQr hb+zD1VdwoyS8C5cpEQ== X-Google-Smtp-Source: AGHT+IE4tgX/rUS+/TwE2zBSAdB+ueElmLAdUjIOr92xa74Jtl7sq2Hhmui1AbwR6jxjAIq6SYE+53ma7H94HCqh X-Received: from yosry.c.googlers.com ([fda3:e722:ac3:cc00:20:ed76:c0a8:29b4]) (user=yosryahmed job=sendgmr) by 2002:a05:6902:f0d:b0:dc6:deca:8122 with SMTP id et13-20020a0569020f0d00b00dc6deca8122mr1355861ybb.5.1708071823798; Fri, 16 Feb 2024 00:23:43 -0800 (PST) Date: Fri, 16 Feb 2024 08:23:41 +0000 In-Reply-To: <20240216030539.110404-1-21cnbao@gmail.com> Mime-Version: 1.0 References: <20240216030539.110404-1-21cnbao@gmail.com> Message-ID: Subject: Re: [PATCH] mm: zswap: increase reject_compress_poor but not reject_compress_fail if compression returns ENOSPC From: Yosry Ahmed To: Barry Song <21cnbao@gmail.com> Cc: akpm@linux-foundation.org, hannes@cmpxchg.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Barry Song , Chengming Zhou , Nhat Pham , Sergey Senozhatsky Content-Type: text/plain; charset="us-ascii" X-Stat-Signature: d9o3jn8eww9qxf8yo7kbi4ociqijr9ji X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: A5BA1C001C X-Rspam-User: X-HE-Tag: 1708071824-597986 X-HE-Meta: U2FsdGVkX19lubx7aKaL2dEcqNCXEsnGagEFX/37GJzftQvRzFIRxtKI999Ee5gsFzKio4d8UtIBt0XHOT0j/y8+kxN8d9Fqa6Ny+HpGmHeQs/pjHGQrIUAq+mGnzWWRQR61hyeGnfMLDucvzwuwrdpeafOZLQvwSiiLnnZX1XPDf3jjXzcUXvcYt9H8MlNXin3L4PxFD7BJODZd1JXrqpTRk+8cE/pNZlyVThrZ/uPBpJfcImgDfgCTXnvkSIPSUCGtS+VbJCQfPco/9z05/3JhhSpSid6sNPJ+BSkMwRwf8mw9OMDL/Z3oMMYNuD9TU8oWZIx3ZQoBAraAzGiiwIjA2an9egc9u1djym6g2AJu8BjGUHgeqhh4WsOpIu0+npBol0p4h/tDwP9Abma7Ov3aTa3FOEae4KU7ZYM0O+eeTW6Wr5Tg9vmRyV3C/V8YB6Ecj8+iEk7iQvjJjLi77LyUd55sGg1fieQRYEGw3aVs5EbTs3ImEViMnW6Or2AKa2OGNQJB5hq2xE19cxC66EKh3tI/0NG2M7/n7AlLE1DjIvziDoATQOYJQZK3cKR/WrhmyJQ/WG3KK6deBlxE8PhuB38kBGvQ8qIagiLCTs994Ql8TqDddNPxGkCEBc88fM7iQIMr7hvrD0suSXIFrkj3jBAcm3f3lt3tk4WpShZuNe3YBCAqHP71hFzf8UMr+yfcgQG42Mi3tfDCfrOiR96kPeAAx7J5VX6N4apQq3SF06nUvUkzbLCLYt1iunzUw9BCi/Y9J/2+5b7fCan6gRTFYdOMsKrWoIa9kMbNnNgYpXs/NPgLJ/7xmFRc5sCuuG9Ugu3LD5jrpwAsB9vcsdUC03H2CBi68ptIYciSlNIaujiOaGyDsdmwwODuOCWhWeQm6+gnm8lW70SpPxhQjgVKhlq4Owel3TBmAwh9Db/7QFCLhzes6Z0g/lCjIuvRiISzybJhh5RHYIYJtRT ozxHbFE2 CaLkAruF1/ineQbL3H81GZ6KgnjjJtV4mSMwMb/X1twHGqAjEfPN5J8pOsse4baT26Ji+voIFMWftNNTIKP201f5hhIcMXjOUdYGvaOoVeFA2ZswXNIidHIs7nzQTFkdHNatVXEMbOC8u34MXcz5dm0Rc1Zb9iqSqaWJlKolRvNdnYZXKYtviikOXXvgUOFLTCxYzbxWoDi7XMjER8B1+U7JCOnZdlf72CoIHqliN00nnkZMdl/q5OFByhkNvd/K9y+ZlFSQLaqFwvmvI2v3WPT75G6vF3NQ2EZJtJzDaQXk+b/6oJhk1HUotmJAZNNdFZai/SOIvGro+VSKX47zxwBNEmskl0Z8cD40WAgoXIrJbxNQanjdmvOhiFsmwvAveSeEXRsxCThN8bTwJo/V2v5LPF45LFnWWiiTsYD9WPs//5l5vMC0/DDiT0G3jLN6zI9aB53WCc4ywPOq7NqLr8xJvEnPMDiQ5B/4+R9mRAbP7TNFz8RRmjwSLrZAiT5hUiKMunKUp9w5h3Ad7DpSPYleBKNjOhzU53IM0zjbTw1lrxbQohIQ2ltCcTbJUncOowxaCUb8lyZzGs49yaW4ne7q6EgxTd7NPQTZMhlctf/cl26TP50/jRDyASh0zIdQqqei8xOZlbmCq3h9HO5v9mQ2UsWytfYUXkx5CjuIxBXn8M9EiIxMkn14AdvQNhT9jBWjaPicoI8Od6RP45Wm+vSSnpiKRcefXodT+ZgaHtaKLfPmpteOA0Kl2NF8xva6z7sSwTo7GzegaGR3Q/8rv+jOjVKbxBNQKgoHw+xkmjs9xrSkrTLplqdBUY6EWfsfB7Vi3fDAzxgCbkMjcFeELUjOrnaCpl215avEU 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 Fri, Feb 16, 2024 at 04:05:39PM +1300, Barry Song wrote: > From: Barry Song > > My commit fc8580edbaa6 ("mm: zsmalloc: return -ENOSPC rather than -EINVAL > in zs_malloc while size is too large") wanted to depend on zs_malloc's > returned ENOSPC to distinguish the case that compressed data is larger > than the original data from normal compression cases. The commit, for > sure, was correct and worked as expected but the code wouldn't run to > there after commit 744e1885922a ("crypto: scomp - fix req->dst buffer > overflow") as Chengming's this patch makes zswap_store() goto out > immediately after the special compression case happens. So there is > no chance to execute zs_malloc() now. We need to fix the count right > after compressions return ENOSPC. > > Fixes: fc8580edbaa6 ("mm: zsmalloc: return -ENOSPC rather than -EINVAL in zs_malloc while size is too large") I don't see how this is a fix for that commit. Commit fc8580edbaa6 made sure zsmalloc returns a correct errno when the compressed size is too large. The fact that zswap stores were failing before calling into zsmalloc and not reporting the error correctly in debug counters is not that commits fault. I think the proper fixes should be 744e1885922a if it introduced the first scenario where -ENOSPC can be returned from scomp without handling it properly in zswap. If -ENOSPC was a possible return value before that, then it should be cb61dad80fdc ("zswap: export compression failure stats"), where the counter was introduced. > Cc: Chengming Zhou > Cc: Nhat Pham > Cc: Sergey Senozhatsky > Signed-off-by: Barry Song > --- > mm/zswap.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/mm/zswap.c b/mm/zswap.c > index 6319d2281020..9a21dbe8c056 100644 > --- a/mm/zswap.c > +++ b/mm/zswap.c > @@ -1627,7 +1627,10 @@ bool zswap_store(struct folio *folio) > dlen = acomp_ctx->req->dlen; > > if (ret) { > - zswap_reject_compress_fail++; > + if (ret == -ENOSPC) > + zswap_reject_compress_poor++; > + else > + zswap_reject_compress_fail++; With this diff, we have four locations in zswap_store() where we increment zswap_reject_compress_{poor/fail}. How about the following instead?A diff --git a/mm/zswap.c b/mm/zswap.c index 62fe307521c93..3a7e8ba7f6116 100644 --- a/mm/zswap.c +++ b/mm/zswap.c @@ -1059,24 +1059,16 @@ static bool zswap_compress(struct folio *folio, struct zswap_entry *entry) */ 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 (ret) goto unlock; - } 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 unlock; - } - if (ret) { - zswap_reject_alloc_fail++; + if (ret) goto unlock; - } buf = zpool_map_handle(zpool, handle, ZPOOL_MM_WO); memcpy(buf, dst, dlen); @@ -1086,6 +1078,10 @@ static bool zswap_compress(struct folio *folio, struct zswap_entry *entry) entry->length = dlen; unlock: + if (ret == -ENOSPC) + zswap_reject_compress_poor++; + else if (ret) + zswap_reject_alloc_fail++; mutex_unlock(&acomp_ctx->mutex); return ret == 0; } > goto put_dstmem; > } > > -- > 2.34.1 >