@@ -370,6 +370,16 @@ static metaslab_stats_t metaslab_stats = {
370
370
#define METASLABSTAT_BUMP (stat ) \
371
371
atomic_inc_64(&metaslab_stats.stat.value.ui64);
372
372
373
+ char *
374
+ metaslab_rt_name (metaslab_group_t * mg , metaslab_t * ms , const char * name )
375
+ {
376
+ return (kmem_asprintf ("{spa=%s vdev_guid=%llu ms_id=%llu %s}" ,
377
+ spa_name (mg -> mg_vd -> vdev_spa ),
378
+ (u_longlong_t )mg -> mg_vd -> vdev_guid ,
379
+ (u_longlong_t )ms -> ms_id ,
380
+ name ));
381
+ }
382
+
373
383
374
384
static kstat_t * metaslab_ksp ;
375
385
@@ -2757,30 +2767,43 @@ metaslab_init(metaslab_group_t *mg, uint64_t id, uint64_t object,
2757
2767
zfs_range_seg_type_t type =
2758
2768
metaslab_calculate_range_tree_type (vd , ms , & start , & shift );
2759
2769
2760
- ms -> ms_allocatable = zfs_range_tree_create (NULL , type , NULL , start ,
2761
- shift );
2770
+ ms -> ms_allocatable = zfs_range_tree_create_flags (
2771
+ NULL , type , NULL , start , shift ,
2772
+ ZFS_RT_F_DYN_NAME , metaslab_rt_name (mg , ms , "ms_allocatable" ));
2762
2773
for (int t = 0 ; t < TXG_SIZE ; t ++ ) {
2763
- ms -> ms_allocating [t ] = zfs_range_tree_create (NULL , type ,
2764
- NULL , start , shift );
2765
- }
2766
- ms -> ms_freeing = zfs_range_tree_create (NULL , type , NULL , start , shift );
2767
- ms -> ms_freed = zfs_range_tree_create (NULL , type , NULL , start , shift );
2774
+ ms -> ms_allocating [t ] = zfs_range_tree_create_flags (
2775
+ NULL , type , NULL , start , shift ,
2776
+ ZFS_RT_F_DYN_NAME ,
2777
+ metaslab_rt_name (mg , ms , "ms_allocating" ));
2778
+ }
2779
+ ms -> ms_freeing = zfs_range_tree_create_flags (
2780
+ NULL , type , NULL , start , shift ,
2781
+ ZFS_RT_F_DYN_NAME , metaslab_rt_name (mg , ms , "ms_freeing" ));
2782
+ ms -> ms_freed = zfs_range_tree_create_flags (
2783
+ NULL , type , NULL , start , shift ,
2784
+ ZFS_RT_F_DYN_NAME , metaslab_rt_name (mg , ms , "ms_freed" ));
2768
2785
for (int t = 0 ; t < TXG_DEFER_SIZE ; t ++ ) {
2769
- ms -> ms_defer [t ] = zfs_range_tree_create (NULL , type , NULL ,
2770
- start , shift );
2786
+ ms -> ms_defer [t ] = zfs_range_tree_create_flags (
2787
+ NULL , type , NULL , start , shift ,
2788
+ ZFS_RT_F_DYN_NAME , metaslab_rt_name (mg , ms , "ms_defer" ));
2771
2789
}
2772
- ms -> ms_checkpointing =
2773
- zfs_range_tree_create (NULL , type , NULL , start , shift );
2774
- ms -> ms_unflushed_allocs =
2775
- zfs_range_tree_create (NULL , type , NULL , start , shift );
2790
+ ms -> ms_checkpointing = zfs_range_tree_create_flags (
2791
+ NULL , type , NULL , start , shift ,
2792
+ ZFS_RT_F_DYN_NAME , metaslab_rt_name (mg , ms , "ms_checkpointing" ));
2793
+ ms -> ms_unflushed_allocs = zfs_range_tree_create_flags (
2794
+ NULL , type , NULL , start , shift ,
2795
+ ZFS_RT_F_DYN_NAME , metaslab_rt_name (mg , ms , "ms_unflushed_allocs" ));
2776
2796
2777
2797
metaslab_rt_arg_t * mrap = kmem_zalloc (sizeof (* mrap ), KM_SLEEP );
2778
2798
mrap -> mra_bt = & ms -> ms_unflushed_frees_by_size ;
2779
2799
mrap -> mra_floor_shift = metaslab_by_size_min_shift ;
2780
- ms -> ms_unflushed_frees = zfs_range_tree_create (& metaslab_rt_ops ,
2781
- type , mrap , start , shift );
2800
+ ms -> ms_unflushed_frees = zfs_range_tree_create_flags (
2801
+ & metaslab_rt_ops , type , mrap , start , shift ,
2802
+ ZFS_RT_F_DYN_NAME , metaslab_rt_name (mg , ms , "ms_unflushed_frees" ));
2782
2803
2783
- ms -> ms_trim = zfs_range_tree_create (NULL , type , NULL , start , shift );
2804
+ ms -> ms_trim = zfs_range_tree_create_flags (
2805
+ NULL , type , NULL , start , shift ,
2806
+ ZFS_RT_F_DYN_NAME , metaslab_rt_name (mg , ms , "ms_trim" ));
2784
2807
2785
2808
metaslab_group_add (mg , ms );
2786
2809
metaslab_set_fragmentation (ms , B_FALSE );
@@ -3754,7 +3777,10 @@ metaslab_condense(metaslab_t *msp, dmu_tx_t *tx)
3754
3777
type = metaslab_calculate_range_tree_type (msp -> ms_group -> mg_vd , msp ,
3755
3778
& start , & shift );
3756
3779
3757
- condense_tree = zfs_range_tree_create (NULL , type , NULL , start , shift );
3780
+ condense_tree = zfs_range_tree_create_flags (
3781
+ NULL , type , NULL , start , shift ,
3782
+ ZFS_RT_F_DYN_NAME ,
3783
+ metaslab_rt_name (msp -> ms_group , msp , "condense_tree" ));
3758
3784
3759
3785
for (int t = 0 ; t < TXG_DEFER_SIZE ; t ++ ) {
3760
3786
zfs_range_tree_walk (msp -> ms_defer [t ],
@@ -3811,8 +3837,10 @@ metaslab_condense(metaslab_t *msp, dmu_tx_t *tx)
3811
3837
* followed by FREES (due to space_map_write() in metaslab_sync()) for
3812
3838
* sync pass 1.
3813
3839
*/
3814
- zfs_range_tree_t * tmp_tree = zfs_range_tree_create (NULL , type , NULL ,
3815
- start , shift );
3840
+ zfs_range_tree_t * tmp_tree = zfs_range_tree_create_flags (
3841
+ NULL , type , NULL , start , shift ,
3842
+ ZFS_RT_F_DYN_NAME ,
3843
+ metaslab_rt_name (msp -> ms_group , msp , "tmp_tree" ));
3816
3844
zfs_range_tree_add (tmp_tree , msp -> ms_start , msp -> ms_size );
3817
3845
space_map_write (sm , tmp_tree , SM_ALLOC , SM_NO_VDEVID , tx );
3818
3846
space_map_write (sm , msp -> ms_allocatable , SM_FREE , SM_NO_VDEVID , tx );
0 commit comments