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 B04D9C3DA6E for ; Thu, 28 Dec 2023 19:19:22 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 385556B00F0; Thu, 28 Dec 2023 14:19:22 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 335EC6B00F1; Thu, 28 Dec 2023 14:19:22 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1FD2E6B00F2; Thu, 28 Dec 2023 14:19:22 -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 10D1B6B00F0 for ; Thu, 28 Dec 2023 14:19:22 -0500 (EST) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id D8D441601A6 for ; Thu, 28 Dec 2023 19:19:21 +0000 (UTC) X-FDA: 81617190522.16.0A80745 Received: from mail-io1-f49.google.com (mail-io1-f49.google.com [209.85.166.49]) by imf25.hostedemail.com (Postfix) with ESMTP id 2294DA001A for ; Thu, 28 Dec 2023 19:19:19 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=ZqPN6PpE; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf25.hostedemail.com: domain of nphamcs@gmail.com designates 209.85.166.49 as permitted sender) smtp.mailfrom=nphamcs@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1703791160; 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=080/sJq+DXpSucnyvaclU4jb4q4w+Y7ix8T697dEhcw=; b=xg6GrvJ3y/gyWn4w2g6tkE8rBbX7Nnt7k2cR+yt1IxDWvM2tgTpG674E1ZskBvTZq3LQUC 9eJKvB4vvhHO6RzAHsu3baFtZnOXvYFiFvgxGDXVg9EaC5psHZTMO159Hd6Elcjp4q+szg /VkEiG5X42+nnEWDd2nWX68R66fwj94= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=ZqPN6PpE; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf25.hostedemail.com: domain of nphamcs@gmail.com designates 209.85.166.49 as permitted sender) smtp.mailfrom=nphamcs@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1703791160; a=rsa-sha256; cv=none; b=eTgHkb6A7L+Pcr0EBhl7QnCu0RRfnf8+z5ShZ5IW5nWOeN82JLvIQ3AgKtoaogpNiY3yUv U25oAy4r3kYyu87sOnEfJSoQ7YOTm9QBfHRBEmXfSd6vnDsFMc5ABXNzHbTGyTvnOYv+hk //EXT4tpE0K5XuNwAq9Eo5TjgwhthNM= Received: by mail-io1-f49.google.com with SMTP id ca18e2360f4ac-7ba903342c2so429526239f.3 for ; Thu, 28 Dec 2023 11:19:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1703791159; x=1704395959; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=080/sJq+DXpSucnyvaclU4jb4q4w+Y7ix8T697dEhcw=; b=ZqPN6PpEsEc8xchovftJE91Fo5btsMsCtC7/LmJFpVFIHcKA0aJfBk0e43Y1pCW4ec Vk3hDT9wc8x9sdJ0XpHUp7oInP2c0qN29KE5tv77YHFybf60CcpdaM6pRZ1o8K4AoCJ0 yHS6C1AR9Ar+o/6FShV1XW1czDivc0CWp1p65s/xcUxyl7+gnEDvlbz1bADcu3vNdG2Q Cra/tt9YJpkZrXBbNMQceDVGiru3rdD8DIHoLh5WM4uJqcU8LDwsxpWewDwmaC6gJfXX FLOepOe+3qtc4cc27RzxY41G0cnOO7qrdETshmiPmOvPFsu9VthplgN530rAi7wJaXLh xyyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1703791159; x=1704395959; h=content-transfer-encoding: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=080/sJq+DXpSucnyvaclU4jb4q4w+Y7ix8T697dEhcw=; b=biSqDhR386WZT72Th9MTUZEMsIAvxHt62hPgSXyZAUDjGXuXRcEF4VqYX3j3HaL68m ULQCVP2v1mWDkZs2S7g+98dBrrwYG6WcmTzd9zn7QNgJrVSs3GJ+fuh2aLNa0gpxuoF7 X3m3ZCb3tCVXDHmJIiIHUWfkZmdiYwBIi73J6ptXPHVGUtlnsEbZXWZv8nCew+Xxnbnw e+cH/tOEXsMNMCKCaUziJlY9rQLom6bnaWD/DSi4haRQ0BV67nQ3vvsLUelH7wOyDa0n lI+vecElCkldvbzGTcQH1Mn5Oe4KQ32/bNOJd8+m1MQed4Wifocez+ktuYj63ybSGEiQ yGhQ== X-Gm-Message-State: AOJu0Yz8QxkTQVWDkFWNrnM+Ed9SXmm0iTb8gZJzr/kAIt+pFmryLKcN QSW6VakSirORwPfrGVxjIG2/JmLw8ELr999iKzo= X-Google-Smtp-Source: AGHT+IFyAf2HTDyyj4dJ70PQ/2P4yldM9x/VQzzb4CezsMCfI3+rseByYUrifgNHr6/ErhxPHvlGkpI4zmQh1Hfwsc8= X-Received: by 2002:a6b:e00c:0:b0:7b7:bc01:3723 with SMTP id z12-20020a6be00c000000b007b7bc013723mr15373843iog.20.1703791159123; Thu, 28 Dec 2023 11:19:19 -0800 (PST) MIME-Version: 1.0 References: <20231228061802.25280-1-v-songbaohua@oppo.com> In-Reply-To: <20231228061802.25280-1-v-songbaohua@oppo.com> From: Nhat Pham Date: Thu, 28 Dec 2023 11:19:08 -0800 Message-ID: Subject: Re: [PATCH] mm: zsmalloc: return -ENOSPC rather than -EINVAL in zs_malloc while size is too large To: Barry Song <21cnbao@gmail.com> Cc: minchan@kernel.org, senozhatsky@chromium.org, akpm@linux-foundation.org, linux-mm@kvack.org, ddstreet@ieee.org, sjenning@redhat.com, vitaly.wool@konsulko.com, linux-kernel@vger.kernel.org, chriscli@google.com, chrisl@kernel.org, hannes@cmpxchg.org, yosryahmed@google.com, zhouchengming@bytedance.com, Barry Song Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 2294DA001A X-Rspam-User: X-Rspamd-Server: rspam04 X-Stat-Signature: zkscpzrfa4h9qof9tgwtyure35s7hm8o X-HE-Tag: 1703791159-146323 X-HE-Meta: U2FsdGVkX1/pT5fozOD97ixQQfxYB44FlposwPBfdQ/+fpedrNPXexAnRkDcqHLsAj+CJ0f1Wm9KVeKqcm0jFNBRZcu+aJ1Mh6TUjV2bmXKWPjD9K7cKb+WDBRRNevpbGI0FtSq9YLdTZjtRiQJk5CHsLAA84FCHJ5cYvOF6C89kx/OZ7jCtIm7HxtfrjRK34lFK/0IcAcnB7YhZhB2B6pUowvaggE8VGnz942dIcA6npjOYwEteQnkyETgiujLS81MV0pDKT8K6+k0mm84vMqWcpT8do39g/fbnsCVisnDUL2XtuzOKslRUWR6gxyTyFdkqAwy7ywyrojtmn/hxVPx7ZFRHK5QvHqvFYdOLgoE24wHEhj2QalL6q+ak1XJt8vD7SpEHnZNoDYNhS9ECnKDw0klsMd1TJnDGtmcxPp3aAaRBOP9JAQNt9RnsKRqt6PVrMesoU7kF+oomAgYQBn4WPFzn5tAhGN/aZnaPPqQTu4DD5s0ozvETfhKUmHUVDCQkfFSkZNlTXXm/HwVJjRBzM8Re5BKNhLvODk470WVSISl4LN4T5quCZgBhKf3ieGs+HH5XYSfetKItUB3HZ7rnVYphCbA6trIHMym5XQXS3DzRfW4toLDybCQhuH9bDNlGlRcum0e+F23iTj9cy6FNw3ZkEQetGe+wGENtJ/OYvB91Y/2LvNP1H2qrpZlSerN5JFsDcPUw+8wNukoBid6uLKPvubXtaSGtcbxqCSt4ncBY/PBDWH4M6X9ppgkgkqJ5W1T55vWFHJxEizliRZoMsjwx+Ovv/1N7ijywH7Vr1Xh0m34sgQ1DrRv6/auyWJBpxWRDAeRytozmSsUvncUJ74iZPpdHA85MHHycb+kJDfo5V6Bm0y/npW1veIUDgmsWbLPIHvYeG9XMgmmy7+gUY1ajafEHA6dePcY7sEm5V915RkddFGLNx7rJYu0r0ggdhY8B8BdHEOjEJOe o97tdq7P qxReh/mXhYkHXFcxB/H16/ob981eG5g+nBXJmbEtah0RPhW92rn1HoSt04CgM4FHdJG1QbAHfb6adZLdAw+5EE7ZvE6drI9ae616+VUGtVGT42LnkEwpRjgt+90Z5+B5Nek4p3en1fm4szaLskqfh9/PYK3fPAMY/EFM7Xbq9Mo7nbHmTafglaB+a3RVs1XepKeAoM3ZYpmUIq3xSJQ6G2H/NJGsUYviTGwZtZAC9fJxqcaT9Y9Cjufzqh906n9tiusSA2Z5M8i/GEh65JvnMYLC2OKOZKQs+BxMw/vMPgEArlxmH/HHrRl4F3q0/3WOIp9MerCeaGV68kDKFu4313ThR/CiuYkdfsYBhmGkGHjlW55zWlcyROYnMq0kB5srAnkVpXciD95lY1pfVFzj+n1AbFDxBZ11Z4oPemCZST9kdOIbkzY3LiI/6ALQEYz8/bUAOBOmORPG1sXfM5g7rb1dr/USvw7BwmrtUBRI6ufbW5ZI= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000014, 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 Wed, Dec 27, 2023 at 10:18=E2=80=AFPM Barry Song <21cnbao@gmail.com> wro= te: > > This is the case the "compressed" data is larger than the original data, > it is better to return -ENOSPC which can help zswap record a poor compr > rather than an invalid request. Then we get more friendly counting for > reject_compress_poor in debugfs. > > bool zswap_store(struct folio *folio) > { > ... > ret =3D zpool_malloc(zpool, dlen, gfp, &handle); > if (ret =3D=3D -ENOSPC) { > zswap_reject_compress_poor++; > goto put_dstmem; > } > if (ret) { > zswap_reject_alloc_fail++; > goto put_dstmem; > } > ... > } > > Also, zbud_alloc() and z3fold_alloc() are returning ENOSPC in the same > case, eg > static int z3fold_alloc(struct z3fold_pool *pool, size_t size, gfp_t gfp= , > unsigned long *handle) > { > ... > if (!size || (gfp & __GFP_HIGHMEM)) > return -EINVAL; > > if (size > PAGE_SIZE) > return -ENOSPC; > ... > } > > Signed-off-by: Barry Song > --- > mm/zsmalloc.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c > index b1c0dad7f4cf..c937635e0ad1 100644 > --- a/mm/zsmalloc.c > +++ b/mm/zsmalloc.c > @@ -1364,9 +1364,12 @@ unsigned long zs_malloc(struct zs_pool *pool, size= _t size, gfp_t gfp) > int newfg; > struct zspage *zspage; > > - if (unlikely(!size || size > ZS_MAX_ALLOC_SIZE)) > + if (unlikely(!size)) > return (unsigned long)ERR_PTR(-EINVAL); > > + if (unlikely(size > ZS_MAX_ALLOC_SIZE)) > + return (unsigned long)ERR_PTR(-ENOSPC); > + > handle =3D cache_alloc_handle(pool, gfp); > if (!handle) > return (unsigned long)ERR_PTR(-ENOMEM); > -- > 2.34.1 > LGTM. Reviewed-by: Nhat Pham