Print this page
3954 metaslabs continue to load even after hitting zfs_mg_alloc_failure limit
4080 zpool clear fails to clear pool
4081 need zfs_mg_noalloc_threshold
Reviewed by: Adam Leventhal <ahl@delphix.com>
Reviewed by: Matthew Ahrens <mahrens@delphix.com>

@@ -22,11 +22,11 @@
  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
 
 /*
- * Copyright (c) 2012 by Delphix. All rights reserved.
+ * Copyright (c) 2013 by Delphix. All rights reserved.
  */
 
 #ifndef _SYS_METASLAB_IMPL_H
 #define _SYS_METASLAB_IMPL_H
 

@@ -43,10 +43,11 @@
 struct metaslab_class {
         spa_t                   *mc_spa;
         metaslab_group_t        *mc_rotor;
         space_map_ops_t         *mc_ops;
         uint64_t                mc_aliquot;
+        uint64_t                mc_alloc_groups; /* # of allocatable groups */
         uint64_t                mc_alloc;       /* total allocated space */
         uint64_t                mc_deferred;    /* total deferred frees */
         uint64_t                mc_space;       /* total space (alloc + free) */
         uint64_t                mc_dspace;      /* total deflated space */
 };

@@ -55,10 +56,12 @@
         kmutex_t                mg_lock;
         avl_tree_t              mg_metaslab_tree;
         uint64_t                mg_aliquot;
         uint64_t                mg_bonus_area;
         uint64_t                mg_alloc_failures;
+        boolean_t               mg_allocatable;         /* can we allocate? */
+        uint64_t                mg_free_capacity;       /* percentage free */
         int64_t                 mg_bias;
         int64_t                 mg_activation_count;
         metaslab_class_t        *mg_class;
         vdev_t                  *mg_vd;
         metaslab_group_t        *mg_prev;