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 5F02BC3DA7F for ; Fri, 2 Aug 2024 19:02:10 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id ADC4F6B008C; Fri, 2 Aug 2024 15:02:09 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A8B5C6B0093; Fri, 2 Aug 2024 15:02:09 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9533F6B0098; Fri, 2 Aug 2024 15:02:09 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 771256B008C for ; Fri, 2 Aug 2024 15:02:09 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 1CDC041396 for ; Fri, 2 Aug 2024 19:02:09 +0000 (UTC) X-FDA: 82408225578.10.CBCD1BD Received: from mail-pl1-f179.google.com (mail-pl1-f179.google.com [209.85.214.179]) by imf12.hostedemail.com (Postfix) with ESMTP id 1BD3140014 for ; Fri, 2 Aug 2024 19:02:06 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=lyxc+P5g; spf=pass (imf12.hostedemail.com: domain of vishal.moola@gmail.com designates 209.85.214.179 as permitted sender) smtp.mailfrom=vishal.moola@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=1722625281; 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=xaPRu7hct9rtRu+ze3cCugybIgVJ/rIQubAhNiOPdcE=; b=ZclbcWWS8H8D6mm6ZcI5l0NI5Ib016dQhmiqcP9q0t1ttlxG+VDi94Y+XcJbYBLHzAUTwJ 8AV/Eh7mEQn8zKWx/J5DiwCOFeBDIP2x+o9Gyd1Nb3EP9HgfZPLr5/MFlFT1IUQi1VSY9q cgijS8z+wMDDipMG4iJXxi/zzkgrynk= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=lyxc+P5g; spf=pass (imf12.hostedemail.com: domain of vishal.moola@gmail.com designates 209.85.214.179 as permitted sender) smtp.mailfrom=vishal.moola@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1722625281; a=rsa-sha256; cv=none; b=BGoDjtwljwOPqds20XuCZYkzAsJJxEgQDGsP1QAXehj5tKlk8m93XxfomrnwEP0eZmJyC4 NVbVK8gbhk2Clg9JbGJSfCIAsre0nOU7+d3HD2s3NCQ1+l9xZelWb7Jkn/2RHxKYBjRiX7 vh/1Z65IPdx+qhp7eE8OkPl5JmbA2BI= Received: by mail-pl1-f179.google.com with SMTP id d9443c01a7336-1fd90c2fc68so67375415ad.1 for ; Fri, 02 Aug 2024 12:02:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1722625326; x=1723230126; darn=kvack.org; h=in-reply-to:content-disposition:mime-version:references:subject:cc :to:from:date:message-id:from:to:cc:subject:date:message-id:reply-to; bh=xaPRu7hct9rtRu+ze3cCugybIgVJ/rIQubAhNiOPdcE=; b=lyxc+P5g1IqzEykI2OFYzKDxTpfFPqYw25X2VcnZWRHD+QRVdf7yYsMhllnaE0VoJu N/AotNrcKDuR3LJb2RUQ96kXBIh8wuyjU9Oy7boN8fTXWyS9QwQ6k/L4AB60D8h0aGHn Me4yOQgb55s4YVy9rhgfMYlM0qQknRGk3gtE5VSi+1CB6fkGOJQLew+oHmFdjXEqog+R x7nUipWsC3TXYSxCjMZ7AvW1+L9d9Xarj6r/DvyuFft9Ht5UStcNS+84q5dybdKw2vwa U1O8bjsQp3IVPwqnnXUJekDR6y2RWhox4v4N9/eAtbZNAWE3cJrpM1qupE8aqMYV+Mfg rQHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722625326; x=1723230126; h=in-reply-to:content-disposition:mime-version:references:subject:cc :to:from:date:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=xaPRu7hct9rtRu+ze3cCugybIgVJ/rIQubAhNiOPdcE=; b=Pq8YLhEv4Pxd4aD7CiWSw3fOgjCEr9R5ditoD8e2J/omR3+h4AjiOcYUnkX7hveV0g 40hLb+G8FMwe7m6pCu86fm5dSQG7Qk4WyBWI/wM94yYziP+RWHQalgEJV0EeR5ApEHDY 7ayFEYMEUv08dCMeU+awPe8xmFUWNHbxHAzgA39BAkRgH74X/jBEwDptSiiycvMOrp1Z mBzmh9QmSGNTWTW8E0GJXo+vY5lPQAOTXR2w2b++OZv9me89wK0SeKRR9bypJ9WRBa1c LDkYA28I1WPYwQ93xkLOXnPy+7hWdr8oCZ6YBp/V0GNv4z8+FzYWaTdb26Q0jbKJr1rQ Gjrw== X-Forwarded-Encrypted: i=1; AJvYcCXFDZhCSFiXVGCyIIdPBlfFMEoHuJPaEb+90DquLKx/FKcWw/QDb6639vOWbQ1yZOgUXaUhMDm1buinqxMw2wQ104o= X-Gm-Message-State: AOJu0Yz/qeYAl2EGZcYYiKUzLRCIv4as3HWqLfeTS9ISxRmZqQ+eWAl+ ea2Qd+Wnv+sNHPWH7nl8p9yttCnw3sf0+WNNgkCLvFEyxQR405Bd X-Google-Smtp-Source: AGHT+IFTtWPpiX5zilQD7jUgvn/k5ycmash7C+7lavtCrkyuc7txDisExatDGL0C1GCIEv746aY+AA== X-Received: by 2002:a17:903:234e:b0:1f7:3d0d:4cd with SMTP id d9443c01a7336-1ff57292a32mr56535135ad.24.1722625325543; Fri, 02 Aug 2024 12:02:05 -0700 (PDT) Received: from DESKTOP-DUKSS9G. (c-76-133-131-165.hsd1.ca.comcast.net. [76.133.131.165]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-1ff58f53c59sm20682765ad.69.2024.08.02.12.02.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Aug 2024 12:02:05 -0700 (PDT) Message-ID: <66ad2d2d.170a0220.668d3.6c80@mx.google.com> X-Google-Original-Message-ID: Date: Fri, 2 Aug 2024 12:02:02 -0700 From: Vishal Moola 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, 42.hyeyoo@gmail.com, Yosry Ahmed , nphamcs@gmail.com Subject: Re: [PATCH v4 02/22] mm/zsmalloc: use zpdesc in trylock_zspage/lock_zspage References: <20240729112534.3416707-1-alexs@kernel.org> <20240729112534.3416707-3-alexs@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240729112534.3416707-3-alexs@kernel.org> X-Stat-Signature: 9asnaw1egx8g4s4jz4z9wx3zpjkodecn X-Rspam-User: X-Rspamd-Queue-Id: 1BD3140014 X-Rspamd-Server: rspam02 X-HE-Tag: 1722625326-132669 X-HE-Meta: U2FsdGVkX18PUIxNB3Jw2Xp2/Ga5XUXxDv1OPa6eJsgpzDzb+cWRCYg0IepK50v+9Vs6tZtNuhBeSHDlmUBkbjBRE53ofxpI5yHYGrr7Qf6qT2EkGiZHFXmtQDS0rwyh5p9C8ho8EKB8VbcDByfgvdTnWIgFwSD4ZTrUsaj8cAjB8qfVOTZaNNijjkTMSSRpDiVgmR1VgjJhHfqornBax3hfIlht568/hXJZmAt7WitgrBSajniajHNBN2MHXoSkqrKzOp8tFwrptmZpCPZHeyYPKnBaSiYF3mrjNzPCd53LKuFkCLgsmASBrE8hhXPN+yiaU4dXd1OcgKapjaw3gE+sT18wzSTqyvwQLjNl2M2zAwmI+mbQn4m6sI9dwx4EayAOut09HTbOw21wCFwP621/pxDm+1C+FwXdgH3Q68yPzcv0dv1hg+st93pry3lFnnhtEKjn90p8UWnadaZdDWLUShFy3SzgEoGA5Oot6QYjbMLNbJAvMzSNihIXRwP01GUsPCpQB9VXwHpGWsmH5x2h2Y+5M5V0hN1ZkFTSzX+crMhvYJrfXB2nxzyJb9GupMyEnOenAJadIfKn9Fhdddca7viWo+EkgMMfD96WNsBsaflRbRTALSk8K/Kd872OL1eKDgsBox/iRBP+cQ6NJ3FHQMLJ20NqavLJwyFNKRnh2OESMQMRdtGPYg07vmtsrOttxJtn33vI8n7+E7vEwqFSYaKwMshO84JOoSq9HVQYjLfPE8Vs3Vf6DS9J8ULKz47BmTXI8DwfI1U58/9oyI3a2HLDFCOcm9s8j1u4FUdanH169KfP6lv49dpW4m0U5etS6hhH1ubGIkIA9H7D6T+FLe+FFGEHKDyDgPT5ulHKvj2Z0vY7BS23gm6uHKjRs5Z5ospuwaWeaFafnlBkmGFTpessXsp5TiSzA1UhseY7KBvuRLSG2F2HphV1iSfgQkn6DzU5J8Vp9evmOAW imdPhyFM FpzQxeUrQlY54guMAQZMFXe/yPrbNw41d6SY7aXmpy7DLYpZqsVx97wfpu+eedx3bbsvHMSLqXrT63wysqzcsr1B7vEyBcXT2+OCKxUM8g/2d24H6jXbtK5QalVUmtnzwGkxLeqWDA0MmS2UXUPjJyYFHRjWs71T9ELB9jBGCcrBw+pTdkVO0+k7+KqRWt7u4HXCARqs8J8mQ5KbK80wN9J3Me7XM5gC+P2Pew0Nk4rXBXkU759dbGLJPJeT0PaWXuUJ2t94kLhDQPnqlgRXgU9khYhAb3dAiGuenPooUg1YJnc4rV2IAfbb/iFf9EMSZEi/VuCaswpKrv+9Tw1AyQBYBXAhRAC/bnFOR00WxvBOBGCmV6WnXH8ZZXLwf4UXhu8uH/JlAqoBKxigJ6eBT0NDH+1O56HOBHBEFcqhbWsJnzuzmIad4piMjqe5DxxfUBuGeu5CkfdeEoyeNJM2+7mAfiJdyKbMEbDvPN8oTBsacoPO0ar9Kzr3rZB8u9Gf/QvLZWrkfw1oXPbOS5eiklOY4/8ZVVDdH+eFUclFG+sqNrMTxvOns439crQ== 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 Mon, Jul 29, 2024 at 07:25:14PM +0800, alexs@kernel.org wrote: > From: Alex Shi > > To use zpdesc in trylock_zspage/lock_zspage funcs, we add couple of helpers: > zpdesc_lock/zpdesc_unlock/zpdesc_trylock/zpdesc_wait_locked and > zpdesc_get/zpdesc_put for this purpose. You should always include the "()" following function names. It just makes everything more readable. > Here we use the folio series func in guts for 2 reasons, one zswap.zpool > only get single page, and use folio could save some compound_head checking; > two, folio_put could bypass devmap checking that we don't need. > > Originally-by: Hyeonggon Yoo <42.hyeyoo@gmail.com> > Signed-off-by: Alex Shi > --- > mm/zpdesc.h | 30 ++++++++++++++++++++++++ > mm/zsmalloc.c | 64 ++++++++++++++++++++++++++++++++++----------------- > 2 files changed, 73 insertions(+), 21 deletions(-) > > diff --git a/mm/zpdesc.h b/mm/zpdesc.h > index 2dbef231f616..3b04197cec9d 100644 > --- a/mm/zpdesc.h > +++ b/mm/zpdesc.h > @@ -63,4 +63,34 @@ static_assert(sizeof(struct zpdesc) <= sizeof(struct page)); > const struct page *: (const struct zpdesc *)(p), \ > struct page *: (struct zpdesc *)(p))) > > +static inline void zpdesc_lock(struct zpdesc *zpdesc) > +{ > + folio_lock(zpdesc_folio(zpdesc)); > +} > + > +static inline bool zpdesc_trylock(struct zpdesc *zpdesc) > +{ > + return folio_trylock(zpdesc_folio(zpdesc)); > +} > + > +static inline void zpdesc_unlock(struct zpdesc *zpdesc) > +{ > + folio_unlock(zpdesc_folio(zpdesc)); > +} > + > +static inline void zpdesc_wait_locked(struct zpdesc *zpdesc) > +{ > + folio_wait_locked(zpdesc_folio(zpdesc)); > +} The more I look at zsmalloc, the more skeptical I get about it "needing" the folio_lock. At a glance it seems like a zspage already has its own lock, and the migration doesn't appear to be truly physical? There's probably something I'm missing... it would make this code a lot simpler to drop many of the folio locks. > + > +static inline void zpdesc_get(struct zpdesc *zpdesc) > +{ > + folio_get(zpdesc_folio(zpdesc)); > +} > + > +static inline void zpdesc_put(struct zpdesc *zpdesc) > +{ > + folio_put(zpdesc_folio(zpdesc)); > +} > + > #endif > diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c > index a532851025f9..243677a9c6d2 100644 > --- a/mm/zsmalloc.c > +++ b/mm/zsmalloc.c > @@ -433,13 +433,17 @@ static __maybe_unused int is_first_page(struct page *page) > return PagePrivate(page); > } > > +static int is_first_zpdesc(struct zpdesc *zpdesc) > +{ > + return PagePrivate(zpdesc_page(zpdesc)); > +} > + I feel like we might not even need to use the PG_private flag for zpages? It seems to me like its just used for sanity checking. Can zpage->first_page ever not point to the first zpdesc? For the purpose of introducing the memdesc its fine to continue using it; just some food for thought.