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 2AC6AC021B8 for ; Tue, 4 Mar 2025 13:20:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 674126B007B; Tue, 4 Mar 2025 08:20:00 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 624116B0082; Tue, 4 Mar 2025 08:20:00 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4EB1E6B0085; Tue, 4 Mar 2025 08:20:00 -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 316976B007B for ; Tue, 4 Mar 2025 08:20:00 -0500 (EST) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id DB19C141C36 for ; Tue, 4 Mar 2025 13:19:59 +0000 (UTC) X-FDA: 83183926518.01.A3947CA Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.172]) by imf05.hostedemail.com (Postfix) with ESMTP id 0764910000B for ; Tue, 4 Mar 2025 13:19:57 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=ELQAh9Xf; spf=pass (imf05.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.214.172 as permitted sender) smtp.mailfrom=senozhatsky@chromium.org; dmarc=pass (policy=none) header.from=chromium.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741094398; 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=rsYEnEDGDEiInTO3ukZFQ+GokK6aXOyrP3pTeF30GtI=; b=qqQhyUQvdGfnSk9VZtMsEgJ246LvibU3w0wbsY2Ak0XRv/EVKU0rAw/8RNJ65l8UxptP8A UcpVmr3sL4r4z9v2ykZSQ5Al9dvCEAnJA3ZUOdVeQRZq5i5aUIavudJnpbXyM9RvHS+JLv sOlQhpp/1icCfFISV0Q6s2bXmSayfFA= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741094398; a=rsa-sha256; cv=none; b=H0OPx+O7dlljNmhZQKkF1AGKNQ0HqkpWFVD0648pGGrnBKmb7XF2ktvWR6rA97vPMqOKsZ LhY4KNWykPYhVqT7I8CzQiK6twCrExH6mm7f62o2r77RWR29chbOJVbsJdWKcF/3fxpc4l lo3CiKnZeyZXhrloJ0CwBz8wWOUr/IQ= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=ELQAh9Xf; spf=pass (imf05.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.214.172 as permitted sender) smtp.mailfrom=senozhatsky@chromium.org; dmarc=pass (policy=none) header.from=chromium.org Received: by mail-pl1-f172.google.com with SMTP id d9443c01a7336-2237cf6a45dso51950065ad.2 for ; Tue, 04 Mar 2025 05:19:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1741094397; x=1741699197; darn=kvack.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=rsYEnEDGDEiInTO3ukZFQ+GokK6aXOyrP3pTeF30GtI=; b=ELQAh9Xfbgnjzw9+oTbdt4KLNk2IfFHNUdX/8MoYP3x3BWw+WnFPSc2DjI1mv3HG1q 3EGtccbqGis0Fz3+oqhZYwqrZQC8BtqCVyKsEknVLCuXrNaqN7zxx6+nDnPkFY7jVmF7 kLeVLq3VBZpKpV99CV/DUo/Ogb+sFNWZMBcIg= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741094397; x=1741699197; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=rsYEnEDGDEiInTO3ukZFQ+GokK6aXOyrP3pTeF30GtI=; b=dHvN8MMhuz1duLZPcXyfQALlUTifd89p7axhNUUjOmOBJmJUBizuQoJpbNTk4M2P7Q 4yUwjY7Yg1lxI2kU+B4Yt+IrqmH1llFJk0Okb0EwXUi54riIOnP8KSpTS6Bg54sjeo5n fatpe5Ts/qpAuK0Ogw9KJfhXHHC1uKUIEK52kO2Eacn95OwM109LoS0Yj/E/JWNlwWZi HADAueoQh6O7sPBRXPZHUmd0ae8UdEXbKbDGvf/xRSQHEMZDfswtY0q+fChqECUOz781 oJbmaLNy+PXU7Cld9Y4M91QKBdmngoQm9Pxk9fI2Gcs2y7RRZQjZ0ztuEoCBiS/h/IQE VZTg== X-Forwarded-Encrypted: i=1; AJvYcCV+YKZHq9QXFv3H/gXFlJdbKR5OZCeKTfOQUT/6jaefbegzhso7zdu3htMFFBYxnPoAQyRA8Et+0w==@kvack.org X-Gm-Message-State: AOJu0Yx5l8Q6gsr3QHZGR8aF7jL2rFtYXKoqcQTgBvvzyH5waFmkMxvm hjn1TDoSwgPiLN1WlhdZr9wPZmtJrFQ0fEOZltWvrRaRB7WvavsbX0f5ZqQTow== X-Gm-Gg: ASbGncvloYHChVOqoNdVbFMGpMiUC18FA/M3EWSfej9WtJ9A2AjR2jG/OxAbjWE15L/ PQiS+hu5kPgmpdy89drlRFfMtCEHAhbJCEtFwCoIOenOJz9qQWFcrSysM/DkcJMfZtI6iuZW6vV 2lO/ZQtgkEC2xC1GrLpsvp/m0aYS/Ep0I/GcB5SspYNq9sWxnjb5roaF6ccLCEyzFiOTU6HBihz Fgzk6YliKt2kbI1+POmDbqVm5ESUVG5ppgmEuYCfGsA4c7HYf9nZPRvosXCtZgKJIO295pl4rSz 2a5U/hINsYdk37AIDH6YSOqU+/02G68uLUnGoj9lEGLmTZI= X-Google-Smtp-Source: AGHT+IEy5sLNS43nRq/vyH8BFlfow9g+v3waSagmkGS1xuRNy2LAI7XEalnQgGvFm9vagu9SGl7pfQ== X-Received: by 2002:a05:6a00:b96:b0:736:4644:86e6 with SMTP id d2e1a72fcca58-7364644887dmr15703591b3a.12.1741094396590; Tue, 04 Mar 2025 05:19:56 -0800 (PST) Received: from google.com ([2401:fa00:8f:203:767f:c723:438:d0b1]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-73519c31931sm8458429b3a.20.2025.03.04.05.19.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Mar 2025 05:19:56 -0800 (PST) Date: Tue, 4 Mar 2025 22:19:51 +0900 From: Sergey Senozhatsky To: Herbert Xu Cc: Yosry Ahmed , Eric Biggers , Sergey Senozhatsky , Linux Crypto Mailing List , linux-mm@kvack.org Subject: Re: [RFC PATCH 7/7] mm: zswap: Use acomp virtual address interface Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspamd-Server: rspam02 X-Stat-Signature: mwnmap74gx4nrhsmhuq84ei1hqw51yhr X-Rspamd-Queue-Id: 0764910000B X-Rspam-User: X-HE-Tag: 1741094397-487426 X-HE-Meta: U2FsdGVkX1/HL0n9dsnLws2Y4SP72oK8J2+xM2qT+4pTCeT0y0R+HENvHLwR3pE/qTe6k/q1Gj4q/qixNDYDz8vP3SHU0f8hvJrMxfInRAfmJp2UE8fHHCUE/x6WXhpgkoJ/aFdRi9rxR5KRmN17MokPx8sKvb13rTXKQ+0h7xKedcCCoq9a8GfGk4kOXfULWBNKNL2C/NFKFMMR6SzTmmwS7kKwV5Lgr2PhgGWcR6d4VhnVYbGRFw6n/56enVg5Fot9NwZpFYKl+eCvhqYFQGytyLQyeAnfzVu/3LNK1wYnU1szfm5setNfE57kUunwRQdOlFke151clvo1baxI4m5XBesqRaNd8HkaQoi7hgMta2fiIPT+3gpZPOKhZEiYHct7NsxPVE4zSN7TD0NMIULjUlgKSlRpdrxC5izaTtw5I16T2l+IpGp/lbcdm5JGoGKgO0qOszOE2HUA3VyjEzP49Z8GO7DP/TcPlGUGF3LaZpAqNYGaJ02wpDWF9juVBSFa1kjLBIJEJbJ9WU409eobbV+ePs7k7Ky9lR7I0mldjt8u+JJYBNWPx7gz9CTBn6K7vjeYkAWFNpWGOB6XceZvPnrjsN7iT7W/ds2lAvCgS+aADhm+Pe0ysBeu9/ZmsixT0CuhAZQpSUDZmmmW/qD4r6nCoOEQou6RIyLBu/NGlWtruIf2jiWK9Ml6Py71qqo7CegZcquGSOMEonuOzbG/dzoBv3sjEd3w5a6VT56MKU3aQOJy2Ic7KLeKzXCydQGlOWfnzC+o5j6XCJugntni8fJaBFdLRl1QjVEOsjjeOoco09pHlrOW5wILmx2/mbLCHUhyK5kDxx+PKQr74loLLN3EHOJ0woynKT8Q/Sv5F6NjNT+FgOMxn11hKlw88VEWKz0LhO8faX+ghvBtfuJ9IXJ9lUGiQ94x3ByN5ZhMQKK/nbyYJGrUYPW3p+6g8Ez9df2sA4DaK5KVL5D DOpRjQ7/ K3vCSUD0ILcqS1UJiS6RvcEamXVeNDYn4F5rC/8oaJo90mM+jm2rC6+jcjLeRLWkJJ7KatwkE1j3Y0EkR6gtlHdP+PkAIXE5Rg/iExLS2d3qqur7x15LHnSwhWVXKjn+/6brIPReZCGYdAw9Zdah0ukIQaR3QbBj8FO80p6LRTomdNtGz6e1uLddnWraNNxz7/6txON9LSN0HtTnDxmQQVW0wi9jALNiMJOIUt2FLH8DAaPjUqa11PwNhVzqVWwRnf/y3lOmZOZWZNIo5ToP+F8cxL+ov4qSjHtSWKjnaALB6w3Ql0rs02rRAEmvTPkm/wBDNOp9V7ZOQJyjKjJX+6LZ3DGvk6bVAgO0VRaup2xZoyH4= 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 (25/03/04 14:10), Herbert Xu wrote: > +static void zs_map_object_sg(struct zs_pool *pool, unsigned long handle, > + enum zs_mapmode mm, struct scatterlist sg[2]) > +{ [..] > + sg_init_table(sg, 2); > + sg_set_page(sg, zpdesc_page(zpdescs[0]), > + PAGE_SIZE - off - handle_size, off + handle_size); > + sg_set_page(&sg[1], zpdesc_page(zpdescs[1]), > + class->size - (PAGE_SIZE - off - handle_size), 0); > +} > + > +static void zs_unmap_object_sg(struct zs_pool *pool, unsigned long handle) > +{ > + struct zspage *zspage; > + struct zpdesc *zpdesc; > + unsigned int obj_idx; > + unsigned long obj; > + > + obj = handle_to_obj(handle); > + obj_to_location(obj, &zpdesc, &obj_idx); > + zspage = get_zspage(zpdesc); > + migrate_read_unlock(zspage); > +} One thing to notice is that these functions don't actually map/unmap. And the handling is spread out over different parts of the stack, sg list is set in zsmalloc, but the actual zsmalloc map local page is done in crypto, and then zswap does memcpy() to write to object and so on. The "new" zsmalloc map API, which we plan on landing soon, handles most of the things within zsmalloc. Would it be possible to do something similar with the sg API? > @@ -928,9 +929,9 @@ static bool zswap_compress(struct page *page, struct zswap_entry *entry, > struct scatterlist input, output; > int comp_ret = 0, alloc_ret = 0; > unsigned int dlen = PAGE_SIZE; > + struct scatterlist sg[2]; > unsigned long handle; > struct zpool *zpool; > - char *buf; > gfp_t gfp; > u8 *dst; > > @@ -972,9 +973,9 @@ static bool zswap_compress(struct page *page, struct zswap_entry *entry, > if (alloc_ret) > goto unlock; > > - buf = zpool_map_handle(zpool, handle, ZPOOL_MM_WO); > - memcpy(buf, dst, dlen); > - zpool_unmap_handle(zpool, handle); > + zpool_map_sg(zpool, handle, ZPOOL_MM_WO, sg); > + memcpy_to_sglist(sg, 0, dst, dlen); > + zpool_unmap_sg(zpool, handle); You can give zsmalloc a handle and a compressed buffer (u8) and zsmalloc should be able to figure it out. WO direction map() seems, a bit, like an extra step.