From nobody Fri Sep 5 18:42:22 2025 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 4cJQFB5QCpz66DV5; Fri, 05 Sep 2025 18:42:22 +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 "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cJQFB3ftXz4NrM; Fri, 05 Sep 2025 18:42:22 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1757097742; 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=6UuzoTMsFQIulJIYVTGtgXzft/ib8B1j+V2fSwfMOmI=; b=favhebq2QpLYbeab/dx94OT0umB8j03cgZv3HIcYhVQhav7dC8pprogDc3bktgEtPF9bba vattuQs1kg2ciabJ04FfmyYvkKfq2/5V5e/l+ThD/n/oIvNA/JMb9jUoE9mnV071yJGoan 9RHehKCn5gUYRX2cNgcdwWmi/NY9e44s3ABlbZC4Ux4Vne/26r+0xU+60YoKhCNuUVGd35 k9gEsbQnqJ/39HbeeIeNBp9D3piN6NU0U94watzQ2qAnrOlG0Ebme7nNNAqyYzZDm9hYxP B3p5jsWtm+sS0VotG6zLKm42dTV1s0jd35/gqMNjWdEL+PpvOW5LazMTa5IIew== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1757097742; 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=6UuzoTMsFQIulJIYVTGtgXzft/ib8B1j+V2fSwfMOmI=; b=sxbZMRKUv0q1OgiiL9zUrS19gwk5o23IxrJHp2ECRc/3mDnnr77/XdTsctmGzPYWa+kEUB c2ROdpf9FKD3KA3T9cYLmLM67cdLnpDVeeDziRm83T1Nkl/6f/DaoGFrM2QG25n0un2CD8 1nZsb59QiOkWTKvCkilkzr6+UtrxK3+vXEI29izZmHQ5xmCRj69oeX6O2ICP9cYjNXDAex rjmAvgmPzytZ0ZXJZ1/D9PpVfWEaL0x9eCiqPtrHFkG9scp1NKFnNd0mlpSWxgHlA6Uwxm D6Pv5XbCXYoOpXjOXgj8a3firSdEnwyUCw1fK+XQpCAMteWu/GSG6hZjb0OavQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1757097742; a=rsa-sha256; cv=none; b=eDMG/Rhpgehcs0CL3WTyTzXiTfgoPCThEcY5BcqqT3HmtF5n5eP2ecC13svJbzIvSpLKGB MAaDoPxMCWCFuiCEMAmbiSUJQe10rekmHstLb47wHGTcL9tPjVO8gdqdZWPXIeb+4Owl07 /WDzONq5Ctv/eM0aZ9xR+K3d/ulSWvyvAJCNuv+Lf5faBT/gpAtmgGL4GOKDQdAXno7H+9 PPrW+oUI0wE6ldf6G8F/Mi0vBAC5tVcHFSPyA7FJI9RzmK1u6HdS8qJ4BbevyUAF50XPiL M6sIjudEhqpfYZbSwp1kiplYeXc2HwEN+4nANEXBa7J4jRwD1Kbd7j9A+9Xv5w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none 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 4cJQFB3Cy6z10FY; Fri, 05 Sep 2025 18:42:22 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 585IgMKH096375; Fri, 5 Sep 2025 18:42:22 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 585IgMGY096372; Fri, 5 Sep 2025 18:42:22 GMT (envelope-from git) Date: Fri, 5 Sep 2025 18:42:22 GMT Message-Id: <202509051842.585IgMGY096372@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Warner Losh Subject: git: 1167a7d065f8 - main - GEOM: add a new function g_new_geom 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: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 1167a7d065f8a6265cc8e28025944a2f848e3a7e Auto-Submitted: auto-generated The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=1167a7d065f8a6265cc8e28025944a2f848e3a7e commit 1167a7d065f8a6265cc8e28025944a2f848e3a7e Author: Wuyang Chung AuthorDate: 2025-07-23 09:41:34 +0000 Commit: Warner Losh CommitDate: 2025-09-05 18:42:21 +0000 GEOM: add a new function g_new_geom This function is a variant of g_new_geomf. It accepts a regular string instead of a format string as its input parameter. It can save the time wasted on unnecessary format string processing. Reviewed by: imp Pull Request: https://github.com/freebsd/freebsd-src/pull/1786 --- share/man/man9/g_geom.9 | 15 ++++++++++++++- sys/geom/geom.h | 5 +++-- sys/geom/geom_subr.c | 33 ++++++++++++++++++++++----------- 3 files changed, 39 insertions(+), 14 deletions(-) diff --git a/share/man/man9/g_geom.9 b/share/man/man9/g_geom.9 index 74c6979fceda..c5b0c0aded2d 100644 --- a/share/man/man9/g_geom.9 +++ b/share/man/man9/g_geom.9 @@ -27,12 +27,15 @@ .Os .Sh NAME .Nm g_new_geomf , +.Nm g_new_geom , .Nm g_destroy_geom .Nd "geom management" .Sh SYNOPSIS .In geom/geom.h .Ft "struct g_geom *" .Fn g_new_geomf "struct g_class *mp" "const char *fmt" ... +.Ft "struct g_geom *" +.Fn g_new_geom "struct g_class *mp" "const char *name" .Ft void .Fn g_destroy_geom "struct g_geom *gp" .Sh DESCRIPTION @@ -58,6 +61,14 @@ The geom's name is created in a -like way from the rest of the arguments. .Pp The +.Fn g_new_geom +function is very similar to +.Fn g_new_geomf +except that it accepts a regular string instead of a +.Xr printf 3 Ns +-like format strng as the geom's name. +.Pp +The .Fn g_destroy_geom function destroys the given geom immediately and cancels all related pending events. @@ -94,7 +105,9 @@ and .Va access for it. .Pp -.Fn g_new_geomf : +.Fn g_new_geomf +and +.Fn g_new_geom : .Bl -item -offset indent .It Class diff --git a/sys/geom/geom.h b/sys/geom/geom.h index 908ce86f03a6..50e6627b0157 100644 --- a/sys/geom/geom.h +++ b/sys/geom/geom.h @@ -289,8 +289,9 @@ int g_handleattr_int(struct bio *bp, const char *attribute, int val); int g_handleattr_off_t(struct bio *bp, const char *attribute, off_t val); int g_handleattr_uint16_t(struct bio *bp, const char *attribute, uint16_t val); int g_handleattr_str(struct bio *bp, const char *attribute, const char *str); -struct g_consumer * g_new_consumer(struct g_geom *gp); -struct g_geom * g_new_geomf(struct g_class *mp, const char *fmt, ...) +struct g_consumer *g_new_consumer(struct g_geom *gp); +struct g_geom *g_new_geom(struct g_class *mp, const char *name); +struct g_geom *g_new_geomf(struct g_class *mp, const char *fmt, ...) __printflike(2, 3); struct g_provider * g_new_providerf(struct g_geom *gp, const char *fmt, ...) __printflike(2, 3); diff --git a/sys/geom/geom_subr.c b/sys/geom/geom_subr.c index 1429c84942ed..2a6ce1ab6486 100644 --- a/sys/geom/geom_subr.c +++ b/sys/geom/geom_subr.c @@ -368,20 +368,15 @@ g_retaste(struct g_class *mp) } struct g_geom * -g_new_geomf(struct g_class *mp, const char *fmt, ...) +g_new_geom(struct g_class *mp, const char *name) { + int len; struct g_geom *gp; - va_list ap; - struct sbuf *sb; g_topology_assert(); G_VALID_CLASS(mp); - sb = sbuf_new_auto(); - va_start(ap, fmt); - sbuf_vprintf(sb, fmt, ap); - va_end(ap); - sbuf_finish(sb); - gp = g_malloc(sizeof(*gp) + sbuf_len(sb) + 1, M_WAITOK | M_ZERO); + len = strlen(name); + gp = g_malloc(sizeof(*gp) + len + 1, M_WAITOK | M_ZERO); gp->name = (char *)(gp + 1); gp->class = mp; gp->rank = 1; @@ -389,8 +384,7 @@ g_new_geomf(struct g_class *mp, const char *fmt, ...) LIST_INIT(&gp->provider); LIST_INSERT_HEAD(&mp->geom, gp, geom); TAILQ_INSERT_HEAD(&geoms, gp, geoms); - strcpy(gp->name, sbuf_data(sb)); - sbuf_delete(sb); + memcpy(gp->name, name, len); /* Fill in defaults from class */ gp->start = mp->start; gp->spoiled = mp->spoiled; @@ -404,6 +398,23 @@ g_new_geomf(struct g_class *mp, const char *fmt, ...) return (gp); } +struct g_geom * +g_new_geomf(struct g_class *mp, const char *fmt, ...) +{ + struct g_geom *gp; + va_list ap; + struct sbuf *sb; + + sb = sbuf_new_auto(); + va_start(ap, fmt); + sbuf_vprintf(sb, fmt, ap); + va_end(ap); + sbuf_finish(sb); + gp = g_new_geom(mp, sbuf_data(sb)); + sbuf_delete(sb); + return (gp); +} + void g_destroy_geom(struct g_geom *gp) {