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 F3CDCCA0ED3 for ; Mon, 2 Sep 2024 18:15:36 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 124AA8D00FB; Mon, 2 Sep 2024 14:15:36 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0D3908D00E7; Mon, 2 Sep 2024 14:15:36 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E8F808D00FB; Mon, 2 Sep 2024 14:15:35 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id C9F458D00E7 for ; Mon, 2 Sep 2024 14:15:35 -0400 (EDT) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 3F0D81C6DC8 for ; Mon, 2 Sep 2024 18:15:35 +0000 (UTC) X-FDA: 82520601030.17.EA87362 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130]) by imf20.hostedemail.com (Postfix) with ESMTP id C32B41C0002 for ; Mon, 2 Sep 2024 18:15:32 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=ZNccoRCf; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=0VG5UejX; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=PoDiG2RW; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=uXo0X+Yw; dmarc=none; spf=pass (imf20.hostedemail.com: domain of vbabka@suse.cz designates 195.135.223.130 as permitted sender) smtp.mailfrom=vbabka@suse.cz ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1725300828; 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=MDtbz6Vxtnxtz7IanCKfg3Re8Ijo4F1YptJqEPQipI8=; b=C2slKnWWo6VkjxyNOYi0pELC9J+wXfNSmdtFqEqiyGIbpg7x93p2ama7hkx/8K2cpRAZXf UrcrmWtPBO/tMZenEevfvNWZKmR2Awct9pWL6uk4i3JFg3wChBEEl7LBHiOjmzEDfYhJdT uYrUye4F8cAzDa36+Aiv/D7vMZCf9XM= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1725300828; a=rsa-sha256; cv=none; b=xDf/Q+hrshM011qJR/F24vsNYn6q+uxZo3dvkIRBEgxH1vO791b07AW7/liK/oT6uisu5V YDSo4ZIyvbefcWUGJvdc5HbxY8e1TGMLFG8UssjhrZJUhQEe5i2aeSD4t/FvXkYfA1VFtv yNJ/rmTpeOkks7YWETRIliLi5BBN1Fc= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=ZNccoRCf; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=0VG5UejX; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=PoDiG2RW; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=uXo0X+Yw; dmarc=none; spf=pass (imf20.hostedemail.com: domain of vbabka@suse.cz designates 195.135.223.130 as permitted sender) smtp.mailfrom=vbabka@suse.cz Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104:10:150:64:97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id D210021B14; Mon, 2 Sep 2024 18:15:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1725300931; h=from:from:reply-to: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:autocrypt:autocrypt; bh=MDtbz6Vxtnxtz7IanCKfg3Re8Ijo4F1YptJqEPQipI8=; b=ZNccoRCfU6YCK1PWjGtfv8v0nubT2hlZtOg4JgHvo4UCCBM9RNUc3UCe1Bk1huCkQXOYFO sLiAIxhVSJbzY2EEgkKjkjINyouRrJCygyDe5qTYIqweZSWBFGcLBdbypC69wKE/R2ZHSd Vg5AtSXjvH5g9GwB7//ikZirPzfTHuk= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1725300931; h=from:from:reply-to: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:autocrypt:autocrypt; bh=MDtbz6Vxtnxtz7IanCKfg3Re8Ijo4F1YptJqEPQipI8=; b=0VG5UejXoD0tCcHk9297DOmNoHKeTR7Jdh8rIpH4owFBoqZAogdd6CSzK9NCysKg54eoCF R8qs3mF8HO79dfDQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1725300929; h=from:from:reply-to: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:autocrypt:autocrypt; bh=MDtbz6Vxtnxtz7IanCKfg3Re8Ijo4F1YptJqEPQipI8=; b=PoDiG2RW05AXiRFeh5s9sUGmcBi+2Mp3uRSeUQsisDCEuhaV0hIIRizG0xv0/iXlZrh2A1 9zEpTJSraqnZ8aBWcRYblZxxywHtgv/S3Vg0KLqgGRubGDwms1yVXMO/nmjNnkAhl9VRb5 jPHUCRM0JJVEzet3VxZe27j5/DPoPcY= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1725300929; h=from:from:reply-to: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:autocrypt:autocrypt; bh=MDtbz6Vxtnxtz7IanCKfg3Re8Ijo4F1YptJqEPQipI8=; b=uXo0X+YwpMXNIVw/+L24gM0+HoVrnm/xUDrZrC+D4rAYwUrqlJYHArodS7p6eM+mqsD3f1 A0ZwytmKgDdZtlDA== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id BC61D13A21; Mon, 2 Sep 2024 18:15:29 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id cYBFLcEA1mYFeAAAD6G6ig (envelope-from ); Mon, 02 Sep 2024 18:15:29 +0000 Message-ID: <7f3e8108-f03a-48bd-b3e0-496beed52541@suse.cz> Date: Mon, 2 Sep 2024 20:15:29 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH RFC 0/6] slab: add kmem_cache_setup() Content-Language: en-US To: Christian Brauner , Jens Axboe , Jann Horn , Linus Torvalds Cc: linux-mm@kvack.org, Christoph Lameter References: <20240902-work-kmem_cache_args-v1-0-27d05bc05128@kernel.org> From: Vlastimil Babka Autocrypt: addr=vbabka@suse.cz; keydata= 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 EP+ylKVEKb0Q2A== In-Reply-To: <20240902-work-kmem_cache_args-v1-0-27d05bc05128@kernel.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspamd-Action: no action X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: C32B41C0002 X-Stat-Signature: 94ccirhe8rtimp597z17tiy86rkbh3ut X-Rspam-User: X-HE-Tag: 1725300932-962754 X-HE-Meta: U2FsdGVkX196qMHDEZ2j/qreRyYmO3IZ2PWioongXMwWbIIff5gZYbbcfiEpYq3m3SdadnMgl0tZzJBYASa7YgD6wbaE5pWOqrqkyNJLT+toArRQrYS1bVYjrwlecX6fENlysjqQCLWts/CuDodAu6prU8oGhN1zlqi1Pi0dqmNYRIKLgCPdacdZCrtCMHmtQW2n8eBX5VTIctW7KpgQyl2nNKqM2XF4tETh2aKSwAS7oNRtGYaGFQkORA5bRgHCfVrS1wAKXEi+0hOAwn7l4o0ByiPCv0Id15kQTzdVzFHHVE7kq0qG1zkkUb9BumETQbCjtQgbv6fkjCPJHTUyg2SqQ522VQ4P1nwx6DxFkmfRizLiwuAhMR3GxP5MsNUGVtN3iA9zvfg34hPGPoFTIAOAOhJpXSjU0MMRL5XsNgCFqPdg/INK7Gw+V9/gedT2k5UEDGyK472fxgHIGpixBnnN2GOYssZaPCQyQwIfTPwQYysgT4xXYTwohU/ZdwkxiPSC7ySiY/XS87ir5Acb70bbPNYiEQTYm8sm+BNrq7C7938v1A+fYjYHawaqVeUvGWzxfH2oibxOueJ4n5UT732KgdOIwZD/Gmz5Vu8vmrfpdXKEiLOkUUg5dkD3Yi0kkzHgsxHI6psFdQ9CzWDf3xqLAYpHMJnlE8V/2vPGQjurfMqgcFhLUrnR6nIZZXGMrysFnELV9/IPcA6IfiX4LKgh3Ugz1KniDfha1LCywX2qekx11jd6D9mBvJTIP2w35uJOfRuGKt4ikyhFVy4B5/zZM5V3O6bxEzf21/pIt/reJxtkkPRg6AVUkc0AB/3mOA/kAhu/ssSxLIZTW9setrCNHRS+yz/cxpAt7tox0EfhtMaW4ABPrC5/ZqACo5qPl8Y+QRmh1RjM5uMEMyNYGPQrx8U9N5DcO0a9+Pn6+iASQWxDLdDH1Tq4aowZ6VQ9uGxYLUb7TOpjl8bqORL g6WJGlbr atEZnv9ozls6mkVniXx1usf7kw41ZRFXCBUxjJ4QD9V6teCBY+3slGjiG0xMzcSPS0W5StyPiULv/ib/Uv2I/zXtqS9eQlxu3tE15RyHUt9Pt3Ofo3nPEfkt21Mz0g3fWmGybccdWHblIciX2goQOOxLv3/R6KIHBINFMivZd3JeVpu5H5tbdhaeInxVnf1B2E50SgYFnKTEs8dBunGqeC13A9G4RPQ8BFqWDtIHz636u5wefcAQSUjO+p3k4csTin37aACiCbBvx7mMiVDBX7tp2VfzOrG+tGSH14eAjm1Nyvg2kZRSqOTEqN6iCUz6KGIfSvquWFftW+3Dc5337dEErdKcObvYWBvhh X-Bogosity: Ham, tests=bogofilter, spamicity=0.000007, 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 9/2/24 17:31, Christian Brauner wrote: > Hey, > > As discussed last week the various kmem_cache_*() functions should be > replaced by a unified function that is based around a struct, with only > the basic parameters passed separately. > > Vlastimil already hinted that he would like to keep core parameters out > of the struct: name, object size, and flags. I personally don't care > much and would not object to moving everything into the struct but > that's a matter of taste and I yield that decision power to the > maintainer. Yeah the reason I suggested that is the new struct contains rarely needed arguments, so most usages won't have to instantiate it and thus look a bit nicer. > Here's an RFC built for a kmem_cache_setup() based on struct > kmem_cache_args. > > The choice of name is somewhat forced as kmem_cache_create() is taken > and the only way to reuse it would be to replace all users in one go. > Or to do a global sed/kmem_cache_create()/kmem_cache_create2()/g. And > then introduce kmem_cache_setup(). That doesn't strike me as a viable > option. > > If we really cared about the *_create() suffix then an alternative might > be to do a sed/kmem_cache_setup()/kmem_cache_create()/g after every user > in the kernel is ported. I honestly don't think that's worth it but I > wanted to at least mention it to highlight the fact that this might lead > to a naming compromise. I think using macros would allow us to have kmem_cache_create() in both the current variant (5 args) and new one (4 args) at the same time? But that's also not ideal so perhaps viable only if we really decided to convert everything sooner than later and drop that temporary compatibility layer. But perhaps if we're converting, it should be mainly to KMEM_CACHE() as it handles alignment. > From a cursory grep (and not excluding Documentation mentions) we will > have to replace 44 kmem_cache_create_usercopy() calls and about 463 > kmem_cache_create() calls which makes for a bit above 500 calls to port > to kmem_cache_setup(). That'll probably be good work for people getting > into kernel development. > > Anyway, I wanted to get an RFC out to get some rough agreement on what > the struct should look like, get some bikeshedding on the name done, and > what else needs to be massaged as part of this. I think that > cache_create() is the deepest we should stuff struct kmem_cache_args > into the bowels of slab. Well, if you wanted to be more adventurous... we could pass it also to __kmem_cache_create(), then remove kmem_cache_open() (move the code to its only caller __kmem_cache_create(), probably another thing not cleaned up after SLAB removal). And then also pass it to calculate_sizes() and at that point rcu_freeptr_offset can be removed from struct kmem_cache, because we just use the value from kmem_cache_args to calculate s->offset and then we can forget that it was requested specifically. > Signed-off-by: Christian Brauner > --- > Christian Brauner (6): > slab: introduce kmem_cache_setup() > slab: port KMEM_CACHE() to kmem_cache_setup() > slab: port KMEM_CACHE_USERCOPY() to kmem_cache_setup() > file: port to kmem_cache_setup() > slab: remove kmem_cache_create_rcu() > io_uring: port to kmem_cache_setup() > > Documentation/core-api/memory-allocation.rst | 10 +- > fs/file_table.c | 12 ++- > include/linux/slab.h | 51 ++++++++--- > io_uring/io_uring.c | 15 +-- > mm/slab_common.c | 132 ++++++++++++--------------- > 5 files changed, 121 insertions(+), 99 deletions(-) > --- > base-commit: 6e016babce7c845ed015da25c7a097fa3482d95a > change-id: 20240902-work-kmem_cache_args-e9760972c7d4 >