diff options
author | Hans Rosenfeld <hans.rosenfeld@nexenta.com> | 2015-06-29 18:01:01 +0200 |
---|---|---|
committer | Hans Rosenfeld <hans.rosenfeld@nexenta.com> | 2015-11-05 17:59:05 +0100 |
commit | 374f65e730bef62a7c83fb2cb0250f74d2a6a1e8 (patch) | |
tree | 6780d3eb1a23916d429f825a09c0dadbd18e7d1b /usr/src/cmd/stat | |
parent | c0e96d867a045da50bf7e014cab94cb44528a0f5 (diff) | |
download | illumos-gate-374f65e730bef62a7c83fb2cb0250f74d2a6a1e8.tar.gz |
6304 iostat(1M) should be able to handle KSTAT_DATA_STRING
Reviewed by: Richard Elling <Richard.Elling@RichardElling.com>
Reviewed by: Garrett D'Amore <garrett@damore.org>
Diffstat (limited to 'usr/src/cmd/stat')
-rw-r--r-- | usr/src/cmd/stat/iostat/iostat.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/usr/src/cmd/stat/iostat/iostat.c b/usr/src/cmd/stat/iostat/iostat.c index 628dab1518..df77f752cc 100644 --- a/usr/src/cmd/stat/iostat/iostat.c +++ b/usr/src/cmd/stat/iostat/iostat.c @@ -28,6 +28,7 @@ */ /* * Copyright (c) 2012 by Delphix. All rights reserved. + * Copyright 2015 Nexenta Systems, Inc. All rights reserved. */ #include <stdio.h> @@ -1015,18 +1016,28 @@ show_disk_errors(void *v1, void *v2, void *d) switch (knp[i].data_type) { case KSTAT_DATA_CHAR: + case KSTAT_DATA_STRING: if ((strcmp(knp[i].name, "Serial No") == 0) && do_devid) { if (disk->is_devid) { push_out("Device Id: %s ", disk->is_devid); col += strlen(disk->is_devid); - } else + } else { push_out("Device Id: "); - } else { + } + + break; + } + if (knp[i].data_type == KSTAT_DATA_CHAR) { push_out("%s: %-.16s ", knp[i].name, &knp[i].value.c[0]); - col += strlen(&knp[i].value.c[0]); + col += strnlen(&knp[i].value.c[0], 16); + } else { + push_out("%s: %s ", knp[i].name, + KSTAT_NAMED_STR_PTR(&knp[i])); + col += + KSTAT_NAMED_STR_BUFLEN(&knp[i]) - 1; } break; case KSTAT_DATA_ULONG: @@ -1036,11 +1047,13 @@ show_disk_errors(void *v1, void *v2, void *d) break; case KSTAT_DATA_ULONGLONG: if (strcmp(knp[i].name, "Size") == 0) { - push_out("%s: %2.2fGB <%llu bytes>\n", + do_newline(); + push_out("%s: %2.2fGB <%llu bytes>", knp[i].name, (float)knp[i].value.ui64 / DISK_GIGABYTE, knp[i].value.ui64); + do_newline(); col = 0; break; } |