Print this page
re #12585 rb4049 ZFS++ work port - refactoring to improve separation of open/closed code, bug fixes, performance improvements - open code
Bug 11205: add missing libzfs_closed_stubs.c to fix opensource-only build.
ZFS plus work: special vdevs, cos, cos/vdev properties
        
@@ -19,10 +19,11 @@
  * CDDL HEADER END
  */
 /*
  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
+ * Copyright 2013 Nexenta Systems, Inc. All rights reserved.
  */
 
 #include <errno.h>
 #include <libgen.h>
 #include <libintl.h>
@@ -81,6 +82,31 @@
                     &is_log);
                 if (is_log)
                         nlogs++;
         }
         return (nlogs);
+}
+
+/*
+ * Return the number of special vdevs in supplied nvlist
+ */
+uint_t
+num_special(nvlist_t *nv)
+{
+        uint_t nspecial = 0;
+        uint_t c, children;
+        nvlist_t **child;
+
+        if (nvlist_lookup_nvlist_array(nv, ZPOOL_CONFIG_CHILDREN,
+            &child, &children) != 0)
+                return (0);
+
+        for (c = 0; c < children; c++) {
+                uint64_t is_special = B_FALSE;
+
+                (void) nvlist_lookup_uint64(child[c], ZPOOL_CONFIG_IS_SPECIAL,
+                    &is_special);
+                if (is_special)
+                        nspecial++;
+        }
+        return (nspecial);
 }