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

Alexander Motin mav at FreeBSD.org
Thu Jan 13 19:25:15 UTC 2011


Author: mav
Date: Thu Jan 13 19:25:15 2011
New Revision: 217373
URL: http://svn.freebsd.org/changeset/base/217373

Log:
  Make `graid status` report subdisks statuses together with disk status.
  
  Remove unused (not applicable) G_RAID_DISK_FLAG_XXX constands.

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

Modified: projects/graid/head/sys/geom/raid/g_raid.c
==============================================================================
--- projects/graid/head/sys/geom/raid/g_raid.c	Thu Jan 13 18:53:30 2011	(r217372)
+++ projects/graid/head/sys/geom/raid/g_raid.c	Thu Jan 13 19:25:15 2011	(r217373)
@@ -667,7 +667,7 @@ g_raid_idle(struct g_raid_volume *vol, i
 			continue;
 		G_RAID_DEBUG(1, "Disk %s (device %s) marked as clean.",
 		    g_raid_get_diskname(disk), sc->sc_name);
-		disk->d_flags &= ~G_RAID_DISK_FLAG_DIRTY;
+//		disk->d_flags &= ~G_RAID_DISK_FLAG_DIRTY;
 //		g_raid_update_metadata(disk);
 	}
 	return (0);
@@ -693,7 +693,7 @@ g_raid_unidle(struct g_raid_volume *vol)
 			continue;
 		G_RAID_DEBUG(1, "Disk %s (device %s) marked as dirty.",
 		    g_raid_get_diskname(disk), sc->sc_name);
-		disk->d_flags |= G_RAID_DISK_FLAG_DIRTY;
+//		disk->d_flags |= G_RAID_DISK_FLAG_DIRTY;
 //		g_raid_update_metadata(disk);
 	}
 }
@@ -1672,6 +1672,8 @@ g_raid_dumpconf(struct sbuf *sb, const c
 {
 	struct g_raid_softc *sc;
 	struct g_raid_volume *vol;
+	struct g_raid_subdisk *sd;
+	struct g_raid_disk *disk;
 	int s;
 
 	g_topology_assert();
@@ -1700,38 +1702,24 @@ g_raid_dumpconf(struct sbuf *sb, const c
 		sx_xunlock(&sc->sc_lock);
 		g_topology_lock();
 	} else if (cp != NULL) {
-		struct g_raid_disk *disk;
-
 		disk = cp->private;
 		if (disk == NULL)
 			return;
 		g_topology_unlock();
 		sx_xlock(&sc->sc_lock);
-		sbuf_printf(sb, "%s<Flags>", indent);
-		if (disk->d_flags == 0)
-			sbuf_printf(sb, "NONE");
-		else {
-			int first = 1;
-
-#define	ADD_FLAG(flag, name)	do {					\
-	if ((disk->d_flags & (flag)) != 0) {				\
-		if (!first)						\
-			sbuf_printf(sb, ", ");				\
-		else							\
-			first = 0;					\
-		sbuf_printf(sb, name);					\
-	}								\
-} while (0)
-			ADD_FLAG(G_RAID_DISK_FLAG_DIRTY, "DIRTY");
-			ADD_FLAG(G_RAID_DISK_FLAG_INACTIVE, "INACTIVE");
-			ADD_FLAG(G_RAID_DISK_FLAG_SYNCHRONIZING,
-			    "SYNCHRONIZING");
-			ADD_FLAG(G_RAID_DISK_FLAG_FORCE_SYNC, "FORCE_SYNC");
-#undef	ADD_FLAG
-		}
-		sbuf_printf(sb, "</Flags>\n");
-		sbuf_printf(sb, "%s<State>%s</State>\n", indent,
+		sbuf_printf(sb, "%s<State>%s", indent,
 		    g_raid_disk_state2str(disk->d_state));
+		if (!LIST_EMPTY(&disk->d_subdisks)) {
+			sbuf_printf(sb, " (");
+			LIST_FOREACH(sd, &disk->d_subdisks, sd_next) {
+				sbuf_printf(sb, "%s",
+				    g_raid_subdisk_state2str(sd->sd_state));
+				if (LIST_NEXT(sd, sd_next))
+					sbuf_printf(sb, ", ");
+			}
+			sbuf_printf(sb, ")");
+		}
+		sbuf_printf(sb, "</State>\n");
 		sx_xunlock(&sc->sc_lock);
 		g_topology_lock();
 	} else {

Modified: projects/graid/head/sys/geom/raid/g_raid.h
==============================================================================
--- projects/graid/head/sys/geom/raid/g_raid.h	Thu Jan 13 18:53:30 2011	(r217372)
+++ projects/graid/head/sys/geom/raid/g_raid.h	Thu Jan 13 19:25:15 2011	(r217373)
@@ -42,15 +42,6 @@
 struct g_raid_md_object;
 struct g_raid_tr_object;
 
-#define	G_RAID_DISK_FLAG_DIRTY		0x0000000000000001ULL
-#define	G_RAID_DISK_FLAG_SYNCHRONIZING	0x0000000000000002ULL
-#define	G_RAID_DISK_FLAG_FORCE_SYNC		0x0000000000000004ULL
-#define	G_RAID_DISK_FLAG_INACTIVE		0x0000000000000008ULL
-#define	G_RAID_DISK_FLAG_MASK		(G_RAID_DISK_FLAG_DIRTY |	\
-					 G_RAID_DISK_FLAG_SYNCHRONIZING | \
-					 G_RAID_DISK_FLAG_FORCE_SYNC | \
-					 G_RAID_DISK_FLAG_INACTIVE)
-
 #define	G_RAID_DEVICE_FLAG_NOAUTOSYNC	0x0000000000000001ULL
 #define	G_RAID_DEVICE_FLAG_NOFAILSYNC	0x0000000000000002ULL
 #define	G_RAID_DEVICE_FLAG_MASK	(G_RAID_DEVICE_FLAG_NOAUTOSYNC | \


More information about the svn-src-projects mailing list