summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsanjeevbagewadi <[email protected]>2017-08-11 04:23:40 +0530
committerBrian Behlendorf <[email protected]>2017-08-10 15:53:40 -0700
commit21df134f4cb1c1e05eb89992b71573843df62b27 (patch)
tree8c70a1698d6fadd4f0b266635f4d20e798e7d90e
parentb58237e769a4fa57ab8846b61ce59e5c73035b26 (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.c3
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));