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 D3B73C4332F for ; Thu, 2 Nov 2023 03:25:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6AD968E001A; Wed, 1 Nov 2023 23:25:02 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 636108E0009; Wed, 1 Nov 2023 23:25:02 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4B0CC8E001A; Wed, 1 Nov 2023 23:25:02 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 3613B8E0009 for ; Wed, 1 Nov 2023 23:25:02 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 133721CBB82 for ; Thu, 2 Nov 2023 03:25:02 +0000 (UTC) X-FDA: 81411572844.10.6DC286C Received: from out-172.mta1.migadu.com (out-172.mta1.migadu.com [95.215.58.172]) by imf15.hostedemail.com (Postfix) with ESMTP id 3EEB0A000F for ; Thu, 2 Nov 2023 03:24:59 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=lFfmSKyh; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf15.hostedemail.com: domain of chengming.zhou@linux.dev designates 95.215.58.172 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=1698895500; 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=Y0gxyVelJQEnoALRuyqBzkeEChILTc95BveKj67/aCg=; b=Gh85aiDB6Jzd/9Eedb6B9lBg4J5zcN56bVOtCP/KVg4hY+DoTvIOUw/O3yP4bSKEqLyQoP o59Tgk2REspJ9DANYCiHo62k+Ng+KPbawf7hzQTSDj75H9cEIuclgiqNm2E7sRnuEQowvw M1MgPwnv6bYf/H+Kj0L5qkgbQRnI6ys= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=lFfmSKyh; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf15.hostedemail.com: domain of chengming.zhou@linux.dev designates 95.215.58.172 as permitted sender) smtp.mailfrom=chengming.zhou@linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1698895500; a=rsa-sha256; cv=none; b=PrRw5N4A/qd9b6+Yk7PfiTMNwFXH7z7hytp93bw9dZRhwIg9lAzACv37U6/Rrp3OCQtqYi FJBd7nlyqys+5Rncl+hCj9qPcq6rBMvPys+ifUsrkda2LjYCZpbEl32VZd9nth4ttdRIqB uufApakDtVY/1BvhDBQP//fMByCU2eM= 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=1698895498; 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=Y0gxyVelJQEnoALRuyqBzkeEChILTc95BveKj67/aCg=; b=lFfmSKyhGA3gVCpgOxB6Id7LBL0rMpEGl5gAgGZuLLsAnnTy6no1BEn+SeD5u7+7EuXT02 tiwcrE0IU15hQr17N0/O6wDqFW8ovwBIDEs0JU6KOd0J6sBKfSBYsgMLgyQ2qyobNj/QlF NFtNE/LIi0zdnMrItnwzeHEGbAdss+8= From: chengming.zhou@linux.dev To: vbabka@suse.cz, cl@linux.com, penberg@kernel.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: [PATCH v5 5/9] slub: Introduce freeze_slab() Date: Thu, 2 Nov 2023 03:23:26 +0000 Message-Id: <20231102032330.1036151-6-chengming.zhou@linux.dev> In-Reply-To: <20231102032330.1036151-1-chengming.zhou@linux.dev> References: <20231102032330.1036151-1-chengming.zhou@linux.dev> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Migadu-Flow: FLOW_OUT X-Rspam-User: X-Stat-Signature: upish1qdy6wz3cpdioefoo3tkoqbpkkb X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 3EEB0A000F X-HE-Tag: 1698895499-9114 X-HE-Meta: U2FsdGVkX1/MSrUq1ekep23lNnZFdBUSpgGqrolELKkIJ9nVyJIEDOFAzQXl9W5dOXTOj7Pyjtng/J9Krz9pJANbUK1raHIyQsUy5lHFVu09V0SrCA43BH8DQdxejGqB7NTQKYSGGNBuPaxFUIyhxG9+FlH7idjha3hkMM0WhKT2EIperqJS+hm1iN82QCfEdxRFgoaKVJgIE1o/iMAq4BKVgQTqS0/XTV1YVlXY49XNdbz9W/iL5b8ogMhk8rl9QVBVJl0jaXULYxbDteFulVZHh1wCDMYh2OpbmGvRv9lb+BdE40ee9m8EZR+xAyxGgMzDd9Ku1NMhDkjULEIUdeGYaRXqk1u3QPULneeR2oUpjiT7/RnTy0JX59aRIy6N2OPzYyxwCesj95/oK5MnfgbSY0IwqUxS75Nkt9W77JsdY7oo4S/FXp8x4hC12ATg/CEBwOHGuabyKym1f6VepJQPrea/cZqLcczCQBY909erDHWFj1gx4UReQjILWQU8gULSAIaJwM5676c2RKtugkC9iDnqOH92FW6ZZCo/uZ+RGmDx38fDt2SuTP4UOUSq1ckd2vFvK4C5uRvQ82WAROU5YTB0MnbqaIFlONSIV38tbw/kvG7NFOEjeGeCsgskD+M42Mfw1K6CyeCK4Z3Z4ZR+6ECo7sSvoaiRso423hNyJsksZCf2UJFZF88g+w3TW4QdqjKokijyCiGbbPLJwWisXuF6Rpb4CMccXrt3nt7Co+7xGp5gFYOH1GPmBEItrri4jtG1W/XDWSlc0zVrJWC51qEfsRq7MMNvokq5h4oMqCuoqfiPZqpnVhgB45+RksAjydNy4jXR/sFVDxX5ZrpxGOTu0qYKMqouFLPG+ro8xvN1r34qI0mp6jvjKL0gGygrCWFcoV3jxzPZhYdJYF+7bAhBfqEx1yR6ogXs9EdFLS9a8cOJorxgVBREnTKtfABIkE4yqS7YgfmwtXc PotDxwN8 XvCYBb4Wqcxl159eQF1ji6fuy+Zjgw5oU9+AJ2+pcxAFjY48DaFmjOSF32IlRvYyvbFdf1xm2QLNzGC4UZbpzVQ6iib/GOXVuAw/MADeGcjb1NrsfGr3IwMqICIm2EP3miRM6XbbuKm76f4xR5i6yQKdsH0DjQAEdugX7l0ZQG9PReU4T3+KeyPJ1+J/835QE7wNA1C/7khB1HCf8hgeOK5dypA0J3mVfxTCaSjHI6+xmWRgc6/sYgSGwGdVrBuwWzVyWyuiqHYaaWF4ojJt28dHqrw== 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 Tested-by: Hyeonggon Yoo <42.hyeyoo@gmail.com> --- 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