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 57AFEC4332F for ; Wed, 13 Dec 2023 23:24:59 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E61AA8D006E; Wed, 13 Dec 2023 18:24:58 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id E38228D006B; Wed, 13 Dec 2023 18:24:58 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D27768D006E; Wed, 13 Dec 2023 18:24:58 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id C13DF8D006B for ; Wed, 13 Dec 2023 18:24:58 -0500 (EST) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id A1A31A10C5 for ; Wed, 13 Dec 2023 23:24:58 +0000 (UTC) X-FDA: 81563377476.02.DB10137 Received: from mail-ej1-f44.google.com (mail-ej1-f44.google.com [209.85.218.44]) by imf25.hostedemail.com (Postfix) with ESMTP id CB530A001B for ; Wed, 13 Dec 2023 23:24:56 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=fNONR7tj; spf=pass (imf25.hostedemail.com: domain of yosryahmed@google.com designates 209.85.218.44 as permitted sender) smtp.mailfrom=yosryahmed@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=1702509896; 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=pFEmwUcK7ari3l1HAYNZ+QAFaZZrXeQEzXKeC4yMuRw=; b=msd7n+xZMuw+FtfUxXOw59m52F8gekxNUd3go0WlPIVv+cbllRxpy7zXpLd3IoB3Se76K8 qB1gvHtEnxhqG9NblD+H278TTmCV2cdBiRQxsCWSbP+bh/eRixmq2Bt1Gcwn85Q0GOnZPE nGH62Hk89Brdpay076y/YtjVOrRaYpc= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=fNONR7tj; spf=pass (imf25.hostedemail.com: domain of yosryahmed@google.com designates 209.85.218.44 as permitted sender) smtp.mailfrom=yosryahmed@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1702509896; a=rsa-sha256; cv=none; b=uvUoMACQLV8ZZaFOZemVxIzmqMImkvvKpShTPPPbyJYL2TpO4soeD+MdLn4bDfG1esA0hG mV5NSlHfFOJXXT7JQsWy2P50DBnO2QO52QHEtxgP0XoDClCRPIlgpYZsb+Tb0gjpqffTd/ xBAetWfkwldpRvN9qFFRPe8bFF+KOts= Received: by mail-ej1-f44.google.com with SMTP id a640c23a62f3a-a1e83adfe72so693780366b.1 for ; Wed, 13 Dec 2023 15:24:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1702509895; x=1703114695; 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=pFEmwUcK7ari3l1HAYNZ+QAFaZZrXeQEzXKeC4yMuRw=; b=fNONR7tjjWdPk0euWcvy3XBH+OUpQlgx3ccXwq3od0I8ZbyGqTf2lXR3MegB1C172W A3XF7dI3lbS1BYli26SegqoNRterPAABoIfrav7OhM6lnb8mqvdLbervnMvB4A0T59YW uJQuV2vLgeGjrCDOg1gzYfSrX7Sxoji6zND2BZX2j2WOZdlhGSIkhyeOz8e6uLSO2CWr lxPh/KDD6kFzd4LAFE0JbV2wVtSUI1WaM1c23sVj7bCgU5rikqdr6+X4EIzSVwPDgVIh ZV9k5J+Z09KAd+t5RHQiyPB8Uj426DeTtIOntMzJ79rQxgUCYCRXG/NJvgqzuLiubBdj PrBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702509895; x=1703114695; 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=pFEmwUcK7ari3l1HAYNZ+QAFaZZrXeQEzXKeC4yMuRw=; b=sLJ8NirchujD3P7TgeIjGZg/eibKEHVg9yNlpjK1b4NhytZxShJRLrEzHeAd5+f246 91ZleR4m/9hknaUmqRBOmv2SQPHTGmzIn1Ls9rbGFHzcSesvItEs7YzxNADgif+vaFlM hyg5VnbdTJFELcl7TywX7t43vrSKX2wOTUKWxRUUc6xFtaSHyZa88FZJN0Q8Wia8JDK2 RFKR6caJr/ca1YdbDAHSzzAbpqGIjg35YCVvyRlegnIo0o5jWBDYRIxFrvIVYeQ9ZZxz KFDVzJT/EOSkya3lEq5a46HfASXByPAIYg9OVP+T/kSrEqFsIlSvHW9WoUMWGI0Pig0Z JZXg== X-Gm-Message-State: AOJu0YwIWm93z1tsTGJitWMv6KBj4BFi+9RV9aLr05Pnxkldtw3N7fkl xK7RZj3CccOs7yJO5sHvKh45NXA2OmPfkWxpNsPa1g== X-Google-Smtp-Source: AGHT+IFxWZstDV0MDpA8pfegUWB3HXmyzLLjGIG85pRq8f9FDhZWz+x7TIjmybFMQAcLJhNDAUPvdhfz+lXRkaHNckc= X-Received: by 2002:a17:906:35ca:b0:a19:29b3:89f4 with SMTP id p10-20020a17090635ca00b00a1929b389f4mr4825392ejb.52.1702509895189; Wed, 13 Dec 2023 15:24:55 -0800 (PST) MIME-Version: 1.0 References: <20231213-zswap-dstmem-v1-0-896763369d04@bytedance.com> <20231213-zswap-dstmem-v1-1-896763369d04@bytedance.com> In-Reply-To: <20231213-zswap-dstmem-v1-1-896763369d04@bytedance.com> From: Yosry Ahmed Date: Wed, 13 Dec 2023 15:24:17 -0800 Message-ID: Subject: Re: [PATCH 1/5] mm/zswap: reuse dstmem when decompress To: Chengming Zhou Cc: Andrew Morton , Nhat Pham , Chris Li , Johannes Weiner , Seth Jennings , Dan Streetman , Vitaly Wool , linux-kernel@vger.kernel.org, linux-mm@kvack.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: CB530A001B X-Rspam-User: X-Stat-Signature: 3b7wa3uohwwascibbxg7tmyuuhuct1eh X-Rspamd-Server: rspam01 X-HE-Tag: 1702509896-596920 X-HE-Meta: U2FsdGVkX18Myaopon5ESClWJ1Z1tHIo5lIH8bbvMHjYn20Fvz3i1yqzg1QTsFLOpuiVXWPV+s+z0ZPs9n5pGiRLueWjKidQuD9g8Efbd9bqgRALO/eq3wedyqdupZKJkbU0kqum5v8BDvSAE7jtNhO7caIqTHGkf2qOU2/rSjuRMTQy3I20TDoL4w6LSc2lrPjc/kKB92cXfs+qFHf5gw0x0ey3uWUZ1Q7+VnuDNMUQKAzqLej5lS/9ltaEkbBOmE6L1lbLr7jcdv193/xxnr/8wfz3N3vjI0sFGmJGg3uaiKTKcjdab1IwtijiYLI+zdLDBaX0YtinUOtnVrjVSgzJ77XnKFJ93NaWfXsKKCfllk6P1Vrv9suWuhR/AH1J0mTExv45pILHhJlfOIKRS4bMPCf8pPx6YdwuWC6hSJqFXvwM25eSANSDZEg0j8+oGL7rnJozm9w7efNcG7ad2nhpXpH0HbzcoTV2VM4FDOTjopLLpUzNNeGDzsHgvP83TJcQLghZVnDDhVcbNREHe5pwKeYMQQSCgwP0aubu0ihB57Zg8buDPUSGjLjWbc/69E4ir0o2G5UJa95N5i4Cos7k15X2qBRv32gJ+kvIvmjPDtClzkIjQ6yO3DSihktpj/iVRjWbMvXAgy/sINOzAIeICuZDFg2BFIKp07ubCs8QLH6G5Xd52kUbBoDFK/cf+1ZaEPlZ/Kk4xWerCcSbsCbaGwAnbL/B5aHpJ5tBTdMoBE4RP4rHD4e1o01mbBgzY3wHutdVlAS8h7HyeWjJzlRQ/QtGoU2KsSsUCUurtTywpm1qMHAcTlFdCir2Sw5qflXDjH2/ZbwPh8EW3SlXZGWwH70Gc049hAhjH9hO6t5mkly7/6EKocIQOaAHKgG6FVYKFyIutJD9edySxTCfa21q4TB5M1QM7NQPEXKuVH5XItaoSKiIXzjA2QMwO+E+wBF8nkcLdLNIoPDmJUJ 3IeIVzQJ djmQUw8wNVcZma72u+PgMbeQAqUXvWCCGttJdEQQ0SQCdtf76Sv5ri8ST+922yrlKI4kM6jZIFzyUFPCmaH1TTcxWDfA0p5Ps/KjCph+BrzZjcFf+nBo/waGjBAll647flci9syVHWDCKS8xpbRoSywte7TvA+CzmUe6k+QgXhce6OB2AMk8IHVPA+OHTdPTLYUFDiBxeWUmG333JeWAHpLX7f1zrldW5SNV6qpkNO+ULRMRGYUkOT29oXmqFmhAm9sdSgzTHYIIYygjEZF8p8ZhsoeXkssYThhBRGhr0gS5ZForfz8Frt9R89A== 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 Tue, Dec 12, 2023 at 8:18=E2=80=AFPM Chengming Zhou wrote: > > In the !zpool_can_sleep_mapped() case such as zsmalloc, we need to first > copy the entry->handle memory to a temporary memory, which is allocated > using kmalloc. > > Obviously we can reuse the per-compressor dstmem to avoid allocating > every time, since it's percpu-compressor and protected in mutex. > > Signed-off-by: Chengming Zhou > Reviewed-by: Nhat Pham > --- > mm/zswap.c | 29 +++++++++-------------------- > 1 file changed, 9 insertions(+), 20 deletions(-) > > diff --git a/mm/zswap.c b/mm/zswap.c > index 7ee54a3d8281..edb8b45ed5a1 100644 > --- a/mm/zswap.c > +++ b/mm/zswap.c > @@ -1772,9 +1772,9 @@ bool zswap_load(struct folio *folio) > struct zswap_entry *entry; > struct scatterlist input, output; > struct crypto_acomp_ctx *acomp_ctx; > - u8 *src, *dst, *tmp; > + unsigned int dlen =3D PAGE_SIZE; > + u8 *src, *dst; > struct zpool *zpool; > - unsigned int dlen; > bool ret; > > VM_WARN_ON_ONCE(!folio_test_locked(folio)); > @@ -1796,27 +1796,18 @@ bool zswap_load(struct folio *folio) > goto stats; > } > > - zpool =3D zswap_find_zpool(entry); > - if (!zpool_can_sleep_mapped(zpool)) { > - tmp =3D kmalloc(entry->length, GFP_KERNEL); > - if (!tmp) { > - ret =3D false; > - goto freeentry; > - } > - } > - > /* decompress */ > - dlen =3D PAGE_SIZE; > - src =3D zpool_map_handle(zpool, entry->handle, ZPOOL_MM_RO); > + acomp_ctx =3D raw_cpu_ptr(entry->pool->acomp_ctx); > + mutex_lock(acomp_ctx->mutex); > > + zpool =3D zswap_find_zpool(entry); > + src =3D zpool_map_handle(zpool, entry->handle, ZPOOL_MM_RO); > if (!zpool_can_sleep_mapped(zpool)) { > - memcpy(tmp, src, entry->length); > - src =3D tmp; > + memcpy(acomp_ctx->dstmem, src, entry->length); > + src =3D acomp_ctx->dstmem; I don't like that we are now using acomp_ctx->dstmem and acomp_ctx->mutex now for purposes other than what the naming suggests. How about removing these two fields from acomp_ctx, and directly using zswap_dstmem and zswap_mutex in both the load and store paths, rename them, and add proper comments above their definitions that they are for generic percpu buffering on the load and store paths?