summaryrefslogtreecommitdiffstats
path: root/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_fm.c
diff options
context:
space:
mode:
authormm <mm@FreeBSD.org>2010-09-27 09:42:31 +0000
committermm <mm@FreeBSD.org>2010-09-27 09:42:31 +0000
commit240333eaa7cd7f7a595350c52872044734528869 (patch)
treecd91e345f4a206c0d89bd52cbf33237f67e560a6 /sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_fm.c
parent06d7ad088338844d37a5a4328b1c4bb5de1a68a2 (diff)
downloadFreeBSD-src-240333eaa7cd7f7a595350c52872044734528869.zip
FreeBSD-src-240333eaa7cd7f7a595350c52872044734528869.tar.gz
Properly handle IO with B_FAILFAST
Retry IO once with ZIO_FLAG_TRYHARD before declaring a pool faulted OpenSolaris revision and Bug IDs: 9725:0bf7402e8022 6843014 ZFS B_FAILFAST handling is broken Approved by: delphij (mentor) Obtained from: OpenSolaris (Bug ID 6843014) MFC after: 3 weeks
Diffstat (limited to 'sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_fm.c')
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_fm.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_fm.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_fm.c
index cf2f90d..9d6cefb 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_fm.c
+++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_fm.c
@@ -134,6 +134,15 @@ zfs_ereport_post(const char *subclass, spa_t *spa, vdev_t *vd, zio_t *zio,
if (zio->io_flags & ZIO_FLAG_SPECULATIVE)
return;
+ /*
+ * If this I/O is not a retry I/O, don't post an ereport.
+ * Otherwise, we risk making bad diagnoses based on B_FAILFAST
+ * I/Os.
+ */
+ if (zio->io_error == EIO &&
+ !(zio->io_flags & ZIO_FLAG_IO_RETRY))
+ return;
+
if (vd != NULL) {
/*
* If the vdev has already been marked as failing due
OpenPOWER on IntegriCloud