@@ -368,6 +368,17 @@ static metaslab_stats_t metaslab_stats = {
368
368
#define METASLABSTAT_BUMP (stat ) \
369
369
atomic_inc_64(&metaslab_stats.stat.value.ui64);
370
370
371
+ static inline char *
372
+ zfs_rt_name (metaslab_group_t * mg , metaslab_t * ms ,
373
+ const char * name )
374
+ {
375
+ return (kmem_asprintf ("{spa=%s vdev_guid=%llu ms_id=%llu %s}" ,
376
+ mg -> mg_vd -> vdev_spa -> spa_name ,
377
+ (u_longlong_t )mg -> mg_vd -> vdev_guid ,
378
+ (u_longlong_t )ms -> ms_id ,
379
+ name ));
380
+ }
381
+
371
382
372
383
static kstat_t * metaslab_ksp ;
373
384
@@ -2753,30 +2764,53 @@ metaslab_init(metaslab_group_t *mg, uint64_t id, uint64_t object,
2753
2764
zfs_range_seg_type_t type =
2754
2765
metaslab_calculate_range_tree_type (vd , ms , & start , & shift );
2755
2766
2756
- ms -> ms_allocatable = zfs_range_tree_create (NULL , type , NULL , start ,
2757
- shift );
2767
+ ms -> ms_allocatable = zfs_range_tree_create_flags (
2768
+ NULL , type , NULL , start , shift ,
2769
+ ZFS_RANGE_TREE_F_UC_FREE_SPACE | ZFS_RANGE_TREE_F_DYN_NAME ,
2770
+ zfs_rt_name (mg , ms , "ms_allocatable" ));
2758
2771
for (int t = 0 ; t < TXG_SIZE ; t ++ ) {
2759
- ms -> ms_allocating [t ] = zfs_range_tree_create (NULL , type ,
2760
- NULL , start , shift );
2761
- }
2762
- ms -> ms_freeing = zfs_range_tree_create (NULL , type , NULL , start , shift );
2763
- ms -> ms_freed = zfs_range_tree_create (NULL , type , NULL , start , shift );
2772
+ ms -> ms_allocating [t ] = zfs_range_tree_create_flags (
2773
+ NULL , type , NULL , start , shift ,
2774
+ ZFS_RANGE_TREE_F_UC_ALLOCATED_SPACE |
2775
+ ZFS_RANGE_TREE_F_DYN_NAME ,
2776
+ zfs_rt_name (mg , ms , "ms_allocating" ));
2777
+ }
2778
+ ms -> ms_freeing = zfs_range_tree_create_flags (
2779
+ NULL , type , NULL , start , shift ,
2780
+ ZFS_RANGE_TREE_F_UC_FREE_SPACE | ZFS_RANGE_TREE_F_DYN_NAME ,
2781
+ zfs_rt_name (mg , ms , "ms_freeing" ));
2782
+ ms -> ms_freed = zfs_range_tree_create_flags (
2783
+ NULL , type , NULL , start , shift ,
2784
+ ZFS_RANGE_TREE_F_UC_FREE_SPACE | ZFS_RANGE_TREE_F_DYN_NAME ,
2785
+ zfs_rt_name (mg , ms , "ms_freed" ));
2764
2786
for (int t = 0 ; t < TXG_DEFER_SIZE ; t ++ ) {
2765
- ms -> ms_defer [t ] = zfs_range_tree_create (NULL , type , NULL ,
2766
- start , shift );
2767
- }
2768
- ms -> ms_checkpointing =
2769
- zfs_range_tree_create (NULL , type , NULL , start , shift );
2770
- ms -> ms_unflushed_allocs =
2771
- zfs_range_tree_create (NULL , type , NULL , start , shift );
2787
+ ms -> ms_defer [t ] = zfs_range_tree_create_flags (
2788
+ NULL , type , NULL , start , shift ,
2789
+ ZFS_RANGE_TREE_F_UC_FREE_SPACE |
2790
+ ZFS_RANGE_TREE_F_DYN_NAME ,
2791
+ zfs_rt_name (mg , ms , "ms_defer" ));
2792
+ }
2793
+ ms -> ms_checkpointing = zfs_range_tree_create_flags (
2794
+ NULL , type , NULL , start , shift ,
2795
+ ZFS_RANGE_TREE_F_UC_FREE_SPACE | ZFS_RANGE_TREE_F_DYN_NAME ,
2796
+ zfs_rt_name (mg , ms , "ms_checkpointing" ));
2797
+ ms -> ms_unflushed_allocs = zfs_range_tree_create_flags (
2798
+ NULL , type , NULL , start , shift ,
2799
+ ZFS_RANGE_TREE_F_UC_ALLOCATED_SPACE | ZFS_RANGE_TREE_F_DYN_NAME ,
2800
+ zfs_rt_name (mg , ms , "ms_unflushed_allocs" ));
2772
2801
2773
2802
metaslab_rt_arg_t * mrap = kmem_zalloc (sizeof (* mrap ), KM_SLEEP );
2774
2803
mrap -> mra_bt = & ms -> ms_unflushed_frees_by_size ;
2775
2804
mrap -> mra_floor_shift = metaslab_by_size_min_shift ;
2776
- ms -> ms_unflushed_frees = zfs_range_tree_create (& metaslab_rt_ops ,
2777
- type , mrap , start , shift );
2805
+ ms -> ms_unflushed_frees = zfs_range_tree_create_flags (
2806
+ & metaslab_rt_ops , type , mrap , start , shift ,
2807
+ ZFS_RANGE_TREE_F_UC_FREE_SPACE | ZFS_RANGE_TREE_F_DYN_NAME ,
2808
+ zfs_rt_name (mg , ms , "ms_unflushed_frees" ));
2778
2809
2779
- ms -> ms_trim = zfs_range_tree_create (NULL , type , NULL , start , shift );
2810
+ ms -> ms_trim = zfs_range_tree_create_flags (
2811
+ NULL , type , NULL , start , shift ,
2812
+ ZFS_RANGE_TREE_F_UC_FREE_SPACE | ZFS_RANGE_TREE_F_DYN_NAME ,
2813
+ zfs_rt_name (mg , ms , "ms_trim" ));
2780
2814
2781
2815
metaslab_group_add (mg , ms );
2782
2816
metaslab_set_fragmentation (ms , B_FALSE );
@@ -3750,7 +3784,10 @@ metaslab_condense(metaslab_t *msp, dmu_tx_t *tx)
3750
3784
type = metaslab_calculate_range_tree_type (msp -> ms_group -> mg_vd , msp ,
3751
3785
& start , & shift );
3752
3786
3753
- condense_tree = zfs_range_tree_create (NULL , type , NULL , start , shift );
3787
+ condense_tree = zfs_range_tree_create_flags (
3788
+ NULL , type , NULL , start , shift ,
3789
+ ZFS_RANGE_TREE_F_UC_FREE_SPACE | ZFS_RANGE_TREE_F_DYN_NAME ,
3790
+ zfs_rt_name (msp -> ms_group , msp , "condense_tree" ));
3754
3791
3755
3792
for (int t = 0 ; t < TXG_DEFER_SIZE ; t ++ ) {
3756
3793
zfs_range_tree_walk (msp -> ms_defer [t ],
0 commit comments