HomeFreeBSD

3246 ZFS I/O deadman thread

Description

3246 ZFS I/O deadman thread

Reviewed by: Matt Ahrens <matthew.ahrens@delphix.com>
Reviewed by: Eric Schrock <eric.schrock@delphix.com>
Reviewed by: Christopher Siden <chris.siden@delphix.com>
Approved by: Garrett D'Amore <garrett@damore.org>

NOTES: This patch has been reworked from the original in the
following ways to accomidate Linux ZFS implementation

*) Usage of the cyclic interface was replaced by the delayed taskq

interface.  This avoids the need to implement new compatibility
code and allows us to rely on the existing taskq implementation.

*) An extern for zfs_txg_synctime_ms was added to sys/dsl_pool.h

because declaring externs in source files as was done in the
original patch is just plain wrong.

*) Instead of panicing the system when the deadman triggers a

zevent describing the blocked vdev and the first pending I/O
is posted.  If the panic behavior is desired Linux provides
other generic methods to panic the system when threads are
observed to hang.

*) For reference, to delay zios by 30 seconds for testing you can

use zinject as follows: 'zinject -d <vdev> -D30 <pool>'

References:

illumos/illumos-gate@283b84606b6fc326692c03273de1774e8c122f9a
https://www.illumos.org/issues/3246

Ported-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #1396

Details

Provenance
George.Wilson <george.wilson@delphix.com>Authored on Apr 29 2013, 10:49 PM
Brian Behlendorf <behlendorf1@llnl.gov>Committed on May 2 2013, 12:05 AM
Parents
rG57f5a2008e2e: Fix txg_quiesce thread deadlock
Branches
Unknown
Tags
Unknown

Event Timeline

Brian Behlendorf <behlendorf1@llnl.gov> committed rGcc92e9d0c3e6: 3246 ZFS I/O deadman thread (authored by George.Wilson <george.wilson@delphix.com>).May 2 2013, 12:05 AM