summaryrefslogtreecommitdiffstats
path: root/module/zfs/vdev.c
diff options
context:
space:
mode:
Diffstat (limited to 'module/zfs/vdev.c')
-rw-r--r--module/zfs/vdev.c27
1 files changed, 22 insertions, 5 deletions
diff --git a/module/zfs/vdev.c b/module/zfs/vdev.c
index 137390173..607be3ce3 100644
--- a/module/zfs/vdev.c
+++ b/module/zfs/vdev.c
@@ -2784,21 +2784,30 @@ vdev_get_child_stat_ex(vdev_t *cvd, vdev_stat_ex_t *vsx, vdev_stat_ex_t *cvsx)
{
int t, b;
for (t = 0; t < ZIO_TYPES; t++) {
- for (b = 0; b < VDEV_HISTO_BUCKETS; b++) {
+ for (b = 0; b < ARRAY_SIZE(vsx->vsx_disk_histo[0]); b++)
vsx->vsx_disk_histo[t][b] += cvsx->vsx_disk_histo[t][b];
+
+ for (b = 0; b < ARRAY_SIZE(vsx->vsx_total_histo[0]); b++) {
vsx->vsx_total_histo[t][b] +=
cvsx->vsx_total_histo[t][b];
}
}
for (t = 0; t < ZIO_PRIORITY_NUM_QUEUEABLE; t++) {
- for (b = 0; b < VDEV_HISTO_BUCKETS; b++) {
+ for (b = 0; b < ARRAY_SIZE(vsx->vsx_queue_histo[0]); b++) {
vsx->vsx_queue_histo[t][b] +=
cvsx->vsx_queue_histo[t][b];
}
vsx->vsx_active_queue[t] += cvsx->vsx_active_queue[t];
vsx->vsx_pend_queue[t] += cvsx->vsx_pend_queue[t];
+
+ for (b = 0; b < ARRAY_SIZE(vsx->vsx_ind_histo[0]); b++)
+ vsx->vsx_ind_histo[t][b] += cvsx->vsx_ind_histo[t][b];
+
+ for (b = 0; b < ARRAY_SIZE(vsx->vsx_agg_histo[0]); b++)
+ vsx->vsx_agg_histo[t][b] += cvsx->vsx_agg_histo[t][b];
}
+
}
/*
@@ -2974,13 +2983,21 @@ vdev_stat_update(zio_t *zio, uint64_t psize)
vs->vs_ops[type]++;
vs->vs_bytes[type] += psize;
+ if (flags & ZIO_FLAG_DELEGATED) {
+ vsx->vsx_agg_histo[zio->io_priority]
+ [RQ_HISTO(zio->io_size)]++;
+ } else {
+ vsx->vsx_ind_histo[zio->io_priority]
+ [RQ_HISTO(zio->io_size)]++;
+ }
+
if (zio->io_delta && zio->io_delay) {
vsx->vsx_queue_histo[zio->io_priority]
- [HISTO(zio->io_delta - zio->io_delay)]++;
+ [L_HISTO(zio->io_delta - zio->io_delay)]++;
vsx->vsx_disk_histo[type]
- [HISTO(zio->io_delay)]++;
+ [L_HISTO(zio->io_delay)]++;
vsx->vsx_total_histo[type]
- [HISTO(zio->io_delta)]++;
+ [L_HISTO(zio->io_delta)]++;
}
}