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 3FC24C54E41 for ; Wed, 28 Feb 2024 06:01:22 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C63C26B029E; Wed, 28 Feb 2024 01:01:21 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id C14F76B029F; Wed, 28 Feb 2024 01:01:21 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B037D6B02A0; Wed, 28 Feb 2024 01:01:21 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id A0DF36B029E for ; Wed, 28 Feb 2024 01:01:21 -0500 (EST) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 48BD7C0F09 for ; Wed, 28 Feb 2024 06:01:21 +0000 (UTC) X-FDA: 81840165162.04.D9A73F3 Received: from mail-pg1-f177.google.com (mail-pg1-f177.google.com [209.85.215.177]) by imf06.hostedemail.com (Postfix) with ESMTP id 7000918001E for ; Wed, 28 Feb 2024 06:01:19 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=iPRsOpom; dmarc=pass (policy=none) header.from=chromium.org; spf=pass (imf06.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.215.177 as permitted sender) smtp.mailfrom=senozhatsky@chromium.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1709100079; 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=v64P2JtDs/Jve0LUtIoH4sj0OPsa7P81HCpBbPHS4wo=; b=mbz5wBhGr9cczqYfSXf7GOlMTLTmE4dywX8VabTgHru3LEsN76muPV6iKx3zD3kqLIyfYb mbHv0Tud59dKsmuaEXnzNPabDGQ6g4N9z/n6Fx7sl8ZAzIWpxJ2yQM0fjt2oX36uKxdLJW 7A2YQ0RyurP5MKAXxcdWF5g6ZMO89hg= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=iPRsOpom; dmarc=pass (policy=none) header.from=chromium.org; spf=pass (imf06.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.215.177 as permitted sender) smtp.mailfrom=senozhatsky@chromium.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1709100079; a=rsa-sha256; cv=none; b=x4m8nPBW9JLjW2ST8K3VVyk7QD00uspMKKfeY6ofcXhDKCeuPtpuGtIEIv+sM2gUiGzyXl frROaaQ1igqoRPyJHCPTUWwyJhcgw7p3YHbfJr7uyQ27I3jLTAjRJYB+SL3Vb6sgZxb7xP N/stkOpq3nEcOZBO3NTcZNEhmUwmF6k= Received: by mail-pg1-f177.google.com with SMTP id 41be03b00d2f7-5cddc5455aeso4770335a12.1 for ; Tue, 27 Feb 2024 22:01:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1709100078; x=1709704878; 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=v64P2JtDs/Jve0LUtIoH4sj0OPsa7P81HCpBbPHS4wo=; b=iPRsOpomjL/3d8SPQ6YbAms1FDFg4wTVqpzqz/EMLMmI+IMhN4bBcyoVhHrlHobF7d EYngZC9ROWLy5q+givXVX1SoaldyDoyrdpRqaMFSKNZmO/uj/JhkO8nMZ5NPQLmYCIDn Xv5Z/qCflZ8qb+qeLpK00ZXQiRy+RsRH9XKMQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709100078; x=1709704878; 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=v64P2JtDs/Jve0LUtIoH4sj0OPsa7P81HCpBbPHS4wo=; b=dQbBrtvo7H3ZH6giPxbYGAeRpKBqkByAmE/tEJ0cZg5fweUUIeiwuwyD5xF3f8Acu8 epvqfdZz4xDzxACOTBGJHUcr7PH97G5CoYgcyb4gYk891Sz1sZgIc1QMUPYGGM6SwQIa KttFmiwXu0xALXhPQQM9n8ERSN8+Qa/CmIDlvuDjaOEt47U+Lfk7XDUme6BMVqtD7ymu HBP/eF9em925b7yrTvex6t87ZSBw69PQuaT0D5iNg51K8co1wt7u7L48wMN9eBne/iQE CshdTaVIeMf8of1ctxvZT9zrkkQEBGKEX9C/l1TK3kr08YzUyyPRLsn3d6qFbler5bpZ oOig== X-Forwarded-Encrypted: i=1; AJvYcCUbTrz6cGSFGBZZF5bE7H0pSKtbrXXkDt20QYABUkq1nF0LlvckeSnCTJCujZyC1ANJ2W2oO03Fr2Du0YQWZsyeHOM= X-Gm-Message-State: AOJu0Yy4160dADVU5gWZewSvMRk/15DXaBKe4Big0NsmraJ26nU2+7zV 4DE8yb/3bUzAv43ClcML4HR53OVk82b8bDS1VFVXE5ZeuUivfYXoID/Joeycdg== X-Google-Smtp-Source: AGHT+IHZu+4hRcVL2xaCoROJmdUcdSraSK3bknD2RM8H9rh9+RY1d9KWjZBRbllfjDrb13udiEHVVg== X-Received: by 2002:a17:90a:b014:b0:299:5d2c:9aa1 with SMTP id x20-20020a17090ab01400b002995d2c9aa1mr9140316pjq.5.1709100078288; Tue, 27 Feb 2024 22:01:18 -0800 (PST) Received: from google.com ([2401:fa00:8f:203:50c1:1ad2:3268:cacd]) by smtp.gmail.com with ESMTPSA id 8-20020a17090a0f0800b0029a3da37123sm685792pjy.23.2024.02.27.22.01.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Feb 2024 22:01:17 -0800 (PST) Date: Wed, 28 Feb 2024 15:01:13 +0900 From: Sergey Senozhatsky To: Chengming Zhou Cc: yosryahmed@google.com, Sergey Senozhatsky , hannes@cmpxchg.org, nphamcs@gmail.com, Andrew Morton , Minchan Kim , linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: Re: [PATCH 1/2] mm/zsmalloc: don't hold locks of all pages when free_zspage() Message-ID: <20240228060113.GJ11972@google.com> References: <20240226-zsmalloc-zspage-rcu-v1-0-456b0ef1a89d@bytedance.com> <20240226-zsmalloc-zspage-rcu-v1-1-456b0ef1a89d@bytedance.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240226-zsmalloc-zspage-rcu-v1-1-456b0ef1a89d@bytedance.com> X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 7000918001E X-Stat-Signature: qp5x7jyxdyq33o7x4fx8amoced94ogcq X-Rspam-User: X-HE-Tag: 1709100079-818072 X-HE-Meta: U2FsdGVkX1/3uJRoIYM5RRxn16IGnCRJwukfsiYiq48A3+RHNj39w/g/+uXA81/6Gl/hVSqLHmV+RYoEbx3fhe2sl6d28d39eODGSnArt8y9OX4fIADjKO/cPvEtsyXbqzaMP+OLQqds42QoRl1iW1V/lZTgyZWVCLy+cq2nzAoyqCzQ+pvV3nQcYl+EKycSi/gXq8FTHZ0E8B1wmwDptbmoxtGsFCLQczv9/2xT9QHl3NxMPHBIDou43nosO6x0ERlSz/cIqo+zRTYZt1PMo82dM9lQEtAW2uQMvpvEN56giavJ2vxTtC+rdF83Wdl99OHNih1iLSbt8IYp2ys2iuVHNnlcRxKTR0cee+xre0HTviLLdKfDGsMYXa4zhe+Sf0nRz0E8p8EYIou6LmAoUsGlLBaAcqFdlJsNDJCFFk4imxQriItimHqQZhRzTI1qZm6Xq6TYAzt6udYkv8Z5Pk0xZICe1e+/Qo9E1OxD4TGhoYRTZlMS41F1gcnQJ8jppwuc39OX0fLcgFr5w7pYPq2a4BpJTxAfyKPdqNv+cFGIZUPszq2E+afFRUUrbwnkJdEC0/B3oSRM8smt6ZsbtLoXZo28dpm3CdZMaSDNH5mz8shK9v07MH19oqnpBBs8Bzc8lN9lgZwt1JaL6hUrJz2c1ZoIKmM9wbuNWEUdlTVNfb9UAz/Iq2SnoYgDiaaU3IBA9Sja5azP6qX9k0bwKPtfK0wUX0PEf5SS0RnpB0cW2ud7wC/6JzNai5DB8PL2roHBFY7QrKsz0KULw98Gi4JVSJf+u37SkQ6AYPkOTGijLxyA2CtAjwtI5XI8HFfyeSYasFx6+OjWSt4KwqG5rpITamY1qDtTlrvBfawRxVDYkolmBvD03NbFoRg14Me0XwDI8WFczSaySNP/oFT25TBY4JBqyZ3aKiI5MWqyHcVszpsfaJN5X1r799VyOWQR/Nlu78jYhElvig4VYyo Kf/2WEXO nOoU04KPwMu93lCovXRM5XRgU9hUnkF74j5UguEj+emxvV+PacloEwB6lgDb3M/T6rZiWVqoAD2XE3TGwDT2tMHGzxjnCfwMyrBe04D6SGq0J6uuE5IFXmUVhUlRmGn8sN0DbWHMNvf8rqajGjC3cIXFQx1EvjdWTpjCyOvFFIjj8h705v8q2MMe4yNrFaHzZtTjmUv7aPuTJQioenFsFLTh/xOyFJ30DIJ1mlWW2PNdKSnARrhgTAtE+RQXvqIWMhJDtb80KTDtVMqvMRbLrBoRdS43wQILk5gAl9kSbJq6WuXBkkH0nYnWaTaKJBuKdsR5g7/Do3RdGM9fuN6kpOz+JKOlfrAqQ27YNFt2QXFIBycf4LZlzC95B+SHmwKXcmj38tTPOCrxSOXwMDLzs2Wae2DVLPhJuMzQxWBD9rol/DAeomKWnsv60sQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.035430, 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 (24/02/27 03:02), Chengming Zhou wrote: > static void __free_zspage(struct zs_pool *pool, struct size_class *class, > struct zspage *zspage) > { > @@ -834,13 +841,12 @@ static void __free_zspage(struct zs_pool *pool, struct size_class *class, > VM_BUG_ON_PAGE(!PageLocked(page), page); Who owns page lock here if free_zspage() doesn't trylock_zspage() no longer? > next = get_next_page(page); > reset_page(page); > - unlock_page(page); > dec_zone_page_state(page, NR_ZSPAGES); > put_page(page); > page = next; > } while (page != NULL); > > - cache_free_zspage(pool, zspage); > + call_rcu(&zspage->rcu_head, rcu_free_zspage); > > class_stat_dec(class, ZS_OBJS_ALLOCATED, class->objs_per_zspage); > atomic_long_sub(class->pages_per_zspage, &pool->pages_allocated); > @@ -852,16 +858,6 @@ static void free_zspage(struct zs_pool *pool, struct size_class *class, > VM_BUG_ON(get_zspage_inuse(zspage)); > VM_BUG_ON(list_empty(&zspage->list)); > > - /* > - * Since zs_free couldn't be sleepable, this function cannot call > - * lock_page. The page locks trylock_zspage got will be released > - * by __free_zspage. > - */ > - if (!trylock_zspage(zspage)) { > - kick_deferred_free(pool); > - return; > - } > - > remove_zspage(class, zspage); > __free_zspage(pool, class, zspage); > }