]> git.proxmox.com Git - mirror_zfs.git/commitdiff
Delay injection can cause indefinitely hung zios
authorSara Hartse <sara.hartse@gmail.com>
Fri, 15 Feb 2019 22:44:56 +0000 (14:44 -0800)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Fri, 15 Feb 2019 22:44:56 +0000 (14:44 -0800)
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 <mahrens@delphix.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: George Melikov <mail@gmelikov.ru>
Signed-off-by: sara hartse <sara.hartse@delphix.com>
Closes #8404

module/zfs/zio.c

index 0dd63322f0c7b947b9239a5f3e658237e1f0c9d2..7bb3c08256a2730ea776ab56ddb6b56fba789efd 100644 (file)
@@ -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