svn commit: r294042 - head/sys/geom
Ravi Pokala
rpokala at FreeBSD.org
Thu Jan 14 21:52:22 UTC 2016
Author: rpokala
Date: Thu Jan 14 21:52:21 2016
New Revision: 294042
URL: https://svnweb.freebsd.org/changeset/base/294042
Log:
Add rotationrate to geom disk dumpconf
Parse and report the nominal rotation rate reported by the drive.
Reviewed by: sbruno, jhb
Approved by: jhb
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D4483
Requested by: Kevin Bowling < kevin.bowling @ kev009.com >
Modified:
head/sys/geom/geom_disk.c
Modified: head/sys/geom/geom_disk.c
==============================================================================
--- head/sys/geom/geom_disk.c Thu Jan 14 21:39:10 2016 (r294041)
+++ head/sys/geom/geom_disk.c Thu Jan 14 21:52:21 2016 (r294042)
@@ -549,6 +549,23 @@ g_disk_dumpconf(struct sbuf *sb, const c
indent, dp->d_fwheads);
sbuf_printf(sb, "%s<fwsectors>%u</fwsectors>\n",
indent, dp->d_fwsectors);
+
+ /*
+ * "rotationrate" is a little complicated, because the value
+ * returned by the drive might not be the RPM; 0 and 1 are
+ * special cases, and there's also a valid range.
+ */
+ sbuf_printf(sb, "%s<rotationrate>", indent);
+ if (dp->d_rotation_rate == 0) /* Old drives don't */
+ sbuf_printf(sb, "unknown"); /* report RPM. */
+ else if (dp->d_rotation_rate == 1) /* Since 0 is used */
+ sbuf_printf(sb, "0"); /* above, SSDs use 1. */
+ else if ((dp->d_rotation_rate >= 0x041) &&
+ (dp->d_rotation_rate <= 0xfffe))
+ sbuf_printf(sb, "%u", dp->d_rotation_rate);
+ else
+ sbuf_printf(sb, "invalid");
+ sbuf_printf(sb, "</rotationrate>\n");
if (dp->d_getattr != NULL) {
buf = g_malloc(DISK_IDENT_SIZE, M_WAITOK);
bp = g_alloc_bio();
More information about the svn-src-all
mailing list