diff options
author | sanjeevbagewadi <[email protected]> | 2017-08-11 04:23:40 +0530 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2017-08-10 15:53:40 -0700 |
commit | 21df134f4cb1c1e05eb89992b71573843df62b27 (patch) | |
tree | 8c70a1698d6fadd4f0b266635f4d20e798e7d90e | |
parent | b58237e769a4fa57ab8846b61ce59e5c73035b26 (diff) |
zio_dva_throttle_done() should allow zinjected ZIO
If fault injection is enabled, the ZIO_FLAG_IO_RETRY could be set by
zio_handle_device_injection() to generate the FMA events and update
stats. Hence, ignore the flag and process such zios.
A better fix would be to add another flag in the zio_t to indicate that
the zio is failed because of a zinject rule. However, considering the
fact that we do this in debug bits, we could do with the crude check
using the global flag zio_injection_enabled which is set to 1 when
zinject records are added.
Reviewed-by: Brian Behlendorf <[email protected]>
Signed-off-by: Sanjeev Bagewadi <[email protected]>
Closes #6383
Closes #6384
-rw-r--r-- | module/zfs/zio.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/module/zfs/zio.c b/module/zfs/zio.c index 82e801e83..1d69d8d8d 100644 --- a/module/zfs/zio.c +++ b/module/zfs/zio.c @@ -3661,7 +3661,8 @@ zio_dva_throttle_done(zio_t *zio) ASSERT3U(zio->io_child_type, ==, ZIO_CHILD_VDEV); ASSERT(vd != NULL); ASSERT3P(vd, ==, vd->vdev_top); - ASSERT(!(zio->io_flags & (ZIO_FLAG_IO_REPAIR | ZIO_FLAG_IO_RETRY))); + ASSERT(zio_injection_enabled || !(zio->io_flags & ZIO_FLAG_IO_RETRY)); + ASSERT(!(zio->io_flags & ZIO_FLAG_IO_REPAIR)); ASSERT(zio->io_flags & ZIO_FLAG_IO_ALLOCATING); ASSERT(!(lio->io_flags & ZIO_FLAG_IO_REWRITE)); ASSERT(!(lio->io_orig_flags & ZIO_FLAG_NODATA)); |