diff options
author | Sara Hartse <[email protected]> | 2019-02-15 14:44:56 -0800 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2019-02-15 14:44:56 -0800 |
commit | f545b6ae00ef77df710ddace328d13e8c5c265bf (patch) | |
tree | 505fc6042940448f560840222195143f90f8af69 | |
parent | a28c1a58fef803a63fdfe0390ac529b7c4a18685 (diff) |
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 <[email protected]>
Reviewed-by: Brian Behlendorf <[email protected]>
Reviewed-by: George Melikov <[email protected]>
Signed-off-by: sara hartse <[email protected]>
Closes #8404
-rw-r--r-- | module/zfs/zio.c | 1 |
1 files changed, 1 insertions, 0 deletions
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 |