]> git.proxmox.com Git - mirror_zfs.git/blobdiff - include/sys/metaslab_impl.h
OpenZFS 9102 - zfs should be able to initialize storage devices
[mirror_zfs.git] / include / sys / metaslab_impl.h
index aa1c82a0258e32905b8ebae40f4ce1e6dc6971ee..3e32eace6d6ad8e261730076e74fe005a74578f5 100644 (file)
@@ -68,7 +68,8 @@ typedef enum trace_alloc_type {
        TRACE_GROUP_FAILURE     = -5ULL,
        TRACE_ENOSPC            = -6ULL,
        TRACE_CONDENSING        = -7ULL,
-       TRACE_VDEV_ERROR        = -8ULL
+       TRACE_VDEV_ERROR        = -8ULL,
+       TRACE_INITIALIZING      = -9ULL
 } trace_alloc_type_t;
 
 #define        METASLAB_WEIGHT_PRIMARY         (1ULL << 63)
@@ -270,6 +271,11 @@ struct metaslab_group {
        uint64_t                mg_failed_allocations;
        uint64_t                mg_fragmentation;
        uint64_t                mg_histogram[RANGE_TREE_HISTOGRAM_SIZE];
+
+       int                     mg_ms_initializing;
+       boolean_t               mg_initialize_updating;
+       kmutex_t                mg_ms_initialize_lock;
+       kcondvar_t              mg_ms_initialize_cv;
 };
 
 /*
@@ -360,6 +366,8 @@ struct metaslab {
        boolean_t       ms_condense_wanted;
        uint64_t        ms_condense_checked_txg;
 
+       uint64_t        ms_initializing; /* leaves initializing this ms */
+
        /*
         * We must hold both ms_lock and ms_group->mg_lock in order to
         * modify ms_loaded.