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 B0014C4167D for ; Tue, 31 Oct 2023 14:09:17 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4B0A06B0307; Tue, 31 Oct 2023 10:09:17 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 460FF6B0308; Tue, 31 Oct 2023 10:09:17 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 350BD6B0309; Tue, 31 Oct 2023 10:09:17 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 25AD86B0307 for ; Tue, 31 Oct 2023 10:09:17 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id EE5801CA82E for ; Tue, 31 Oct 2023 14:09:16 +0000 (UTC) X-FDA: 81405938712.23.3124BCB Received: from out-188.mta1.migadu.com (out-188.mta1.migadu.com [95.215.58.188]) by imf22.hostedemail.com (Postfix) with ESMTP id B1BD3C0007 for ; Tue, 31 Oct 2023 14:09:13 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=WHMjfXAw; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf22.hostedemail.com: domain of chengming.zhou@linux.dev designates 95.215.58.188 as permitted sender) smtp.mailfrom=chengming.zhou@linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1698761353; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=DSV2hJzhN1EMBaKNKe5GTqHBigf8Oik9SH9kDO4tfhs=; b=0I4AJ5YKG1m0YmRguKq6qF5vbHEu1YQA9FvcLZIRKd9M5vK9zn/R3+n2k3lfM/98TgDFmr 51/TAU1XfQyBvZikVK/1Q5MPY3VQLxoIQ4+AZdP3Lca5dhnhStR5c9NSGmxsSRb5Jalmel wLBZ4QWvNC0LdsTyf9i3MXI6iX4fY4Y= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=WHMjfXAw; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf22.hostedemail.com: domain of chengming.zhou@linux.dev designates 95.215.58.188 as permitted sender) smtp.mailfrom=chengming.zhou@linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1698761353; a=rsa-sha256; cv=none; b=nG6dV04ZxwLj8qxBW1cVdrtEGnt9LiQJ0LGx7G5fgjy26OJMTcK9Yrw9YxBr6lGC7qn03i qPnLnG3g/X+Y2qLUcJbsr1tjuKxmaiNPWIKcCKIyDSyHt1gh71pBEIWP7mQRsmenTyBXna ZgnrMmsIDDDKbQXFY1LNAaxlVb0SzuQ= X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1698761352; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=DSV2hJzhN1EMBaKNKe5GTqHBigf8Oik9SH9kDO4tfhs=; b=WHMjfXAw75r95lcc5nFUiMN89Tof/YlZMyVPqZKNOdvO1yteE6uHCrbGBMOqY7xCBTII+D bv4O0JIZHkzqYTy9jSpAEEAubWuuo1+LX71TrqtSTlbNRuljW0aerBJZZx3KeiAGfHntFE 9WQV2XL6SGskdWaTT/AwR5nu7UHQO8I= From: chengming.zhou@linux.dev To: vbabka@suse.cz, cl@linux.com, penberg@kernel.org, willy@infradead.org Cc: rientjes@google.com, iamjoonsoo.kim@lge.com, akpm@linux-foundation.org, roman.gushchin@linux.dev, 42.hyeyoo@gmail.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, chengming.zhou@linux.dev, Chengming Zhou Subject: [RFC PATCH v4 5/9] slub: Introduce freeze_slab() Date: Tue, 31 Oct 2023 14:07:37 +0000 Message-Id: <20231031140741.79387-6-chengming.zhou@linux.dev> In-Reply-To: <20231031140741.79387-1-chengming.zhou@linux.dev> References: <20231031140741.79387-1-chengming.zhou@linux.dev> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Migadu-Flow: FLOW_OUT X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: B1BD3C0007 X-Stat-Signature: cw48hyg148g9ebwa8zyor4heqnz4e81i X-Rspam-User: X-HE-Tag: 1698761353-66328 X-HE-Meta: U2FsdGVkX18hjXfIGAe8N+CgClYN90+4hYzmI3l0IWuyBlDKd8AA4bO9YJy/hDod/G7hQLa9f2f+fh2zzL6iv9dQ1fP9sntJljfUIykj+PuMtWV0rbqeh57QpEq4Z9M7UF+QlOvZkEH4LSt+OGyhI1DgmbW96GLMuxjIjdK/em3xjfjlL+JvcL6UVCk6UJ9nSQbFZX36tKrFZb8tnun/Aa2j+vwOuqxtNc/Dx8kWk97ds+2VD6KDr3KGNsml3UETkMNzwNxyV4d78Q4u+GKO1Jg8DsXVA2PFCuSaNRVTcnVuPZFlPAMVWbvZfTFbMVFSVZZ/9JQLjLkoeBIxZ+V307jJ2L6Pn42y87pf+HjOtd/SpgEMJ3h9RFNfd59OFfVWk1DxjJL+4kmoNvbnCMByZPPo9o3Dxb5gF9GvLtO+jslwblcw9uv5IEN+7g8d8frFUnp0zTsgp97DxSgwdfTV5aMnu+w2ZygwNzrucd3caZw7sQDvorz9Ii3h5pqdTE+qLFkJ9I1gCOCfP7vkVdXlBaic+KVmh09nuPjQMnrwuvU1CDMS0MuNYRvMbwM77VQfz1E739wropO+c4RLOJUhW/KeTabwDkvqkp5UH8EQ2tiUuY6jTelI/UHh1aFeW4Cp/iUvH0O/JQywzQwqb+dZyMUuL1hPKjMjZuFN1cA4XDUJ451hor4iCiM1+YtOdRbWmg38qfrUbz5nTi6eY990N8vS0lTHL1OhHF3hTDr1DZneQrFGtamYe+fo2Lw+jBoD8BVzeyqRm+HwqX2TZ4maBMDElxIgH7ZF2mbLLKlbiq5tCLhGqGN5Y0eILAekPuqC5fpJRcz9yYsVBuZXWEhYDSU8zuj8pfXT3e5T0xc9FKnqnKz1pZzyZ8/kMJtQHiosHG8HOjx4NogPRoruDTzYiaNGFVKtI4TfOky1KTtEwSDKOSJp+SYboNiCVjJMZjnlQJ2a8WbdtkazX2YOy79 jMFCF06h TVeOCeKHWBUxFx6pisNB4q4o1ddriIPYpASgn0VAmygXRzZLeJYveN+fae9Ge3RpNbUs/BvLU1RfI/MVI7gMRJ4HdQI9j6dKLQXHb1hJVCPdQP4M3ulfabBnmIM1TwPRYt/BGAD5/Fw3h279trkj0RiUPHcZU1bOF6azGSX/QMG1/uiPsf5CQUmtDfPh1Jsv1XSKHV4rIk6FL0w5huCEfSpjsErDHfmtcPkv+bI9FxEd+p3i5cLHFuRSmW/7OPeSE3W+6fvpLqjbXY8TNp2HvXh+Dz28yUWtAcqCt 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: From: Chengming Zhou We will have unfrozen slabs out of the node partial list later, so we need a freeze_slab() function to freeze the partial slab and get its freelist. Signed-off-by: Chengming Zhou Reviewed-by: Vlastimil Babka --- mm/slub.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/mm/slub.c b/mm/slub.c index 1880b483350e..edf567971679 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -3098,6 +3098,33 @@ static inline void *get_freelist(struct kmem_cache *s, struct slab *slab) return freelist; } +/* + * Freeze the partial slab and return the pointer to the freelist. + */ +static inline void *freeze_slab(struct kmem_cache *s, struct slab *slab) +{ + struct slab new; + unsigned long counters; + void *freelist; + + do { + freelist = slab->freelist; + counters = slab->counters; + + new.counters = counters; + VM_BUG_ON(new.frozen); + + new.inuse = slab->objects; + new.frozen = 1; + + } while (!slab_update_freelist(s, slab, + freelist, counters, + NULL, new.counters, + "freeze_slab")); + + return freelist; +} + /* * Slow path. The lockless freelist is empty or we need to perform * debugging duties. -- 2.20.1