summaryrefslogtreecommitdiffstats
path: root/sbin/vinum
diff options
context:
space:
mode:
Diffstat (limited to 'sbin/vinum')
-rw-r--r--sbin/vinum/list.c67
1 files changed, 41 insertions, 26 deletions
diff --git a/sbin/vinum/list.c b/sbin/vinum/list.c
index 2aa9302..6a55989 100644
--- a/sbin/vinum/list.c
+++ b/sbin/vinum/list.c
@@ -39,6 +39,7 @@
* otherwise) arising in any way out of the use of this software, even if
* advised of the possibility of such damage.
*
+ * $Id: list.c,v 1.20 1999/10/12 05:40:49 grog Exp grog $
* $FreeBSD$
*/
@@ -90,8 +91,9 @@ vinum_list(int argc, char *argv[], char *argv0[])
int i;
enum objecttype type;
- if (sflag & (!verbose)) /* just summary stats, */
- printf("Object\t\t Reads\t\tBytes\tAverage\tRecover\t Writes\t\tBytes\tAverage\t Mblock Mstripe\n\n");
+ if (sflag & (!vflag)) /* just summary stats, */
+ printf("Object\t\t Reads\t\tBytes\tAverage\tRecover\t Writes"
+ "\t\tBytes\tAverage\t Mblock Mstripe\n\n");
if (argc == 0)
listconfig(); /* list everything */
else {
@@ -137,7 +139,7 @@ vinum_ldi(int driveno, int recurse)
get_drive_info(&drive, driveno);
if (drive.state != drive_unallocated) {
- if (verbose) {
+ if (vflag) {
printf("Drive %s:\tDevice %s\n",
drive.label.name,
drive.devicename);
@@ -161,6 +163,9 @@ vinum_ldi(int driveno, int recurse)
printf("\t\tLast error: %s\n", strerror(drive.lasterror));
else
printf("\t\tLast error: none\n");
+ printf("\t\tActive requests:\t%d\n\t\tMaximum active:\t\t%d\n",
+ drive.active,
+ drive.maxactive);
if (Verbose) { /* print the free list */
int fe; /* freelist entry */
struct drive_freelist freelist;
@@ -191,15 +196,13 @@ vinum_ldi(int driveno, int recurse)
drive.devicename,
drive.sectors_available * DEV_BSIZE / MEGABYTE,
(drive.label.drive_size / MEGABYTE));
- if (drive.label.drive_size == 0)
- printf("\n"); /* can't print percentages */
- else
- printf(" (%d%%)\n",
+ if (drive.label.drive_size != 0)
+ printf(" (%d%%)",
(int) ((drive.sectors_available * 100 * DEV_BSIZE)
/ (drive.label.drive_size - (DATASTART * DEV_BSIZE))));
}
if (sflag) {
- if (verbose || Verbose) {
+ if (vflag || Verbose) {
printf("\t\tReads: \t%16qd\n\t\tBytes read:\t%16qd (%s)\n",
drive.reads,
drive.bytes_read,
@@ -221,11 +224,10 @@ vinum_ldi(int driveno, int recurse)
printf("\t\t");
printf("%7qd\t%15qd\t", drive.writes, drive.bytes_written);
if (drive.writes != 0)
- printf("%7qd\n", drive.bytes_written / drive.writes);
- else
- printf("\n");
+ printf("%7qd", drive.bytes_written / drive.writes);
}
}
+ printf("\n");
}
}
@@ -259,7 +261,7 @@ vinum_lvi(int volno, int recurse)
{
get_volume_info(&vol, volno);
if (vol.state != volume_unallocated) {
- if (verbose) {
+ if (vflag) {
printf("Volume %s:\tSize: %qd bytes (%qd MB)\n"
"\t\tState: %s\n\t\tFlags: %s%s%s\n",
vol.name,
@@ -283,7 +285,7 @@ vinum_lvi(int volno, int recurse)
vol.plexes,
roughlength(vol.size << DEV_BSHIFT, 0));
if (sflag) {
- if (verbose || Verbose) {
+ if (vflag || Verbose) {
printf("\t\tReads: \t%16qd\n\t\tRecovered:\t%16qd\n\t\tBytes read:\t%16qd (%s)\n",
vol.reads,
vol.recovered_reads,
@@ -340,7 +342,7 @@ vinum_lvi(int volno, int recurse)
}
}
}
- if (verbose == 0) /* not verbose, but recursive */
+ if (vflag == 0) /* not verbose, but recursive */
printf("\n"); /* leave a line at the end of each hierarchy */
}
}
@@ -377,7 +379,7 @@ vinum_lpi(int plexno, int recurse)
{
get_plex_info(&plex, plexno);
if (plex.state != plex_unallocated) {
- if (verbose) {
+ if (vflag) {
printf("Plex %s:\tSize:\t%9qd bytes (%qd MB)\n\t\tSubdisks: %8d\n",
plex.name,
(long long) plex.length * DEV_BSIZE,
@@ -405,7 +407,7 @@ vinum_lpi(int plexno, int recurse)
get_volume_info(&vol, plex.volno);
printf("\t\tPart of volume %s\n", vol.name);
}
- } else if (!sflag) {
+ } else if (!sflag) { /* non-verbose list */
char *org = ""; /* organization */
switch (plex.organization) {
@@ -422,7 +424,7 @@ vinum_lpi(int plexno, int recurse)
org = "R5";
break;
}
- printf("P %-18s %2s State: %s\tSubdisks: %5d\tSize: %s\n",
+ printf("P %-18s %2s State: %s\tSubdisks: %5d\tSize: %s",
plex.name,
org,
plex_state(plex.state),
@@ -430,7 +432,7 @@ vinum_lpi(int plexno, int recurse)
roughlength(plex.length << DEV_BSHIFT, 0));
}
if (sflag) {
- if (verbose || Verbose) {
+ if (vflag || Verbose) {
printf("\t\tReads: \t%16qd\n\t\tBytes read:\t%16qd (%s)\n",
plex.reads,
plex.bytes_read,
@@ -499,6 +501,7 @@ vinum_lpi(int plexno, int recurse)
vinum_lsi(sd.sdno, 0);
}
}
+ printf("\n");
}
}
@@ -532,7 +535,7 @@ vinum_lsi(int sdno, int recurse)
{
get_sd_info(&sd, sdno);
if (sd.state != sd_unallocated) {
- if (verbose) {
+ if (vflag) {
printf("Subdisk %s:\n\t\tSize: %16qd bytes (%qd MB)\n\t\tState: %s\n",
sd.name,
(long long) sd.sectors * DEV_BSIZE,
@@ -554,6 +557,15 @@ vinum_lsi(int sdno, int recurse)
roughlength(sd.revive_blocksize, 0),
sd.revive_interval);
}
+ if (sd.state == sd_initializing) {
+ printf("\t\tInitialize pointer:\t%s (%d%%)\n",
+ roughlength(sd.initialized << DEV_BSHIFT, 0),
+ (int) (((u_int64_t) (sd.initialized * 100)) / sd.sectors));
+ printf("\t\tInitialize blocksize:\t%s\n"
+ "\t\tInitialize interval:\t%10d seconds\n",
+ roughlength(sd.init_blocksize, 0),
+ sd.init_interval);
+ }
get_drive_info(&drive, sd.driveno);
if (sd.driveoffset < 0)
printf("\t\tDrive %s (%s), no offset\n",
@@ -578,7 +590,7 @@ vinum_lsi(int sdno, int recurse)
roughlength(sd.sectors << DEV_BSHIFT, 0));
}
if (sflag) {
- if (verbose || Verbose) {
+ if (vflag || Verbose) {
printf("\t\tReads: \t%16qd\n\t\tBytes read:\t%16qd (%s)\n",
sd.reads,
sd.bytes_read,
@@ -607,7 +619,7 @@ vinum_lsi(int sdno, int recurse)
}
if (recurse)
vinum_ldi(sd.driveno, recurse);
- if (verbose)
+ if (vflag)
printf("\n"); /* make it more readable */
}
}
@@ -651,22 +663,22 @@ listconfig()
perror("Can't get vinum config");
return;
}
- printf("%3d drives\n", vinum_conf.drives_used);
+ printf("%d drives:\n", vinum_conf.drives_used);
if (vinum_conf.drives_used > 0) {
vinum_ld(0, NULL, NULL);
printf("\n");
}
- printf("%3d volumes\n", vinum_conf.volumes_used);
+ printf("%d volumes:\n", vinum_conf.volumes_used);
if (vinum_conf.volumes_used > 0) {
vinum_lv(0, NULL, NULL);
printf("\n");
}
- printf("%3d plexes\n", vinum_conf.plexes_used);
+ printf("%d plexes:\n", vinum_conf.plexes_used);
if (vinum_conf.plexes_used > 0) {
vinum_lp(0, NULL, NULL);
printf("\n");
}
- printf("%3d subdisks\n", vinum_conf.subdisks_used);
+ printf("%d subdisks:\n", vinum_conf.subdisks_used);
if (vinum_conf.subdisks_used > 0)
vinum_ls(0, NULL, NULL);
}
@@ -710,7 +722,10 @@ vinum_info(int argc, char *argv[], char *argv0[])
meminfo.highwater,
(int) meminfo.malloced);
- if (verbose && (!Verbose))
+ printf("%d requests active, maximum %d active\n",
+ vinum_conf.active,
+ vinum_conf.maxactive);
+ if (vflag && (!Verbose))
for (i = 0; i < meminfo.mallocs; i++) {
malloced.seq = i;
if (ioctl(superdev, VINUM_MALLOCINFO, &malloced) < 0) {
OpenPOWER on IntegriCloud