diff options
author | Tony Hutter <[email protected]> | 2017-08-02 09:08:38 -0700 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2017-08-02 09:08:38 -0700 |
commit | 6710381680b0f551c37627e3a5a4886ccf99983f (patch) | |
tree | adc1afe373260692d1dc147ec229def4c65f9105 /module/zfs/zio.c | |
parent | af0f842883ceb7e88b8f4d1fe6ad80b6ad951827 (diff) |
Only record zio->io_delay on reads and writes
While investigating https://github.com/zfsonlinux/zfs/issues/6425 I
noticed that ioctl ZIOs were not setting zio->io_delay correctly. They
would set the start time in zio_vdev_io_start(), but never set the end
time in zio_vdev_io_done(), since ioctls skip it and go straight to
zio_done(). This was causing spurious "delayed IO" events to appear,
which would eventually get rate-limited and displayed as
"Missed events" messages in zed.
To get around the problem, this patch only sets zio->io_delay for read
and write ZIOs, since that's all we care about anyway.
Reviewed-by: Giuseppe Di Natale <[email protected]>
Reviewed-by: George Melikov <[email protected]>
Reviewed-by: Brian Behlendorf <[email protected]>
Signed-off-by: Tony Hutter <[email protected]>
Closes #6425
Closes #6440
Diffstat (limited to 'module/zfs/zio.c')
-rw-r--r-- | module/zfs/zio.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/module/zfs/zio.c b/module/zfs/zio.c index acfc49eb5..82e801e83 100644 --- a/module/zfs/zio.c +++ b/module/zfs/zio.c @@ -3278,9 +3278,9 @@ zio_vdev_io_start(zio_t *zio) zio_interrupt(zio); return (ZIO_PIPELINE_STOP); } + zio->io_delay = gethrtime(); } - zio->io_delay = gethrtime(); vd->vdev_ops->vdev_op_io_start(zio); return (ZIO_PIPELINE_STOP); } |