@@ -152,20 +152,26 @@ typedef struct zio_stats {
152
152
kstat_named_t ziostat_alloc_class_fallbacks ;
153
153
kstat_named_t ziostat_gang_writes ;
154
154
kstat_named_t ziostat_gang_multilevel ;
155
+ kstat_named_t ziostat_zio_total ;
156
+ kstat_named_t ziostat_zio_bp_total ;
155
157
} zio_stats_t ;
156
158
157
159
static zio_stats_t zio_stats = {
158
160
{ "total_allocations" , KSTAT_DATA_UINT64 },
159
161
{ "alloc_class_fallbacks" , KSTAT_DATA_UINT64 },
160
162
{ "gang_writes" , KSTAT_DATA_UINT64 },
161
163
{ "gang_multilevel" , KSTAT_DATA_UINT64 },
164
+ { "zio_total" , KSTAT_DATA_UINT64 },
165
+ { "zio_bp_total" , KSTAT_DATA_UINT64 },
162
166
};
163
167
164
168
struct {
165
169
wmsum_t ziostat_total_allocations ;
166
170
wmsum_t ziostat_alloc_class_fallbacks ;
167
171
wmsum_t ziostat_gang_writes ;
168
172
wmsum_t ziostat_gang_multilevel ;
173
+ wmsum_t ziostat_zio_total ;
174
+ wmsum_t ziostat_zio_bp_total ;
169
175
} ziostat_sums ;
170
176
171
177
#define ZIOSTAT_BUMP (stat ) wmsum_add(&ziostat_sums.stat, 1);
@@ -191,6 +197,10 @@ zio_kstats_update(kstat_t *ksp, int rw)
191
197
wmsum_value (& ziostat_sums .ziostat_gang_writes );
192
198
zs -> ziostat_gang_multilevel .value .ui64 =
193
199
wmsum_value (& ziostat_sums .ziostat_gang_multilevel );
200
+ zs -> ziostat_zio_total .value .ui64 =
201
+ wmsum_value (& ziostat_sums .ziostat_zio_total );
202
+ zs -> ziostat_zio_bp_total .value .ui64 =
203
+ wmsum_value (& ziostat_sums .ziostat_zio_bp_total );
194
204
return (0 );
195
205
}
196
206
@@ -210,6 +220,8 @@ zio_init(void)
210
220
wmsum_init (& ziostat_sums .ziostat_alloc_class_fallbacks , 0 );
211
221
wmsum_init (& ziostat_sums .ziostat_gang_writes , 0 );
212
222
wmsum_init (& ziostat_sums .ziostat_gang_multilevel , 0 );
223
+ wmsum_init (& ziostat_sums .ziostat_zio_total , 0 );
224
+ wmsum_init (& ziostat_sums .ziostat_zio_bp_total , 0 );
213
225
zio_ksp = kstat_create ("zfs" , 0 , "zio_stats" ,
214
226
"misc" , KSTAT_TYPE_NAMED , sizeof (zio_stats ) /
215
227
sizeof (kstat_named_t ), KSTAT_FLAG_VIRTUAL );
@@ -355,6 +367,8 @@ zio_fini(void)
355
367
wmsum_fini (& ziostat_sums .ziostat_alloc_class_fallbacks );
356
368
wmsum_fini (& ziostat_sums .ziostat_gang_writes );
357
369
wmsum_fini (& ziostat_sums .ziostat_gang_multilevel );
370
+ wmsum_fini (& ziostat_sums .ziostat_zio_total );
371
+ wmsum_fini (& ziostat_sums .ziostat_zio_bp_total );
358
372
359
373
kmem_cache_destroy (zio_bp_cache );
360
374
kmem_cache_destroy (zio_link_cache );
@@ -977,6 +991,7 @@ zio_create(zio_t *pio, spa_t *spa, uint64_t txg, const blkptr_t *bp,
977
991
IMPLY (lsize != psize , (flags & ZIO_FLAG_RAW_COMPRESS ) != 0 );
978
992
979
993
zio = kmem_cache_alloc (zio_cache , KM_SLEEP );
994
+ ZIOSTAT_BUMP (ziostat_zio_total );
980
995
memset (zio , 0 , sizeof (zio_t ));
981
996
982
997
mutex_init (& zio -> io_lock , NULL , MUTEX_NOLOCKDEP , NULL );
@@ -1002,12 +1017,14 @@ zio_create(zio_t *pio, spa_t *spa, uint64_t txg, const blkptr_t *bp,
1002
1017
zio -> io_child_type == ZIO_CHILD_DDT ) {
1003
1018
/* so caller can free */
1004
1019
zio -> io_bp = zio -> io_bp_copy = zio_dup_bp (bp );
1020
+ ZIOSTAT_BUMP (ziostat_zio_bp_total );
1005
1021
} else {
1006
1022
zio -> io_bp = (blkptr_t * )bp ;
1007
1023
}
1008
1024
if (type == ZIO_TYPE_WRITE &&
1009
1025
zio -> io_child_type != ZIO_CHILD_VDEV ) {
1010
1026
zio -> io_bp_orig = zio_dup_bp (bp );
1027
+ ZIOSTAT_BUMP (ziostat_zio_bp_total );
1011
1028
}
1012
1029
if (zio -> io_child_type == ZIO_CHILD_LOGICAL )
1013
1030
zio -> io_logical = zio ;
@@ -1087,6 +1104,7 @@ zio_force_bp(zio_t *zio, const blkptr_t *bp)
1087
1104
ASSERT3U (zio -> io_stage , = = , ZIO_STAGE_DONE );
1088
1105
ASSERT0P (zio -> io_bp_copy );
1089
1106
zio -> io_bp = zio -> io_bp_copy = zio_dup_bp (bp );
1107
+ ZIOSTAT_BUMP (ziostat_zio_bp_total );
1090
1108
}
1091
1109
1092
1110
/*
@@ -5354,6 +5372,7 @@ zio_ready(zio_t *zio)
5354
5372
if (bp != NULL && bp != zio -> io_bp_copy ) {
5355
5373
if (zio -> io_bp_copy == NULL )
5356
5374
zio -> io_bp_copy = zio_dup_bp (bp );
5375
+ /* Not bumping ziostat_zio_bp_total for debug. */
5357
5376
else
5358
5377
* zio -> io_bp_copy = * bp ;
5359
5378
}
0 commit comments