diff options
author | mav <mav@FreeBSD.org> | 2017-01-19 11:16:25 +0000 |
---|---|---|
committer | mav <mav@FreeBSD.org> | 2017-01-19 11:16:25 +0000 |
commit | adc6be7a4736f09f27e54595ab094fc1338075de (patch) | |
tree | fa2b28d56622fde95789791110ed0e6fe094bdf2 /sys/geom | |
parent | 3935ffe69adbf5923a379ddf4a61ab145a3f5af7 (diff) | |
download | FreeBSD-src-adc6be7a4736f09f27e54595ab094fc1338075de.zip FreeBSD-src-adc6be7a4736f09f27e54595ab094fc1338075de.tar.gz |
MFC r311971: Report random flash storage as non-rotating to GEOM_DISK.
While doing it, introduce respective constants in geom_disk.h.
Diffstat (limited to 'sys/geom')
-rw-r--r-- | sys/geom/geom_disk.c | 12 | ||||
-rw-r--r-- | sys/geom/geom_disk.h | 5 |
2 files changed, 11 insertions, 6 deletions
diff --git a/sys/geom/geom_disk.c b/sys/geom/geom_disk.c index 8c3ec64..f38a61b 100644 --- a/sys/geom/geom_disk.c +++ b/sys/geom/geom_disk.c @@ -586,12 +586,12 @@ g_disk_dumpconf(struct sbuf *sb, const char *indent, struct g_geom *gp, struct g * 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)) + if (dp->d_rotation_rate == DISK_RR_UNKNOWN) /* Old drives */ + sbuf_printf(sb, "unknown"); /* don't report RPM. */ + else if (dp->d_rotation_rate == DISK_RR_NON_ROTATING) + sbuf_printf(sb, "0"); + else if ((dp->d_rotation_rate >= DISK_RR_MIN) && + (dp->d_rotation_rate <= DISK_RR_MAX)) sbuf_printf(sb, "%u", dp->d_rotation_rate); else sbuf_printf(sb, "invalid"); diff --git a/sys/geom/geom_disk.h b/sys/geom/geom_disk.h index 5fce5b9..642a512 100644 --- a/sys/geom/geom_disk.h +++ b/sys/geom/geom_disk.h @@ -119,6 +119,11 @@ struct disk { #define DISKFLAG_DIRECT_COMPLETION 0x20 #define DISKFLAG_CANZONE 0x80 +#define DISK_RR_UNKNOWN 0 +#define DISK_RR_NON_ROTATING 1 +#define DISK_RR_MIN 0x0401 +#define DISK_RR_MAX 0xfffe + struct disk *disk_alloc(void); void disk_create(struct disk *disk, int version); void disk_destroy(struct disk *disk); |