diff --git a/cmd/zpool/zpool_main.c b/cmd/zpool/zpool_main.c index 0b5488f3b188..05f250585166 100644 --- a/cmd/zpool/zpool_main.c +++ b/cmd/zpool/zpool_main.c @@ -2869,6 +2869,8 @@ print_iostat_dashes(iostat_cbdata_t *cb, unsigned int force_column_width, if (cb->cb_kind) printf(" ----"); + if (cb->cb_kind) + printf(" ---"); printf("\n"); } @@ -2924,6 +2926,8 @@ print_iostat_header_impl(iostat_cbdata_t *cb, unsigned int force_column_width, if (cb->cb_kind) printf(" kind"); + if (cb->cb_kind) + printf(" nrv"); printf("\n"); @@ -3376,6 +3380,8 @@ print_vdev_stats(zpool_handle_t *zhp, const char *name, nvlist_t *oldnv, int ret = 0; uint64_t tdelta; double scale; + nvlist_t *nvx; + uint64_t nrotor = (uint64_t) -1; calcvs = safe_malloc(sizeof (*calcvs)); @@ -3455,11 +3461,21 @@ print_vdev_stats(zpool_handle_t *zhp, const char *name, nvlist_t *oldnv, print_iostat_histos(cb, oldnv, newnv, scale, name); } + if (nvlist_lookup_nvlist(newnv, ZPOOL_CONFIG_VDEV_STATS_EX, &nvx) == 0) + nvlist_lookup_uint64(nvx, ZPOOL_CONFIG_VDEV_NROTOR, + &nrotor); + if (!(cb->cb_flags & IOS_ANYHISTO_M)) { if (cb->cb_kind) { printf("%s%4s", cb->cb_scripted ? "\t" : " ", kind_mark(newnv)); } + if (cb->cb_kind) { + if (nrotor != (uint64_t) -1) + (void) printf(" %d", (int) nrotor); + else + (void) printf(" -"); + } } if (cb->vcdl != NULL) { diff --git a/include/sys/fs/zfs.h b/include/sys/fs/zfs.h index f925b379bfd9..3f6e5a1bb4b2 100644 --- a/include/sys/fs/zfs.h +++ b/include/sys/fs/zfs.h @@ -598,6 +598,7 @@ typedef struct zpool_rewind_policy { /* Kind (ssd, file, mix, hdd) (part of vdev_stat_ex_t) */ #define ZPOOL_CONFIG_VDEV_KIND "kind" +#define ZPOOL_CONFIG_VDEV_NROTOR "nrotor" #define ZPOOL_CONFIG_WHOLE_DISK "whole_disk" #define ZPOOL_CONFIG_ERRCOUNT "error_count" @@ -902,6 +903,8 @@ typedef struct vdev_stat_ex { /* Kind of vdev (ssd, file, mixed, hdd). Exported as one value. */ uint64_t vsx_kind; + /* Allocation rotor */ + uint64_t vsx_nrotor; } vdev_stat_ex_t; /* diff --git a/module/zfs/vdev.c b/module/zfs/vdev.c index 18628da00815..acfe4a7a3445 100644 --- a/module/zfs/vdev.c +++ b/module/zfs/vdev.c @@ -2938,6 +2938,10 @@ vdev_get_stats_ex_impl(vdev_t *vd, vdev_stat_t *vs, vdev_stat_ex_t *vsx) vsx->vsx_kind = VDEV_KIND_MIXED; else vsx->vsx_kind = VDEV_KIND_HDD; + if (vd->vdev_mg) + vsx->vsx_nrotor = vd->vdev_mg->mg_nrot; + else + vsx->vsx_nrotor = -1; } } diff --git a/module/zfs/vdev_label.c b/module/zfs/vdev_label.c index 737148bfbfda..8eb0347043eb 100644 --- a/module/zfs/vdev_label.c +++ b/module/zfs/vdev_label.c @@ -346,6 +346,8 @@ vdev_config_generate_stats(vdev_t *vd, nvlist_t *nv) fnvlist_add_uint64(nvx, ZPOOL_CONFIG_VDEV_KIND, vsx->vsx_kind); + fnvlist_add_uint64(nvx, ZPOOL_CONFIG_VDEV_NROTOR, vsx->vsx_nrotor); + /* Add extended stats nvlist to main nvlist */ fnvlist_add_nvlist(nv, ZPOOL_CONFIG_VDEV_STATS_EX, nvx);