From f545b6ae00ef77df710ddace328d13e8c5c265bf Mon Sep 17 00:00:00 2001 From: Sara Hartse Date: Fri, 15 Feb 2019 14:44:56 -0800 Subject: [PATCH] Delay injection can cause indefinitely hung zios If we hit the (NSEC_TO_TICK(diff) == 0) condition in zio_delay_interrupt, zio_interrupt is never called and the zio does not progress. Reviewed by: Matt Ahrens Reviewed-by: Brian Behlendorf Reviewed-by: George Melikov Signed-off-by: sara hartse Closes #8404 --- module/zfs/zio.c | 1 + 1 file changed, 1 insertion(+) diff --git a/module/zfs/zio.c b/module/zfs/zio.c index 0dd63322f0c7..7bb3c08256a2 100644 --- a/module/zfs/zio.c +++ b/module/zfs/zio.c @@ -1834,6 +1834,7 @@ zio_delay_interrupt(zio_t *zio) if (NSEC_TO_TICK(diff) == 0) { /* Our delay is less than a jiffy - just spin */ zfs_sleep_until(zio->io_target_timestamp); + zio_interrupt(zio); } else { /* * Use taskq_dispatch_delay() in the place of