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


   4  * The contents of this file are subject to the terms of the
   5  * Common Development and Distribution License (the "License").
   6  * You may not use this file except in compliance with the License.
   7  *
   8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9  * or http://www.opensolaris.org/os/licensing.
  10  * See the License for the specific language governing permissions
  11  * and limitations under the License.
  12  *
  13  * When distributing Covered Code, include this CDDL HEADER in each
  14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 /*
  22  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  23  * Use is subject to license terms.

  24  */
  25 
  26 #include <errno.h>
  27 #include <libgen.h>
  28 #include <libintl.h>
  29 #include <stdio.h>
  30 #include <stdlib.h>
  31 #include <strings.h>
  32 
  33 #include "zpool_util.h"
  34 
  35 /*
  36  * Utility function to guarantee malloc() success.
  37  */
  38 void *
  39 safe_malloc(size_t size)
  40 {
  41         void *data;
  42 
  43         if ((data = calloc(1, size)) == NULL) {


  66 uint_t
  67 num_logs(nvlist_t *nv)
  68 {
  69         uint_t nlogs = 0;
  70         uint_t c, children;
  71         nvlist_t **child;
  72 
  73         if (nvlist_lookup_nvlist_array(nv, ZPOOL_CONFIG_CHILDREN,
  74             &child, &children) != 0)
  75                 return (0);
  76 
  77         for (c = 0; c < children; c++) {
  78                 uint64_t is_log = B_FALSE;
  79 
  80                 (void) nvlist_lookup_uint64(child[c], ZPOOL_CONFIG_IS_LOG,
  81                     &is_log);
  82                 if (is_log)
  83                         nlogs++;
  84         }
  85         return (nlogs);

























  86 }


   4  * The contents of this file are subject to the terms of the
   5  * Common Development and Distribution License (the "License").
   6  * You may not use this file except in compliance with the License.
   7  *
   8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9  * or http://www.opensolaris.org/os/licensing.
  10  * See the License for the specific language governing permissions
  11  * and limitations under the License.
  12  *
  13  * When distributing Covered Code, include this CDDL HEADER in each
  14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 /*
  22  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  23  * Use is subject to license terms.
  24  * Copyright 2013 Nexenta Systems, Inc. All rights reserved.
  25  */
  26 
  27 #include <errno.h>
  28 #include <libgen.h>
  29 #include <libintl.h>
  30 #include <stdio.h>
  31 #include <stdlib.h>
  32 #include <strings.h>
  33 
  34 #include "zpool_util.h"
  35 
  36 /*
  37  * Utility function to guarantee malloc() success.
  38  */
  39 void *
  40 safe_malloc(size_t size)
  41 {
  42         void *data;
  43 
  44         if ((data = calloc(1, size)) == NULL) {


  67 uint_t
  68 num_logs(nvlist_t *nv)
  69 {
  70         uint_t nlogs = 0;
  71         uint_t c, children;
  72         nvlist_t **child;
  73 
  74         if (nvlist_lookup_nvlist_array(nv, ZPOOL_CONFIG_CHILDREN,
  75             &child, &children) != 0)
  76                 return (0);
  77 
  78         for (c = 0; c < children; c++) {
  79                 uint64_t is_log = B_FALSE;
  80 
  81                 (void) nvlist_lookup_uint64(child[c], ZPOOL_CONFIG_IS_LOG,
  82                     &is_log);
  83                 if (is_log)
  84                         nlogs++;
  85         }
  86         return (nlogs);
  87 }
  88 
  89 /*
  90  * Return the number of special vdevs in supplied nvlist
  91  */
  92 uint_t
  93 num_special(nvlist_t *nv)
  94 {
  95         uint_t nspecial = 0;
  96         uint_t c, children;
  97         nvlist_t **child;
  98 
  99         if (nvlist_lookup_nvlist_array(nv, ZPOOL_CONFIG_CHILDREN,
 100             &child, &children) != 0)
 101                 return (0);
 102 
 103         for (c = 0; c < children; c++) {
 104                 uint64_t is_special = B_FALSE;
 105 
 106                 (void) nvlist_lookup_uint64(child[c], ZPOOL_CONFIG_IS_SPECIAL,
 107                     &is_special);
 108                 if (is_special)
 109                         nspecial++;
 110         }
 111         return (nspecial);
 112 }