From nobody Sun Apr 2 08:24:27 2023 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Pq6Wc0v0nz43Dym; Sun, 2 Apr 2023 08:24:28 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (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 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Pq6Wc0PzGz47g4; Sun, 2 Apr 2023 08:24:28 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680423868; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=9uRNxxapFtLvO5Lga9cpGzcvoc3LG8G9rVa2AEcN18Q=; b=XXA4SLhwfQEjH7DTyc3qDO3tr/JRnXr3MUmiJ+tF/i3fqYEOjMyKve6oOsm6/+pQOh9lAI mQjpcXMJKvQIKAwD2GHv6FC7OFzhfCHcpzShUUSDTbiZQ76UdCnpFoTRJvHIYsS6q/ANzJ T1WobLLaN78GHxGAN9AbqcVCtJqb+CtCxGfU3NXs1wbpZTo/71laDFQ9d+a7m5SrQGmXxR aQ5XdqFClLUJPmcLK28Y/9azQwIZLOSb7iKENP36+QOL/qgAfAXwHxUPv4UcdFLs8+ykUW ttSZzL5Ut6C8BGePy9l8RVtoVfXXvlw3xLbSX1Rxk8QJdCJMOk7KMMwMUh7wzQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680423868; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=9uRNxxapFtLvO5Lga9cpGzcvoc3LG8G9rVa2AEcN18Q=; b=VEVJp3Q6YnVEJByO5oDxbdO0E56tJLXbzfG2zeslGS1C2P5ikt9X9RxFPfw/eCT/Q/6RbU s2DONdAorXFGWwHhtstp9/AeeKbX7zFE/M/QMEP0P5DEXtQ40ger9sJ9qtUCSRYCVwAfLi omHsZNpkQto6OFnt//eOJXTy9WomoVQ+KmynQnHsjXgJ2zmPZOJosBEG4DS4Vlg6qE1HTN IQpbZlYATNSKkbJiWbnyVvmyAYTo6jBk6jAjigSjIzxXsp9bzIqswgCuwyiC1nghs0wdSj axWP5uzK0JyzQ9hEy/ck2etM5LvE6ii54SZ5q6mg9VeNpLOxpY5muQlVQhEBVg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680423868; a=rsa-sha256; cv=none; b=niootXetIKiQeVHrDDN75V1OCVbA8syUu0fcAARYUX8hykLhFDwtgqC4AGr9Dt+SZFB49a S9WSCA5IygY6599Jko8omMfNJIlpBjsc9Z0RvN1PWoDhZXODqRjy5YhIEAZo+9eUrKnxKc gIb4eaQJAybjthAwbPHPanlu8JTbnzlLRlL5nfpW/tjnNdCyYzUFpkhEV7Ux6Z6hnJLLdY tN7B88YmEZ263wwAycTJ1IauPmjEdw55JvkfQ7n6RNM0i8wrWhbqpVJuCBeuTJF+IQ7eZ7 g6ihaTy0m8Og/DH7Qgj2rrU3X3SdfG3njWf2fvw865y3g/sO9b5dBcJvOFIZww== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Pq6Wb6bDvz18Yy; Sun, 2 Apr 2023 08:24:27 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 3328ORsu076329; Sun, 2 Apr 2023 08:24:27 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 3328ORl6076328; Sun, 2 Apr 2023 08:24:27 GMT (envelope-from git) Date: Sun, 2 Apr 2023 08:24:27 GMT Message-Id: <202304020824.3328ORl6076328@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dmitry Chagin Subject: git: 7f72324346ea - main - pseudofs: Microoptimize struct pfs_node List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-main@freebsd.org X-BeenThere: dev-commits-src-main@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dchagin X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7f72324346ea154a92671fc913dbe82c0287501a Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by dchagin: URL: https://cgit.FreeBSD.org/src/commit/?id=7f72324346ea154a92671fc913dbe82c0287501a commit 7f72324346ea154a92671fc913dbe82c0287501a Author: Dmitry Chagin AuthorDate: 2023-04-02 08:20:07 +0000 Commit: Dmitry Chagin CommitDate: 2023-04-02 08:20:07 +0000 pseudofs: Microoptimize struct pfs_node Since 81167243b the size of struct pfs_node is 280 bytes, so the kernel memory allocator takes memory from 384 bytes sized bucket. However, the length of the node name is mostly short, e.g., for Linux emulation layer it is up to 16 bytes. The size of struct pfs_node w/o pfs_name is 152 bytes, i.e., we have 104 bytes left to fit the node name into the 256 bytes-sized bucket. Reviewed by: des Differential revision: https://reviews.freebsd.org/D39381 MFC after: 1 month --- sys/fs/pseudofs/pseudofs.c | 8 +++++--- sys/fs/pseudofs/pseudofs.h | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/sys/fs/pseudofs/pseudofs.c b/sys/fs/pseudofs/pseudofs.c index 44473a926182..29071b34bd06 100644 --- a/sys/fs/pseudofs/pseudofs.c +++ b/sys/fs/pseudofs/pseudofs.c @@ -72,18 +72,20 @@ pfs_alloc_node_flags(struct pfs_info *pi, const char *name, pfs_type_t type, int { struct pfs_node *pn; int malloc_flags; + size_t len; - KASSERT(strlen(name) < PFS_NAMELEN, + len = strlen(name); + KASSERT(len < PFS_NAMELEN, ("%s(): node name is too long", __func__)); if (flags & PFS_NOWAIT) malloc_flags = M_NOWAIT | M_ZERO; else malloc_flags = M_WAITOK | M_ZERO; - pn = malloc(sizeof *pn, M_PFSNODES, malloc_flags); + pn = malloc(sizeof(*pn) + len + 1, M_PFSNODES, malloc_flags); if (pn == NULL) return (NULL); mtx_init(&pn->pn_mutex, "pfs_node", NULL, MTX_DEF | MTX_DUPOK); - strlcpy(pn->pn_name, name, sizeof pn->pn_name); + memcpy(pn->pn_name, name, len); pn->pn_type = type; pn->pn_info = pi; return (pn); diff --git a/sys/fs/pseudofs/pseudofs.h b/sys/fs/pseudofs/pseudofs.h index 158f74575e33..e355e5f5609f 100644 --- a/sys/fs/pseudofs/pseudofs.h +++ b/sys/fs/pseudofs/pseudofs.h @@ -219,7 +219,6 @@ struct pfs_info { * is not enforcable by WITNESS. */ struct pfs_node { - char pn_name[PFS_NAMELEN]; pfs_type_t pn_type; int pn_flags; struct mtx pn_mutex; @@ -240,6 +239,7 @@ struct pfs_node { struct pfs_node *pn_nodes; /* (o) */ struct pfs_node *pn_last_node; /* (o) */ struct pfs_node *pn_next; /* (p) */ + char pn_name[]; /* Keep it last */ }; /*