From: Sara Hartse Date: Fri, 15 Feb 2019 22:44:56 +0000 (-0800) Subject: Delay injection can cause indefinitely hung zios X-Git-Tag: zfs-0.8.0-rc4~116 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f545b6ae00ef77df710ddace328d13e8c5c265bf;p=zfs 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 --- diff --git a/module/zfs/zio.c b/module/zfs/zio.c index 0dd63322f..7bb3c0825 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