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 05513C27C4F for ; Sun, 30 Jun 2024 13:45:49 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 17EC26B0082; Sun, 30 Jun 2024 09:45:49 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 12F676B0083; Sun, 30 Jun 2024 09:45:49 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F11C36B0085; Sun, 30 Jun 2024 09:45:48 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id D406C6B0082 for ; Sun, 30 Jun 2024 09:45:48 -0400 (EDT) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 3578E141656 for ; Sun, 30 Jun 2024 13:45:48 +0000 (UTC) X-FDA: 82287677976.05.3ECBEA8 Received: from mail-vk1-f171.google.com (mail-vk1-f171.google.com [209.85.221.171]) by imf25.hostedemail.com (Postfix) with ESMTP id 65DC1A0013 for ; Sun, 30 Jun 2024 13:45:46 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=iKoeSklK; spf=pass (imf25.hostedemail.com: domain of 42.hyeyoo@gmail.com designates 209.85.221.171 as permitted sender) smtp.mailfrom=42.hyeyoo@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1719755130; 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=W2q4kbqBznkMbLXR5p0F8VTc3UoCm7l/nJGxCVDkHuM=; b=QS42cPKOVibM84kkNqpp/o+2bK5O3Re3ETcPSYz9DZTrtN0xFZBNrEIxm1EF5sT4hqjHFx wzkNsbZA9tfDL5fJnLok20ESC3kjqrmIJsNkhRVKg8NOxzOVJ2GE1+OUxecQNO4AzreqEJ 5gNgqPv/Oa50OqwKN3DaV6WxGYr9xWI= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=iKoeSklK; spf=pass (imf25.hostedemail.com: domain of 42.hyeyoo@gmail.com designates 209.85.221.171 as permitted sender) smtp.mailfrom=42.hyeyoo@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1719755130; a=rsa-sha256; cv=none; b=nPEjVmikJcFBbcPGZvtYWvboji4fumQ0DTRKzrkHX582rCv1G6NJagxrpgc5zjMVLlMvg4 QzYXvjLrN/dAZwA/hNzxX4kn62QTW4pdx+Wp1md2+5DIoPctK7OHfiVqI0eYOv5ytK7Cit 8fkEWDk7W4Z8lFrjjW6QMqsYsm3Ol/4= Received: by mail-vk1-f171.google.com with SMTP id 71dfb90a1353d-4ef662a4725so996258e0c.0 for ; Sun, 30 Jun 2024 06:45:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1719755145; x=1720359945; 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=W2q4kbqBznkMbLXR5p0F8VTc3UoCm7l/nJGxCVDkHuM=; b=iKoeSklKamKemGsbYexyGpYLGFYUzdncmRVp9v1vklSyN9zC1hq2xeQgMh1OAkX4V/ Brl6wM4DD7YvLYtFd9ljxvAKQ8InNJNi0K4+mhDwdnCYb5KOmSMNtsHdHbwSwyvDcKl9 DoPNU3o2p3pQeMkQnPug/VgwcZNJGB37cbnL3JOMR2Vjk7cQaJ9ghTYqQsQAl6Ltd/nM rm+HLRvyJD/AC3JvFcQeSsxxRbgYryHkCJUTngGaALb6Oux75xL6rB6aSzmaONctaA/V 2dD0RttwrPWM3QWZLJms3dJCEtjRYDfhDsw4OpdWKO97ryyLlFNNdadhxQ2oHXIc88kR WaYg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719755145; x=1720359945; 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=W2q4kbqBznkMbLXR5p0F8VTc3UoCm7l/nJGxCVDkHuM=; b=ng6khxvkwKKV0SyHnVF4QBvEInwL7bFM3Fb5BiYDAhZuspvGhG7PIxdy5afj3AMING EKtT/WtEg59bQD38pzuzKGSzllfBJbu5iRUnyIg1oMmEHek9ocNz8VJ2h0UbRkIClUe0 FpjDFOAXnW4lBS41/dCt/6Jef0THhuKvzQN1EnQKAjm8+j9E5gSu6sAcm+mzM/PHDa3D ilb0828DCODV2/bAxXg1/2Ehz2p0gJopkuLWoK3Fe3eoxe16kXEQULiCs1dEN19R4A5g I00TWmWEU56zfVelFBdaFfeqkvaUNEUPDUD4tDfkEpGyOeLJZBqzQD0BUi+mmTjWU1AG z4jg== X-Forwarded-Encrypted: i=1; AJvYcCXP9rpRDi3g26JFFVFvsAAyKCusFMZinQiay5OSjqKJq6wocQHM8o5eUpWe/M799bS4+fJoQAF7TOo7aKmMagQaukk= X-Gm-Message-State: AOJu0YyW1ssr9dNC9O1TwFYiRUU/leYsXhzoJRrSsdfmYrfWWpDBzw/R maKsMTATGd3mUOSSU5VWz28rUvite5gYP6Z73tjQCLtN53Gf3rrHm/kFUFD6D7A3NXXVvPzuZkM Qu/bHNRoLgdJPDoVBolwYh1q/8ek= X-Google-Smtp-Source: AGHT+IHDRlhA8CgFly/vJ5nDQCcBIx9wkh5XKEQXnzczSgQoIb4W+7eBfnHh4LNlrXihhYD91/UI5KXToV5GpyJqCDQ= X-Received: by 2002:a05:6122:430f:b0:4ef:678e:8aa0 with SMTP id 71dfb90a1353d-4f2a5692d4emr2966558e0c.4.1719755145285; Sun, 30 Jun 2024 06:45:45 -0700 (PDT) MIME-Version: 1.0 References: <20240628031138.429622-1-alexs@kernel.org> <20240628031138.429622-2-alexs@kernel.org> In-Reply-To: <20240628031138.429622-2-alexs@kernel.org> From: Hyeonggon Yoo <42.hyeyoo@gmail.com> Date: Sun, 30 Jun 2024 22:45:33 +0900 Message-ID: Subject: Re: [PATCH 01/20] mm/zsmalloc: add zpdesc memory descriptor for zswap.zpool To: alexs@kernel.org Cc: Vitaly Wool , Miaohe Lin , Andrew Morton , linux-kernel@vger.kernel.org, linux-mm@kvack.org, minchan@kernel.org, willy@infradead.org, senozhatsky@chromium.org, david@redhat.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Stat-Signature: he9yjy615ukmz8mocpzbzmm19ukqed1c X-Rspam-User: X-Rspamd-Queue-Id: 65DC1A0013 X-Rspamd-Server: rspam02 X-HE-Tag: 1719755146-2218 X-HE-Meta: U2FsdGVkX19ywJgFJjhMvP7L7Y3UzgEEHW5bG4nrJLklDJyIJTdxSsgQjSL/kxrF8LrnLyT8RwUCulGPyt86AG+4jGwFNAWntoSYR0+XMbBdOI3cOjb4Tycl8t4DVQ+avO1/4x+yC0fODc1J/FdaQIIG8vxGx7ZjKWM7oxmfnz9YiDIBs23GugYVZW9hv1JTVsWgGrQN/KY/AVPFu2g/RGW6SbTbcnPvJwyzEOvcaXULVv4tzA6hgys1VydzB628W0D8jtNEzYWtqP/xC2rZt0Xmd5FMfBIW+k1XDrm3HPefwAgSJ6+3q3g6JP0IhHRl3d+wfyOrKEuyH+DgF/YDocM+Kn2mgrxtIqHT+/SJED6GSGeftqpyTN3g8kjG4CinZUJuuHP1bR4wVdgcHnngOJGIrYSvZPVIU/Anf/frYI4AgtYbgXqn+1JZjKtsq37Hk8ceX1j1+L2jt5hSQAlJNrKzcloXIEfmd+YVY7fDkkoA46wRozKTPXddWGivwbaMiGC1veUCRxw+KGR51Ne4FzbcwtW2QlBTezdtJiCS3/bBkxM++ujfz121YbKd6R1r/YBSkxNsaJDySqcmgpwx21BbDKAiz/ZfhDlltR+LTW67l7Tg69ljHfsEJf74/77HPFtr6q++IUzCUd71fEWdUS6hBf91v3XnWdZxMPmcMD9otuWWupa4VJVx3uLlzgP8qLWn16GX3pOaVqJFi/SvHdcZAyonRDSqLz4R8RqyM/ldPSv+IJmXAe7VSI4yqbjisrpCW8GG+yEPZZpgj76SbdFoT4X/pUsFeqmOObIZ1qo9enRdZddRE8fssD4aD4zA8sbtz02Zj94UQ0We13So9XmOToSDn1Lun7968bWI1G4FoCGMa8VHOGAr3PUi890sHAlw5Jgh7ivUYHzv2E1zePImo3iEPdxrKLbGSjLnUyXN0U1106kH0avHcelnW8IZ3jTXyFRyH9ijxZvdHDC fzb2P4CV 68yljVpIWh2vZpHHxgoVrWMAzGWagYUaKtyczAYWMOUdJdX2buZDZw4QNh7miBwQKeuu0pdTVF1Zh0RGJKtI9qqmqbaG+h3hZtOkjUWGONRN+8xCkJ9CMLjWTvjP0SPkOPDaMfRhjPswpiZjx3YVIuvD6ag7pt/8Gu2Inub9oeuM3UXkqKMPz/B6HwS2a0T+xljIvBX8uZGpiSXSM+y+Zczp40voUXs8f8V5Z0Sj1UBAzcx7LWp0aczs2tYue8N4nvfWKYgV1rRhYBcQgWX/MvbIQ6HTd/nLFR3AVZJzBnCcjK8k5fXqCUqmVmkTNU/NP4mkT0zY7PkXV7oEBGGCCMm2hheYW03dPtUNM9GifdGElWeB317krHdqO286JA1Gh59CrtP/xGMWYeM1gzDV2HOAh7ij0L/wm59mv 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, Jun 28, 2024 at 12:06=E2=80=AFPM wrote: > > From: Alex Shi > > The 1st patch introduces new memory decriptor zpdesc and rename > zspage.first_page to zspage.first_zpdesc, no functional change. > > Originally-by: Hyeonggon Yoo <42.hyeyoo@gmail.com> > Signed-off-by: Alex Shi > --- > mm/zpdesc.h | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++ > mm/zsmalloc.c | 19 ++++++++--------- > 2 files changed, 66 insertions(+), 9 deletions(-) > create mode 100644 mm/zpdesc.h Hi Alex, thanks for your effort in pushing this forward! > diff --git a/mm/zpdesc.h b/mm/zpdesc.h > new file mode 100644 > index 000000000000..a1ab5ebaa936 > --- /dev/null > +++ b/mm/zpdesc.h > @@ -0,0 +1,56 @@ > +/* SPDX-License-Identifier: GPL-2.0 */ > +/* zpdesc.h: zswap.zpool memory descriptor > + * > + * Written by Alex Shi > + * Hyeonggon Yoo <42.hyeyoo@gmail.com> > + */ > +#ifndef __MM_ZPDESC_H__ > +#define __MM_ZPDESC_H__ > + > +/* > + * struct zpdesc - Memory descriptor for zpool memory, now is for zs= malloc > + * @flags: Page flags, PG_private: identifies the first comp= onent page > + * @lru: Indirected used by page migration maybe Indirected -> Indirectly? > + * @next: Next zpdesc in a zspage in zsmalloc zpool > + * @handle: For huge zspage in zsmalloc zpool > + * @zspage: Pointer to zspage in zsmalloc > + * > + * This struct overlays struct page for now. Do not modify without a goo= d > + * understanding of the issues. > + */ > +struct zpdesc { > + unsigned long flags; > + struct list_head lru; > + unsigned long _zp_pad_1; for understanding, I think it'd be better to replace _zp_pad_1 with movable= ops, because mops reuses this 'mapping' field. > + union { > + /* Next zpdescs in a zspage in zsmalloc zpool */ > + struct zpdesc *next; > + /* For huge zspage in zsmalloc zpool */ > + unsigned long handle; > + }; > + struct zspage *zspage; There was a discussion with Yosry on including memcg_data on zpdesc even if it's not used at the moment. Maybe you can look at: https://lore.kernel.org/linux-mm/CAB=3D+i9Quz9iP2-Lq=3DoQfKVVnzPDtOaKMm=3Dh= UPbnRg5hRxH+qaA@mail.gmail.com/ > diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c > index fec1a39e5bbe..67bb80b7413a 100644 > --- a/mm/zsmalloc.c > +++ b/mm/zsmalloc.c > @@ -13,17 +13,17 @@ > > /* > * Following is how we use various fields and flags of underlying > - * struct page(s) to form a zspage. > + * struct zpdesc(page) to form a zspage. > * > - * Usage of struct page fields: > - * page->private: points to zspage > - * page->index: links together all component pages of a zspage > + * Usage of struct zpdesc fields: > + * zpdesc->zspage: points to zspage > + * zpdesc->next: links together all component pages of a zspage > * For the huge page, this is always 0, so we use this field > * to store handle. > * page->page_type: PG_zsmalloc, lower 16 bit locate the first objec= t > * offset in a subpage of a zspage > * > - * Usage of struct page flags: > + * Usage of struct zpdesc(page) flags: > * PG_private: identifies the first component page > * PG_owner_priv_1: identifies the huge component page the comment for PG_owner_priv_1 can safely be removed as it's not used after commit a41ec880aa7b ("zsmalloc: move huge compressed obj from page to zspage") > @@ -948,7 +949,7 @@ static void create_page_chain(struct size_class *clas= s, struct zspage *zspage, > set_page_private(page, (unsigned long)zspage); > page->index =3D 0; > if (i =3D=3D 0) { > - zspage->first_page =3D page; > + zspage->first_zpdesc =3D page_zpdesc(page); > SetPagePrivate(page); > if (unlikely(class->objs_per_zspage =3D=3D 1 && > class->pages_per_zspage =3D=3D 1)= ) > @@ -1325,7 +1326,7 @@ static unsigned long obj_malloc(struct zs_pool *poo= l, > link->handle =3D handle; > else > /* record handle to page->index */ > - zspage->first_page->index =3D handle; > + zspage->first_zpdesc->handle =3D handle; FYI this line seems to conflict with bcc6116e39f512 ("mm/zsmalloc: move record_obj() into obj_malloc()") on mm-unstable. Best, Hyeonggon