svn commit: r289536 - head/cddl/contrib/opensolaris/cmd/zpool

Alexander Motin mav at FreeBSD.org
Sun Oct 18 19:05:57 UTC 2015


Author: mav
Date: Sun Oct 18 19:05:56 2015
New Revision: 289536
URL: https://svnweb.freebsd.org/changeset/base/289536

Log:
  MFV r289535: 5767 fix several problems with zfs test suite
  
  Reviewed by: Matthew Ahrens <mahrens at delphix.com>
  Reviewed by: Christopher Siden <christopher.siden at delphix.com>
  Approved by: Gordon Ross <gwr at nexenta.com>
  Author: John Wren Kennedy <john.kennedy at delphix.com>
  
  illumos/illumos-gate at 52244c0958bdf281ca42932b449f644b4decfdc2
  
  In fact, only unrelated part of that commit is applicable:
  8. zpool list -v doesn't print spares
  It also doesn't correctly identify log devices.

Modified:
  head/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c
Directory Properties:
  head/cddl/contrib/opensolaris/   (props changed)

Modified: head/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c
==============================================================================
--- head/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c	Sun Oct 18 18:56:48 2015	(r289535)
+++ head/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c	Sun Oct 18 19:05:56 2015	(r289536)
@@ -2940,6 +2940,9 @@ print_list_stats(zpool_handle_t *zhp, co
 	uint_t c, children;
 	char *vname;
 	boolean_t scripted = cb->cb_scripted;
+	uint64_t islog = B_FALSE;
+	boolean_t haslog = B_FALSE;
+	char *dashes = "%-*s      -      -      -         -      -      -\n";
 
 	verify(nvlist_lookup_uint64_array(nv, ZPOOL_CONFIG_VDEV_STATS,
 	    (uint64_t **)&vs, &c) == 0);
@@ -2990,24 +2993,47 @@ print_list_stats(zpool_handle_t *zhp, co
 		    ZPOOL_CONFIG_IS_HOLE, &ishole) == 0 && ishole)
 			continue;
 
+		if (nvlist_lookup_uint64(child[c],
+		    ZPOOL_CONFIG_IS_LOG, &islog) == 0 && islog) {
+			haslog = B_TRUE;
+			continue;
+		}
+
 		vname = zpool_vdev_name(g_zfs, zhp, child[c], B_FALSE);
 		print_list_stats(zhp, vname, child[c], cb, depth + 2);
 		free(vname);
 	}
 
-	/*
-	 * Include level 2 ARC devices in iostat output
-	 */
+	if (haslog == B_TRUE) {
+		/* LINTED E_SEC_PRINTF_VAR_FMT */
+		(void) printf(dashes, cb->cb_namewidth, "log");
+		for (c = 0; c < children; c++) {
+			if (nvlist_lookup_uint64(child[c], ZPOOL_CONFIG_IS_LOG,
+			    &islog) != 0 || !islog)
+				continue;
+			vname = zpool_vdev_name(g_zfs, zhp, child[c], B_FALSE);
+			print_list_stats(zhp, vname, child[c], cb, depth + 2);
+			free(vname);
+		}
+	}
+
 	if (nvlist_lookup_nvlist_array(nv, ZPOOL_CONFIG_L2CACHE,
-	    &child, &children) != 0)
-		return;
+	    &child, &children) == 0 && children > 0) {
+		/* LINTED E_SEC_PRINTF_VAR_FMT */
+		(void) printf(dashes, cb->cb_namewidth, "cache");
+		for (c = 0; c < children; c++) {
+			vname = zpool_vdev_name(g_zfs, zhp, child[c], B_FALSE);
+			print_list_stats(zhp, vname, child[c], cb, depth + 2);
+			free(vname);
+		}
+	}
 
-	if (children > 0) {
-		(void) printf("%-*s      -      -      -      -      -      "
-		    "-\n", cb->cb_namewidth, "cache");
+	if (nvlist_lookup_nvlist_array(nv, ZPOOL_CONFIG_SPARES, &child,
+	    &children) == 0 && children > 0) {
+		/* LINTED E_SEC_PRINTF_VAR_FMT */
+		(void) printf(dashes, cb->cb_namewidth, "spare");
 		for (c = 0; c < children; c++) {
-			vname = zpool_vdev_name(g_zfs, zhp, child[c],
-			    B_FALSE);
+			vname = zpool_vdev_name(g_zfs, zhp, child[c], B_FALSE);
 			print_list_stats(zhp, vname, child[c], cb, depth + 2);
 			free(vname);
 		}


More information about the svn-src-head mailing list