]> git.proxmox.com Git - mirror_zfs.git/commitdiff
Illumos #4168, #4169, #4170
authorGeorge Wilson <george.wilson@delphix.com>
Fri, 4 Oct 2013 22:13:23 +0000 (14:13 -0800)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Tue, 5 Nov 2013 20:25:44 +0000 (12:25 -0800)
4168 ztest assertion failure in dbuf_undirty
4169 verbatim import causes zdb to segfault
4170 zhack leaves pool in ACTIVE state
Reviewed by: Adam Leventhal <ahl@delphix.com>
Reviewed by: Eric Schrock <eric.schrock@delphix.com>
Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Approved by: Dan McDonald <danmcd@nexenta.com>

References:
  https://www.illumos.org/issues/4168
  https://www.illumos.org/issues/4169
  https://www.illumos.org/issues/4170
  illumos/illumos-gate@7fdd916c474ea52896c671bbe7b56ba34a1ca132

Ported-by: Richard Yao <ryao@gentoo.org>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Issue #1775

module/zfs/metaslab.c

index f01a8893e2df4a32c069063adcd075f3bd29f1b3..f49a8adc68111d7dfa75e18820041b3a99aaf27b 100644 (file)
@@ -117,6 +117,11 @@ int metaslab_prefetch_limit = SPA_DVAS_PER_BP;
  */
 int metaslab_smo_bonus_pct = 150;
 
+/*
+ * Should we be willing to write data to degraded vdevs?
+ */
+boolean_t zfs_write_to_degraded = B_FALSE;
+
 /*
  * ==========================================================================
  * Metaslab classes
@@ -1725,10 +1730,13 @@ top:
 
                /*
                 * Avoid writing single-copy data to a failing vdev
+                * unless the user instructs us that it is okay.
                 */
                if ((vd->vdev_stat.vs_write_errors > 0 ||
                    vd->vdev_state < VDEV_STATE_HEALTHY) &&
-                   d == 0 && dshift == 3) {
+                   d == 0 && dshift == 3 &&
+                   !(zfs_write_to_degraded && vd->vdev_state ==
+                   VDEV_STATE_DEGRADED)) {
                        all_zero = B_FALSE;
                        goto next;
                }