From nobody Sat Aug 29 18:00:13 2026 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 4hXNML294qz6qq6q for ; Sat, 29 Aug 2026 18:00:14 +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 "YR2" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hXNML1cMQz3XxT for ; Sat, 29 Aug 2026 18:00:14 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1788026414; 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=5cZ7mOK+PHW3jALY+kTfrJ/vvmrLB6M65ItuK+fIvPQ=; b=qtIWqM4i/6mrEN9Ie486k0XfHKgvz2agd8tMZnw+biCx0zzF1Bcunsi49xQp5ovxqYUt7d i5SuaEK0WZ5zf9stblJMkV2fXQbsqEv0M/Rm/qvy1TBD4LXN4OGXjm4RdQ8YpySCzYyxnE xP5WZAKzZcrEqgR0HtdlrJ/9qy8Ma6eGwImQzb8cq5Wz/MlkkB8iDYv/PvlSLbWGgsNCNU QKKT9onK5OVnhAiYQT1cAwWdU6XJ2oT4Oa9BmnlpzlOaAbRtznpgmziwpc63j/TbABSX1T UzZegK3skR6W7v1ai+tsgX+E7HVnpYS1y4slma+oPivMAx/XAd/QBULTNTD6RQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1788026414; a=rsa-sha256; cv=none; b=nl+iBWatN/vyH+f+1E0k751fQzgjAg7GiQIFn+gGNsKVO9hCrU2HqUUek8Ib00J11Mj5x1 wzDq2LzYsrs+mW6iClfGQP770FT08eLOIJW85G2ecskKWRpZ/nwzSmFEKJ7geet974VAVY V2MfqwXmgX/hMqHYJFrcgt3EqKRM9R1QGtKz76GHc2KDu0QZ2AJszvzh/YFVId3kuOKqTZ fyEpxTsSHlPPHGlff6dnvU71jGFX8asp4S5J0Bsx4dHi3qCkGK8sQ6kaXjmkX38yWBSboa t/ABr+kdiPIGqz/dUFe+Mvh30PuZM+1ycYGHWmIyYS1XhAoKPXJPAYaUSBT+vg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1788026414; 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=5cZ7mOK+PHW3jALY+kTfrJ/vvmrLB6M65ItuK+fIvPQ=; b=GVHR8TLGbIau75D7tyyKX7+qEDqRuZIRS4CQnQZgE09CLk+8e5l31Gq9v5mhhsCJYZvQ44 ygcJDDzvci8F7Jeiz4azr1/nvlQLYciiaoxblH2W5F38CTmSzI1rFpL+i3RvpEIqBTZY7K EkQvnuUAZPBGlSt2vF/4oN3ev4ffYX9cl2C3iVYhG6omZbaVPxNwDAkwQWWMOhxRqPLy9B 0bQ4l1sYQKE3s1SDKjRFPOy/gYr5gEjQysSBaXhpo7zteYit0ThGCK9AjDqYBB+zn3zamr ic3LgDW1+LVSFlctDLzjolFK96UkZbNp85SZ2wDurqeJjm1Bjsq7eZ+c6dcwTQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hXNML01RkzqRT for ; Sat, 29 Aug 2026 18:00:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 26d05 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 29 Aug 2026 18:00:13 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Alexander Motin Subject: git: 2d9c41daac0b - main - graid: Add rotation rate support 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 List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 2d9c41daac0b1e7f35a88ee187ae98a233a30267 Auto-Submitted: auto-generated Date: Sat, 29 Aug 2026 18:00:13 +0000 Message-Id: <6a931e2d.26d05.9079eb5@gitrepo.freebsd.org> The branch main has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=2d9c41daac0b1e7f35a88ee187ae98a233a30267 commit 2d9c41daac0b1e7f35a88ee187ae98a233a30267 Author: Alexander Motin AuthorDate: 2026-08-29 17:56:15 +0000 Commit: Alexander Motin CommitDate: 2026-08-29 18:00:02 +0000 graid: Add rotation rate support If all member devices report the same rotation rate, pass it up. --- sys/geom/raid/g_raid.c | 33 +++++++++++++++++++++++++++++++++ sys/geom/raid/g_raid.h | 1 + 2 files changed, 34 insertions(+) diff --git a/sys/geom/raid/g_raid.c b/sys/geom/raid/g_raid.c index d35695482eea..e8bc61b5c657 100644 --- a/sys/geom/raid/g_raid.c +++ b/sys/geom/raid/g_raid.c @@ -47,6 +47,7 @@ #include #include +#include #include #include "g_raid_md_if.h" #include "g_raid_tr_if.h" @@ -520,6 +521,11 @@ g_raid_get_disk_info(struct g_raid_disk *disk) G_RAID_DEBUG1(2, disk->d_softc, "BIO_DELETE not supported by %s: %d.", cp->provider->name, error); + + /* Read rotation rate. */ + error = g_getattr("GEOM::rotation_rate", cp, &disk->d_rotation_rate); + if (error) + disk->d_rotation_rate = DISK_RR_UNKNOWN; } void @@ -1088,6 +1094,31 @@ g_raid_candelete(struct g_raid_softc *sc, struct bio *bp) g_handleattr(bp, "GEOM::candelete", &val, sizeof(val)); } +static void +g_raid_rotation_rate(struct g_raid_softc *sc, struct bio *bp) +{ + struct g_raid_volume *vol; + struct g_raid_subdisk *sd; + bool first = true; + uint16_t rr = DISK_RR_UNKNOWN; + int i; + + vol = bp->bio_to->private; + for (i = 0; i < vol->v_disks_count; i++) { + sd = &vol->v_subdisks[i]; + if (sd->sd_state == G_RAID_SUBDISK_S_NONE) + continue; + if (first) + rr = sd->sd_disk->d_rotation_rate; + else if (rr != sd->sd_disk->d_rotation_rate) { + rr = DISK_RR_UNKNOWN; + break; + } + first = false; + } + g_handleattr(bp, "GEOM::rotation_rate", &rr, sizeof(rr)); +} + static void g_raid_start(struct bio *bp) { @@ -1115,6 +1146,8 @@ g_raid_start(struct bio *bp) g_raid_candelete(sc, bp); else if (!strcmp(bp->bio_attribute, "GEOM::kerneldump")) g_raid_kerneldump(sc, bp); + else if (!strcmp(bp->bio_attribute, "GEOM::rotation_rate")) + g_raid_rotation_rate(sc, bp); else g_io_deliver(bp, EOPNOTSUPP); return; diff --git a/sys/geom/raid/g_raid.h b/sys/geom/raid/g_raid.h index d155c72711ae..d4c6937c5968 100644 --- a/sys/geom/raid/g_raid.h +++ b/sys/geom/raid/g_raid.h @@ -128,6 +128,7 @@ struct g_raid_disk { struct g_consumer *d_consumer; /* GEOM disk consumer. */ void *d_md_data; /* Disk's metadata storage. */ int d_candelete; /* BIO_DELETE supported. */ + uint16_t d_rotation_rate;/* Disk's rotation rate. */ uint64_t d_flags; /* Additional flags. */ u_int d_state; /* Disk state. */ u_int d_load; /* Disk average load. */