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 23E96C5472F for ; Tue, 27 Aug 2024 15:52:29 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 96DAE6B007B; Tue, 27 Aug 2024 11:52:28 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 8F7616B0083; Tue, 27 Aug 2024 11:52:28 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7975F6B0088; Tue, 27 Aug 2024 11:52:28 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 5A8456B007B for ; Tue, 27 Aug 2024 11:52:28 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 014851218C2 for ; Tue, 27 Aug 2024 15:52:27 +0000 (UTC) X-FDA: 82498467534.09.CF7C64E Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91]) by imf02.hostedemail.com (Postfix) with ESMTP id 4CE7480006 for ; Tue, 27 Aug 2024 15:52:25 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=ZuoviS9M; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf02.hostedemail.com: domain of brauner@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=brauner@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1724773881; a=rsa-sha256; cv=none; b=OxzgQWgt3g4I2doPUvzxf7N9uh84RevlwiODzpYFZ2p/oeq/p7UG8b1VxbV9dZNhCzM0c6 sNkIni1IH+035v80MYBX3rF52uWMh6D+ARgXn4vtbNWqGCGMr5KOdkOoaMsBTCunIzH687 J6raRaqRB389FiPoYnrXbiOvo5Y9g8Y= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=ZuoviS9M; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf02.hostedemail.com: domain of brauner@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=brauner@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1724773881; 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=WuSxjvBexP+DXsT/b+ugdT2GqQV1llk3S4yeKpmQ+Fk=; b=Gquj1njgV+ZW63WmwtrNpyLIHrKXsHVWEGmdzydCm7LqEmTKcb9KJUReoq8np5qp7upEyt ZlK4DxjIVmLRzDAn6bYisfVwMtaViBG+OhN78PHmplZhrG+CE7U+wKYo5OPw+uCtHs92E/ OEicKxkXDMAvkXw3Mrn4ajxRAu/R7ug= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id 6B984A41FA4; Tue, 27 Aug 2024 15:52:17 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4E5DCC4FE92; Tue, 27 Aug 2024 15:44:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1724773498; bh=UDasnn+hZjqgcesXXcnuUct0iDtLRxPnLrGBX035D4o=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=ZuoviS9MK6SfsCCEw9VF2jXJk4dG4Gn34Ddyq8JqNqdfBxA0kSYLfdB/urZX0WijS EET+QJXlFDpIKFP07a8L0GlZ/y3M8fPFF/OHPyWEYsZVziSh1fz7nZn+7VrvAp598E g1GkXyADZs8jV5kOW5dt/0sd32M4XrwFl5/kHmOlbO9Idt93E36VQzxtf9q8HbdYyB l2gTvjjyd0wPN6AyQpr9uObxxfcZoLBbtA7Ozk8uzkNBqqsOJdQVKYCnnnSGb/OCm9 8Ro4VPyoUdiEtPgzFkIZEzFpJAUBzX4aeC1ZcYRjbpuUbFdlgA64MA8c46bN4fR1iG IhSo7gYm8mScg== Date: Tue, 27 Aug 2024 17:44:54 +0200 From: Christian Brauner To: Jann Horn Cc: Vlastimil Babka , Jens Axboe , "Paul E. McKenney" , Roman Gushchin , Linus Torvalds , linux-mm@kvack.org Subject: Re: [PATCH] [RFC] mm: add kmem_cache_create_rcu() Message-ID: <20240827-redet-anzahl-0fb12719dd5e@brauner> References: <20240826-zweihundert-luftkammer-9b2b47f4338e@brauner> <20240826-okkupieren-nachdenken-d88ac627e9bc@brauner> <6063be1b-7d4f-487e-9890-7e8f727d6324@suse.cz> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-Rspamd-Queue-Id: 4CE7480006 X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: 6zgq6n14y58f7jy8c179oso9ynww4dwb X-HE-Tag: 1724773945-53899 X-HE-Meta: U2FsdGVkX1/iQO8Gg7TNZlRWy9SAbo9GRdcXusdFeSwAGJtqr+sfbtZSczre7wDQrivKvDdJAezsst8aA53UrVTE6tBPjCZ+qiGydzBc+VIyyJ98URqDL0bgoJjYRM6lBG/GGU5gJklb382yO7eVFS1qpaoR2WCLbScaUa8C1s5Bp7noLNIo7nSL3HnYc+lDO+1imu33cSh3rvKDGaOsi7UEz/Nj1WRlAnTc+ziVcGFZR0Mrio1o0IA/PCsJ62ANRUcWiMSwVOb02R3F8F5Xnuhs0P4O/jI6YPbip16nENhdUXP/xQxlE5eY1UzdZWxNKglrmei/XY33rgB86ZIR5jF90f6Sga/qLhWiGJ/wy6AxEiRlFRM5JjxoW71k6+9hKed+PirVR4bCGUVmH9eg/YaWkNMy7R522RvM0RhzEzmEZy1Yjn1LLd1EVDHi6f7rmu7sh6s//0M3yycxpn0YDHPrtW+EC+Zo0/6pb1pwjm95bx8RYbNOB4ZHCF5QwW4gDjfeBhYD8X3I/EqOiVhE3/jPT3IBiGwozrcZWrDqatQVdcok/K7MgYOBbq/EetohmphEW3iORa6K/EB/0Ot+gne6NbDE08rKZLuF33Ox5hb9iSQ9rHZfa0Q+CPRkzyahA8CIQdAJAe6lgfMuA1iPsdXmVu4dD7D3OFaOXN4minZ8KT3wuoVOnpArO6KQ4WssoplpBgbkuY5ngjWdx2X9JaKH4JaRxxw05IrIgMjr0f2ptYL+0tRmKhFqjR47e9RNaRA8hu8mXuh/m14p9HLC385f14APt7Ehcu27Sz+QPhQf6WJgslMqOoZxV17fA32UyPy8bcByvTptjiOG7Hf9lmbqU5z3psV8YXamo1ju8X4KhDc+jsq4SCJXK1E9sMsQZbH9sNEkR7vXGtHpSW4ItonDZA+KYos6OvfhD+T0NdFodmWFxjrw+WQqG+4dVTyvkPwz67wZHU8H7rBMxDx /BrqS5IT yA1Amr7E1jj7jHsiFvvXAJ/CTAoiG8voes9Blk0A6pNk0sBdO+87SENr8WnmPvxUpngraG35/UGC0X1wZDx/gX6Qixq8lmU+wzBKG3jkyUsmdvl0LbgAwVnFAevUwnLoERsXPL4tEsDBCRqAMJkBeBTBafsAD/38ckog3xUHHhggKb+qmcC0etiF7sSBQmwPhrbwcOQ/qjovOAbwuOoKXLdGLtdK5ZDrDm7l3uH5DtiSsHt48jT7yoaow13MZIWWJYi6Oy3Hru/qSwXrsnJhQLqq4I8Gkugb9mDICpAimXWu1MI5FKpPZClHL/VJ8JtU7mzlwisxfKKBsKeA2C7Il276xBP40NARseml8RYOBpe6lZgdZ90cFWVSfOg== 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 Tue, Aug 27, 2024 at 05:33:54PM GMT, Jann Horn wrote: > On Tue, Aug 27, 2024 at 4:05 PM Vlastimil Babka wrote: > > On 8/26/24 18:04, Christian Brauner wrote: > > > diff --git a/include/linux/slab.h b/include/linux/slab.h > > > index eb2bf4629157..fc3c3cc9f689 100644 > > > --- a/include/linux/slab.h > > > +++ b/include/linux/slab.h > > > @@ -242,6 +242,10 @@ struct kmem_cache *kmem_cache_create_usercopy(const char *name, > > > slab_flags_t flags, > > > unsigned int useroffset, unsigned int usersize, > > > void (*ctor)(void *)); > > > +struct kmem_cache *kmem_cache_create_rcu(const char *name, unsigned int size, > > > + unsigned int offset, > > > + slab_flags_t flags, > > > + void (*ctor)(void *)); > > > > I wonder if there's a way to do this in a more generic way, we'd now have 3 > > variants and neither supports everything (what about both rcu offset and > > usercopy?). > > The "pass all arguments as a struct" pattern might not look too bad > (or alternatively, "pass all optional arguments as a struct"), as long > as it's fine for unused arguments to be zero-initialized? Like: > > struct kcr_options { > const char *name; > unsigned int size; > ... > }; > > struct kmem_cache *kmem_cache_create(struct kcr_options opt); > > void blah() { > kmem_cache_create((struct kcr_options){ > .name = "blah", > .size = ..., > ... > }); > } > > I think maybe we can do this now that the kernel is C11? > > But I guess if we want to allow leaving out the freeptr_offset > parameter, we'd have to have a flag to say whether the freeptr_offset > parameter value should be used... Maybe my proposal is too overly > fancy... Fwiw, I suspect that most users would probably just do // top of file static struct kmem_cache_args filp_cache = { .name = "filp", }; and then void __init files_init(void) { filp_cachep = kmem_cache_create(&filp_cache); percpu_counter_init(&nr_files, 0, GFP_KERNEL); } but I really would love to leave that intense refactoring to the maintainers.