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 7F40CC47DD9 for ; Wed, 28 Feb 2024 05:43:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CA31C6B024C; Wed, 28 Feb 2024 00:43:46 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id C506D6B0254; Wed, 28 Feb 2024 00:43:46 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B17FA6B0255; Wed, 28 Feb 2024 00:43:46 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 9E99A6B024C for ; Wed, 28 Feb 2024 00:43:46 -0500 (EST) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 3C365C0E25 for ; Wed, 28 Feb 2024 05:43:46 +0000 (UTC) X-FDA: 81840120852.09.6AB417C Received: from out-176.mta0.migadu.com (out-176.mta0.migadu.com [91.218.175.176]) by imf06.hostedemail.com (Postfix) with ESMTP id 628E618001B for ; Wed, 28 Feb 2024 05:43:44 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b="BD0d/kX5"; spf=pass (imf06.hostedemail.com: domain of chengming.zhou@linux.dev designates 91.218.175.176 as permitted sender) smtp.mailfrom=chengming.zhou@linux.dev; dmarc=pass (policy=none) header.from=linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1709099024; a=rsa-sha256; cv=none; b=HCjHjjZk3xxeOV5vx+h234U6nYbRVmX5XCHSxpY/wYWjy3YOKx0obQ5DwPdEwZXpYQblsr 6BbcVLQx9GeUUgzvId36md8XkeTqwCf1X4fx8bmrgz4scpzqePJQ7bBpgOBz/4i13aYAhZ /RTRXDD2yYwXzR43lYxXjQ02VYPNsUQ= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b="BD0d/kX5"; spf=pass (imf06.hostedemail.com: domain of chengming.zhou@linux.dev designates 91.218.175.176 as permitted sender) smtp.mailfrom=chengming.zhou@linux.dev; dmarc=pass (policy=none) header.from=linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1709099024; 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=l++iOCqyZO1CS1muFXU9O7bGLWcbSNYXIqpB73Ui0aM=; b=HMjQAR/Cv1kEhn9fC5Bk+eD+JRa3cDCJDey4+FYqtBmVCrBFxz98Uq1pPbitJtQA0cctUV LRHiPW7d5syn5dH3ezTwO7LT6N0XU35g6YSMzRMoHK09tdbfYOHgGeRJ+2HX2TJ98M/GUH 74lnya1Gde3NRcdaqQjmZMtz7zbSBzY= Message-ID: <913f1a04-8fa2-46b0-85dc-edd23477a1d6@linux.dev> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1709099022; h=from:from: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; bh=l++iOCqyZO1CS1muFXU9O7bGLWcbSNYXIqpB73Ui0aM=; b=BD0d/kX55nWw6Z/vo5v4uMJlEMGO6Ut0NyuoKToZJOEP91ok9gNi8C7JtAHoBRPG0C8LhW zfvsTnwtpVjfN75CiocJVFiE88F2nI/edNDCZMpFyP7o28aNBpbQ8xmn/BS6Yg6alShtkL SjwaBxv1hqcenzVi4S4rAu4HGlkLGNE= Date: Wed, 28 Feb 2024 13:42:47 +0800 MIME-Version: 1.0 Subject: Re: [PATCH 1/2] mm/zsmalloc: don't hold locks of all pages when free_zspage() Content-Language: en-US To: Sergey Senozhatsky Cc: Chengming Zhou , yosryahmed@google.com, hannes@cmpxchg.org, nphamcs@gmail.com, Andrew Morton , Minchan Kim , linux-kernel@vger.kernel.org, linux-mm@kvack.org References: <20240226-zsmalloc-zspage-rcu-v1-0-456b0ef1a89d@bytedance.com> <20240226-zsmalloc-zspage-rcu-v1-1-456b0ef1a89d@bytedance.com> <20240228043358.GF11972@google.com> <5a556476-05b2-483e-8875-eeb3e2a51151@linux.dev> <20240228052906.GI11972@google.com> X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Chengming Zhou In-Reply-To: <20240228052906.GI11972@google.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Migadu-Flow: FLOW_OUT X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 628E618001B X-Stat-Signature: 3z5xhxoj3rmamksgtxzm37dqy53cqe9r X-Rspam-User: X-HE-Tag: 1709099024-713750 X-HE-Meta: U2FsdGVkX18co+MZBd9PDjH+rmsxXEpT28l16nH98lMO7wirG0yN0h48V/syWVaRsjfW/jlxBBXMaoqblDlXQhGLUdiAa95tzorK+08rYvIMT/8j9REQlg7la9TjC6Vfw+JAQwCanaSKeI0hPknayOA3Hvj0OJuXBh8XD7gjfaUVduC2sRAY0kmKrh9qady4uKIYpazGFvt4vm+4gRInf2qA8Ga7j9LsGSJ0jEE1S4C+UwYnJeBez7SGW6BJuPbmLBe6W/92LZDH1qbck0Tp7XKTgf2vfUaaltEDykxKPHWBqxR0weG+hh3onHV1TY13u4LYtUexLO+H3DqW8RV1Tg0Y2DwmfeXLQu3tsTZHAz1MPfpq2CFBjpOO7SPS84J8y/e4z5mBFnvUTvx/uffXQLqV/Yh5++BJr0xVZMquiQ7ShpPxwlqP9ihChBGNW5qsvdvvemQy1yYwniS5wu6m4XKzR7J2RmnwdOEdjhngbVYWMZ1FOxElz6jntLC201X9QN9ynCOfRa80t1Ah0mJtnm5suawzJpZJOuq5sF88Z7gTinOvIYinzTd4MSXAQAnR/bbKbl1t07SuRGnd7Is3elZrdmICUCtlb+7sDurNv3yngdjUsMZrSpMSngoy5nyWuzTRNEy00xHzrb6UvHAmNTwPZZd6d6WqFBv+zuGwhfCMFMJ2ztZAgy0KfuRabKKIJ9dwPIoe3dawV0NqrcIrBNiCfzCt97aCzkFk07Sex93jCcWw/+jWU3TrCgtMvOxWx53XQXsUv7ZgVCuOpFVZhCixGOQp6Wt7NJDL0TY0O0RQ4KFYrVkmdboOPsOEcWsXRROmHSrkV+xFMjYhphUCE0U56D4pAUv3 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 2024/2/28 13:29, Sergey Senozhatsky wrote: > On (24/02/28 13:14), Chengming Zhou wrote: >> On 2024/2/28 12:33, Sergey Senozhatsky wrote: >>> On (24/02/27 03:02), Chengming Zhou wrote: >>> [..] >>>> @@ -978,10 +974,11 @@ static struct zspage *alloc_zspage(struct zs_pool *pool, >>>> pages[i] = page; >>>> } >>>> >>>> - create_page_chain(class, zspage, pages); >>>> init_zspage(class, zspage); >>>> zspage->pool = pool; >>>> zspage->class = class->index; >>>> + /* RCU set_zspage() after zspage initialized. */ >>>> + create_page_chain(class, zspage, pages); >>> >>> So this hasn't been tested, has it? >> I have tested it in my test vm, but it hasn't KASAN enabled. I tested the >> kernel build in tmpfs with zswap enabled using zsmalloc pool, not sure >> why the kernel didn't crash then... > > I hit the problem on non-kasan-enabled kernel. KASAN was enabled > later on. Ok, It should be a problem with my process, sorry. > > [..] > >>> So when init_zspage() calls get_first_page() it gets NULL zspage->first_page >>> which we then use in is_first_page(first_page)->PagePrivate(page). As far as >>> I can tell. >> >> Thanks! I will fix it and test throughly before send an update. > > I'm curious if we want to add RCU to the picture, given that zsmalloc > is quite often run under memory pressure. Yes, it's a reasonable point. But given struct zspage size has only 56 bytes, it maybe not a problem to delay its free to RCU? Thanks.