svn commit: r218578 - projects/graid/head/sys/geom/raid

Alexander Motin mav at FreeBSD.org
Fri Feb 11 16:02:52 UTC 2011


Author: mav
Date: Fri Feb 11 16:02:52 2011
New Revision: 218578
URL: http://svn.freebsd.org/changeset/base/218578

Log:
  Report subdisks in `graid list` also from provider side.

Modified:
  projects/graid/head/sys/geom/raid/g_raid.c

Modified: projects/graid/head/sys/geom/raid/g_raid.c
==============================================================================
--- projects/graid/head/sys/geom/raid/g_raid.c	Fri Feb 11 16:02:12 2011	(r218577)
+++ projects/graid/head/sys/geom/raid/g_raid.c	Fri Feb 11 16:02:52 2011	(r218578)
@@ -1984,7 +1984,7 @@ g_raid_dumpconf(struct sbuf *sb, const c
 	struct g_raid_volume *vol;
 	struct g_raid_subdisk *sd;
 	struct g_raid_disk *disk;
-	int s;
+	int i, s;
 
 	g_topology_assert();
 
@@ -2011,6 +2011,29 @@ g_raid_dumpconf(struct sbuf *sb, const c
 		    g_raid_volume_state2str(vol->v_state));
 		sbuf_printf(sb, "%s<Dirty>%s</Dirty>\n", indent,
 		    vol->v_dirty ? "Yes" : "No");
+		sbuf_printf(sb, "%s<Subdisks>", indent);
+		for (i = 0; i < vol->v_disks_count; i++) {
+			sd = &vol->v_subdisks[i];
+			if (sd->sd_disk != NULL &&
+			    sd->sd_disk->d_consumer != NULL) {
+				sbuf_printf(sb, "%s ",
+				    g_raid_get_diskname(sd->sd_disk));
+			} else {
+				sbuf_printf(sb, "NONE ");
+			}
+			sbuf_printf(sb, "(%s",
+			    g_raid_subdisk_state2str(sd->sd_state));
+			if (sd->sd_state == G_RAID_SUBDISK_S_REBUILD ||
+			    sd->sd_state == G_RAID_SUBDISK_S_RESYNC) {
+				sbuf_printf(sb, " %d%%",
+				    (int)(sd->sd_rebuild_pos * 100 /
+				     sd->sd_size));
+			}
+			sbuf_printf(sb, ")");
+			if (i + 1 < vol->v_disks_count)
+				sbuf_printf(sb, ", ");
+		}
+		sbuf_printf(sb, "</Subdisks>\n");
 		sx_xunlock(&sc->sc_lock);
 		g_topology_lock();
 	} else if (cp != NULL) {


More information about the svn-src-projects mailing list